SpringMVC 拦截器
来源:互联网 发布:这个驸马有淘宝gl下载 编辑:程序博客网 时间:2024/05/16 12:27
拦截器
FirstInterceptor.java
package com.jxust.springmvc.interceptors;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class FirstInterceptor implements HandlerInterceptor { /** * 渲染视图之后被调用 ,释放资源 */ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { System.out.println("[FirstInterceptor] afterCompletion"); } /** * 调用目标方法之后,渲染视图之前 * 可以对请求域中的属性和视图作出修改 */ @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("[FirstInterceptor] postHandle"); } /** * 该方法在目标方法之前被调用 * return true 则继续调用后续的拦截器和目标方法 * return false 当前和后续的拦截器都不会执行 * 可以考虑做权限,日志,事务等 ,乱码处理 */ @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { System.out.println("[FirstInterceptor] preHandle"); /*arg0.setCharacterEncoding("utf-8");//设置请求的字符编码 //对用户是否登录进行判断 if(arg0.getSession().getAttribute("user")==null){ //没有登录,跳转到login.jsp arg0.getRequestDispatcher("/login.jsp").forward(arg0, arg1);; return false; }*/ return true; }}
SecondInterceptor.java
package com.jxust.springmvc.interceptors;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class SecondInterceptor implements HandlerInterceptor { /** * 渲染视图之后被调用 ,释放资源 */ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { System.out.println("[SecondInterceptor] afterCompletion"); } /** * 调用目标方法之后,渲染视图之前 * 可以对请求域中的属性和视图作出修改 */ @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("[SecondInterceptor] postHandle"); } /** * 该方法在目标方法之前被调用 * return true 则继续调用后续的拦截器和目标方法 * return false 当前和后续的拦截器都不会执行 * 可以考虑做权限,日志,事务等 */ @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { System.out.println("[SecondInterceptor] preHandle"); return true; }}
拦截器配置
. . <!--配置自定义的拦截器 --> <mvc:interceptors> <bean class="com.jxust.springmvc.interceptors.FirstInterceptor"></bean> <!-- 配置拦截器(不)作用的路径 --> <mvc:interceptor> <mvc:mapping path="/emps"/> <mvc:exclude-mapping path="/hello"/> <bean class="com.jxust.springmvc.interceptors.SecondInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> . .
return false ,则指定的方法(或所有)将不能执行
执行顺序
像收费站的模式,依次通过收费站1,收费站2,返回的时候,先通过收费站2,在通过收费站1,多个类似。
3个方法的作用顺序,正序,反序,反序[FirstInterceptor] preHandle[SecondInterceptor] preHandle[SecondInterceptor] postHandle[FirstInterceptor] postHandle[SecondInterceptor] afterCompletion[FirstInterceptor] afterCompletion---------------------------------------------如果 SecondInterceptor的preHandle为false[FirstInterceptor] preHandle[SecondInterceptor] preHandle[FirstInterceptor] afterCompletion如果其中一个拦截器设置了preHandler为return false,就不需要释放资源了return true的拦截器,需要释放资源
拦截器和过滤器的区别
- 过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大,可以过滤请求和资源等
拦截器Interceptor 依赖于框架容器,基于反射机制,只过滤请求
拦截器的作用:可以处理Web应用中请求的一些通用性问题,共性问题在拦截器中处理,可以减少重复代码,便于维护
回调函数
⑴定义一个回调函数;
⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;
⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。
声明一个函数给调用者,发生特定条件时执行的某个行为,行为就是该声明的函数的执行。
之所以把函数交给调用者,主要是依靠它的特定功能(检测某个事件发生等等);商店买东西,没货,我留电话,到货通知我,就是类似的流程。
当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。…….
知乎https://www.zhihu.com/question/19801131
反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
动态语言的特点
程序运行时,允许改变程序结构或变量类型
- [SpringMVC] SpringMVC拦截器
- SpringMVC-----9、SpringMVC拦截器
- springMVC—springMVC拦截器
- springMVC 拦截器
- SpringMVC—拦截器
- springmvc 拦截器配置
- SpringMvc拦截器
- SpringMvc 拦截器
- springMVC 拦截器
- springmvc登录拦截器
- springMVC之拦截器
- SpringMVC使用拦截器
- springMVC 自定义拦截器
- springmvc拦截器实现
- springMVC 拦截器
- springmvc的拦截器
- SpringMVC拦截器
- springMVC拦截器
- 合并果子
- 【Hbase】Hbase分布式链接出错的问题,启动后不能连上其他节点处理问题。一直报错The node /hbase is not in ZooKeeper.不能同步的问题。
- 初始【C#】
- Hawq学习笔记 --- 创建带有自增字段的table,并插入数据
- HBase shell的基本用法
- SpringMVC 拦截器
- 二、linux目录结构
- Node.js——npm管理工具介绍
- 错误
- Min Stack_栈_保存最小值(用数组)
- 【Codeforces 246C Beauty Pageant】
- Discuz function_core 常用函数解析
- ActionBar层叠模式,透明的.
- 一个简单的注册登录页面(包括阿里大于的手机验证)html+JS+AJAX+PHP