SpringMVC 차단기 사용 예시
SpringMVC 의 프로세서 차단 기 는 Servlet 개발 의 필터 필터 필터 와 유사 하여 프로세서 에 대한 사전 처리 와 사후 처리 에 사용 된다.개발 자 는 특정한 기능 을 실현 하기 위해 일부 차단 기 를 스스로 정의 할 수 있다.
필터
4
차단 기 는 AOP 사상의 구체 적 인 응용 이다.
차단기 초기 체험
1.새로운 항목 을 만 들 고 웹 지원 을 추가 하 며 IDEA 에서 이 항목 에 의존 하 는 lib 패 키 지 를 가 져 옵 니 다.
2.웹.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
3.springmvc-servlet.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- , -->
<context:component-scan base-package="controller"/>
<mvc:annotation-driven/>
<!-- JSON -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
4.사용자 정의 차단 기 를 작성 합 니 다.(HandlerInterceptor 인터페이스 구현)
package interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
//
// true
// false
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("------------ ------------");
return true;
}
//
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("------------ ------------");
}
// dispatcherServlet , .
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("------------ ------------");
}
}
사실 preHandle 방법 을 다시 쓰 면 된다.5.springmvc-servlet.xml 파일 에 차단 기 를 설정 합 니 다.
<!-- -->
<mvc:interceptors>
<mvc:interceptor>
<!--/** -->
<!--/admin/* /admin/add , /admin/add/user -->
<!--/admin/** /admin/ -->
<mvc:mapping path="/**"/>
<!--bean -->
<bean class="interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
6.컨트롤 러 작성
package controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class InterceptorController {
@RequestMapping("/interceptor")
public String test(){
System.out.println("InterceptorController");
return "ok";
}
}
7.Tomcat 설정,테스트 진행초기 체험:사용자 정의 차단기 가 Handler Interceptor 인 터 페 이 스 를 실현 하고 preHandle 방법 을 다시 썼 습 니 다.preHandle 방법 에서 반환 값 은 차단 여 부 를 결정 합 니 다.반환 값 이 true 일 때 차단 하지 않 습 니 다.반대로 차단 하 다.
8.결과:
4.567917.반환 값 은 true 이 고 차단기 가 차단 하지 않 으 며 점프4.567917.반환 값 은 false 이 고 차단기 가 차단 되 며 뛰 지 않 습 니 다.
차단기 재 체험-로그 인 검증
사고의 방향 을 실현 하 다.
4.567917.로그 인 페이지 가 있 습 니 다.contrller 방문 페이지 를 써 야 합 니 다4.567917.로그 인 페이지 에 양식 을 제출 하 는 동작 이 있 습 니 다.controller 에서 처리 해 야 합 니 다.사용자 이름 비밀번호 가 정확 한 지 판단 합 니 다.올 바 르 면 session 에 사용자 정 보 를 기록 합 니 다.로그 인 성공 을 되 돌려 줍 니 다4.567917.사용자 의 요청 을 차단 하고 사용자 의 로그 인 여 부 를 판단 합 니 다.사용자 가 로그 인 했다 면.사용자 가 로그 인하 지 않 으 면 로그 인 페이지 로 이동 합 니 다.
로그 인 인터페이스
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<h1> </h1>
<hr>
<body>
<form action="${pageContext.request.contextPath}/user/login">
:<input type="text" name="username"> <br>
:<input type="password" name="pwd"> <br>
<input type="submit" value=" ">
</form>
</body>
</html>
controller 처리 요청
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/user")
public class UserController {
//
@RequestMapping("/jumplogin")
public String jumpLogin() throws Exception {
return "login";
}
//
@RequestMapping("/jumpSuccess")
public String jumpSuccess() throws Exception {
return "success";
}
//
@RequestMapping("/login")
public String login(HttpSession session, String username, String pwd) throws Exception {
// session
System.out.println(" ==="+username);
session.setAttribute("user", username);
return "success";
}
//
@RequestMapping("logout")
public String logout(HttpSession session) throws Exception {
// session
session.invalidate();
return "login";
}
}
로그 인 성공 페이지
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1> </h1>
<hr>
${user}
<a href="${pageContext.request.contextPath}/user/logout"> </a>
</body>
</html>
index 페이지
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1> </h1>
<hr>
<%-- --%>
<a href="${pageContext.request.contextPath}/user/jumplogin"> </a>
<a href="${pageContext.request.contextPath}/user/jumpSuccess"> </a>
</body>
</html>
index 페이지
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1> </h1>
<hr>
<%-- --%>
<a href="${pageContext.request.contextPath}/user/jumplogin"> </a>
<a href="${pageContext.request.contextPath}/user/jumpSuccess"> </a>
</body>
</html>
작성 컨트롤 러
package interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getRequestURI().contains("login")) {
return true;
}
HttpSession session = request.getSession();
// ,
if(session.getAttribute("user") != null) {
return true;
}
// , ,
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
return false;
}
}
springmvc-servlet.xml 에 차단 기 를 설정 합 니 다.
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="loginInterceptor" class="interceptor.LoginInterceptor"/>
</mvc:interceptor>
Tomcat 설정,테스트.결과:로그 인 하지 않 으 면 로그 인 성공 페이지 에 직접 접근 할 수 없습니다.
이상 은 SpringMVC 중국어 난 장 판 솔 루 션 의 상세 한 내용 입 니 다.SpringMVC 중국어 난 장 판 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ssm 프레임워크 업로드 이미지 로컬 및 데이터베이스에 저장 예시본고는 ssm 프레임워크 업로드 이미지를 로컬과 데이터베이스에 저장하는 예시를 소개하고 주로 Spring+SpringMVC+MyBatis 프레임워크를 사용하여 ssm 프레임워크 업로드 이미지의 실례를 실현했다. 구체...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.