攔截器介紹
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。
servlet规范中的一部分,任何java web工程都可以使用
在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的
要在application.xml將攔截器先配置
<!--攔截器配置-->
<mvc:interceptors>
<mvc:interceptor>
<!--包括這個請求下面的所有請求-->
<mvc:mapping path="/**"/>
<bean class="com.kuang.config.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
@RestController
public class TestController {
@GetMapping("/c1")
public String test(){
System.out.println("TestController==>test()執行了");
return "OK";
}
}
要implements HandlerInterceptor才能創立
底下的代碼非強制執行,但要@Override才能執行攔截器的功能
public class MyInterceptor implements HandlerInterceptor {
//return false:執行下一個過濾器,放行
//return true:不執行下一個過濾器
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("===========處理前============");
return true;
}
//攔截日誌
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("===========處理後============");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("===========清理============");
}
}
成功通過攔截器,並且在console顯示結果
實際上只有preHandle在執行攔截工作,其餘兩個是做攔截的日誌紀錄
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("===========處理前============");
return false;
}
原先該顯示的畫面沒有顯示
因為已經被攔截器攔截,因此只顯示preHandle的內容
先在pom.xml將對應的jar包安裝 <!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!--servlet-api导入高版本的--> <dependency> <groupId>javax.servlet</groupId>
Apr 19, 2023loginController @Controller public class loginController { @RequestMapping("/main") public String main(){ return "main"; } @RequestMapping("/goLogin")
Apr 19, 2023程式編寫1 login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.4.js"></script> <script>
Apr 17, 2023語法 jQuery.post(url,data,success(data, textStatus, jqXHR),dataType) 参数 描述 url 必需。规定把请求发送到哪个 URL。 data 可选。映射或字符串值。规定连同请求发送到服务器的数据。
Apr 16, 2023or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up