一.springmvc拦截器介绍和环境搭建

1.介绍:

过滤器:servlet中的一部分,可以拦截所有想要访问的资源。

拦截器:SpringMVC框架中的,只能在SpringMVC中使用并且只能过滤控制器的方法。

流程:用户访问页面->执行拦截器1->执行拦截器2->执行控制器方法->跳转页面->展示给用户

2.入门代码:

编写自定义的拦截器类MyInterceptor1:

 /**
* 自定义拦截器类
* @author USTC_WZH
* @create 2019-12-04 12:26
*/
public class MyInterceptor1 implements HandlerInterceptor { /**
* 预处理方法,controller方法被执行前先执行
* return true 放行,执行下一个拦截器,若没有拦截器则执行Controller中的方法
* return false 不放行,可以通过request或response进行页面跳转
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor1执行了...");
return true;
}
}

配置springmvc.xml中拦截器属性:

     <!--配置拦截器-->
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--设置具体要拦截的方法:path="/**"为拦截所有方法,path="/user/*"为拦截user下的方法-->
<mvc:mapping path="/user/*"></mvc:mapping>
<!--配置不要拦截的方法与<mvc:mapping path=""></mvc:mapping> 二者一般只设置一个-->
<!--<mvc:exclude-mapping path=""></mvc:exclude-mapping>-->
<!--配置拦截器对象为自己写的拦截器类-->
<bean class="edu.ustc.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>

编写控制器方法:

 /**
* @author USTC_WZH
* @create 2019-12-04 12:13
*/
@Controller
@RequestMapping("/user")
public class UserController { @RequestMapping("/testInterceptor")
public String testInterceptor(){
System.out.println("testInterceptor执行了..."); return "success";
}
}

编写jsp:

index.jsp:

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body> <h3>SpringMVC拦截器</h3>
<a href="user/testInterceptor">SpringMVC拦截器</a> </body>
</html>

success.jsp:

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body> <h3>测试Interceptor成功</h3> <% System.out.println("success.jsp执行了..."); %> </body>
</html>

执行结果:

3.拦截器接口演示

preHandle:预处理方法,在控制器方法执行之前执行,return true后执行控制器方法,return false并指定跳转页面则不执行控制器方法。可以用与检测用户是否登陆,未登录跳转登陆页面。

     /**
* 预处理方法,controller方法被执行前先执行
* return true 放行,执行下一个拦截器,若没有拦截器则执行Controller中的方法
* return false 不放行,可以通过request或response进行页面跳转
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor1d的preHandle方法执行了...");
// return true;
request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
return false; }

error.jsp:

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>error</title>
</head>
<body>
<h3>这是错误页面</h3>
</body>
</html>

postHandle:后处理方法,在Controller之后执行并在Controller需要跳转的页面之前执行

     /**
* 后处理方法,在Controller之后执行,在Controller需要跳转的success.jsp之前执行。
* 注:当指定跳转页面后会执行后处理方法跳转的页面
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor1d的postHandle方法执行了...");
request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response); }

afterCompletion方法在Controller方法执行之后执行并在产生的页面success.jsp后,执行该方法。主要用于回收资源。

执行成功!

最新文章

  1. hbase开发实例
  2. 使用MongoDB和JSP实现一个简单的购物车系统
  3. jQuery简洁大方的登录页面模板
  4. perl use FileHandle;打开多个文件
  5. 使用VS2010创建WebService 发布、测试
  6. [AHOI 2009] 维护序列(线段树模板题)
  7. 第二次冲刺-Runner站立会议01
  8. URL中文乱码处理总结(转)
  9. Java与数据库类型对照表
  10. 兄台息怒,关于arguments,您的想法和大神是一样一样的----闲聊JS中的apply和call
  11. photoshop:把路径存储为形状
  12. log4j输出信息到mongodb
  13. 实战RPM包制作
  14. js~this的陷阱
  15. AJAX 控件集之TextBoxWatermark(水印文本框)控件
  16. Data Structure(2)
  17. thymeleaf th:href url传递多参数
  18. XML就是这么简单
  19. mysql慢查询日志按天切割归纳
  20. linux系统下saltstack的安装和配置

热门文章

  1. Replication:distribution 中一直在运行 waitfor delay @strdelaytime 语句
  2. FRP represents an intersection of two programming paradigms.
  3. java基本数据类型的变量
  4. C# 进程 与 线程
  5. ELK部署配置使用记录
  6. PAT 1020月饼
  7. 33、vue中的事件修饰符.stop、.prevent、.self、.capture、.once
  8. JavaScript 变量与注释
  9. android 连接wifi案例
  10. Android 指定调用已安装的某个“相机”App