springmvc(5)拦截器
1.什么是拦截器
是指通过统一的拦截从浏览器发送到服务器的请求来完成相应服务增强
2.拦截器的基本原理
可以通过配置过滤器解决乱码问题
和过滤器非常相似
3.搭建工程
注意jar包
此时的工程是完成后创建的


web.xml
<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.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>
springmvc.xml
<context:component-scan base-package="com.Mrcheng.controller"></context:component-scan> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <mvc:annotation-driven></mvc:annotation-driven> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
ControllerTest.java
@Controller
public class ControllerTest { @RequestMapping("/login")
public String login(){
return "view";
} @RequestMapping("/view")
public ModelAndView views(String name,String pwd){ ModelAndView mv = new ModelAndView();
System.out.println("views方法....");
System.out.println("name:" + name);
System.out.println("pwd:" + pwd);
mv.addObject("msg", "views方法中的msg");
mv.setViewName("success"); return mv;
}
}
index.jsp
用于向view.jsp做跳转
<body>
This is my JSP page. <br>
<a href="login">to login</a>
</body>
view.jsp
主要做测试的页面
<form action="view" method="post">
user:<input type="text" name="name" ><br>
pwd:<input type="password" name="pwd"><br>
<input type="submit" value="submit">
</form>
</body>
success.jsp
是view.jsp做跳转成功的页面测试
<body>
<h1>success</h1>
msg:${msg}
</body>
test.jsp
主要做拦截请求的测试
<body>
<h4>拦截请求的转移测试</h4> </body>
在Tomcat上运行
乱码测试:

提交之后看控制台的打印结果:

此时输入中文的情况下会有乱码的情况出现
4.对乱码进行拦截和处理(过滤器)
在web.xml文件中配置filter

配置代码:
<filter>
<filter-name>filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
此时的测试中文是没有乱码的@!!!
5.拦截器的实现
自定义拦截器:
public class MyInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
request.setCharacterEncoding("utf-8");
System.out.println("preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion");
}
}
在springmvc.xml文件中注册:
<!-- 拦截器注册到mvc框架中 -->
<mvc:interceptors>
<bean class="com.MrChengs.Interceptor.MyInterceptor"></bean>
</mvc:interceptors>

<!-- 拦截器注册到mvc框架中 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/view.action"/>
<bean class="com.MrChengs.Interceptor.MyInterceptor"></bean>
</mvc:interceptor> </mvc:interceptors>
6.拦截器的三种方法介绍
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler)
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object handler,ModelAndView modelAndView)




<!-- 拦截器注册到mvc框架中 -->
<mvc:interceptors>
<bean class="com.MrChengs.Interceptor.MyInterceptor"></bean>
<bean class="com.MrChengs.Interceptor.MyInterceptor2"></bean>
</mvc:interceptors>
执行流程:
preHandle...
preHandle2...
views方法....
name:小明
pwd:xiaoming
postHandle2...
postHandle...
afterCompletion2...
afterCompletion...
当然拦截器的接口不止一个,但是我们在操作中使用最多的还是本次实验中的这个接口。
其余的HandlerInterceptor,WebRequestInterceptor可以在晚上找几篇博文看一下了解即可。
springmvc(5)拦截器的更多相关文章
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- SpringMVC利用拦截器防止SQL注入
引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...
- SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】
注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处.假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...
- 基于注解风格的Spring-MVC的拦截器
基于注解风格的Spring-MVC的拦截器 Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子.那么基于注解风格如何使用拦截器呢? 基于注解基本上有2个可使用的定义类,分别是Defa ...
- SpringMVC 学习-拦截器 HandlerInterceptor 类
一.拦截器 HandlerInterceptor 类的作用 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 二.怎么使用呢? 1. ...
- springMVC的拦截器工作流程
首先,springmvc的拦截器配置在这就不多说了.主要讲一下拦截器的三个方法的执行顺序. preHandle方法一定是最先执行的方法,如果它返回为false下面的方法均不执行. postHandle ...
- SpringMVC—Struts2拦截器学习网址整理
引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...
- 转 :关于springmvc使用拦截器
原博客: http://elim.iteye.com/blog/1750680 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的 ...
- springmvc中拦截器与springmvc全局异常处理器的问题
最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 ...
- springMVC配置拦截器、过滤器、前端控制器时遇到的问题总结
1.业务场景:使用vuejs+springMVC+spring框架搭建一个mis系统,集成SSO单点登录: 2.遇到问题:使用interceptor拦截器配置SSO单点登录,直接敲域名,或者ip+端口 ...
随机推荐
- 一、快速构建Springboot应用
1.基本概念 Spring的出现对于企业级应用来说是一个福音,它让企业级应用开发更加地简单.但是随着Spring的不断发展,它也慢慢变得越来越重.即使apache出品的maven工具能够使得项目创建. ...
- IDEA集成 SpringBoot+Mybaties 之 @Autowired注入报错
原因分析: 因为@Mapper注解是由ibates提供的,需要在application.yml里加上下图配置 以及在启动类入口加上 扫描你mapper接口所在的包 ,所以Spring容器是不认识这个注 ...
- LinearLayout中的android:layout_garvity的center_vertical和center_horizontal
当LinearLayout的排列方向是 horizontal时,只有垂直方向上的对齐方式才会生效.因为此时水平方向上的长度是不固定的,每添加一个控件,水平方向上的长度都会改变,因而无法指定该方向上的对 ...
- thinkphp中ajax接收参数值
if(IS_AJAX) { $oldpwd=I('param.oldpwd'); }
- javascript检查数据中是否存在相同的元素
这里是两个用于数组中查找重复元素的demo,可以看看啦 <!DOCTYPE html><html lang="en"><head> <me ...
- Javascript 多物体运动1
多物体运动 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <ti ...
- Linux下C语言操作MySQL数据库
MySQL是Linux系统下广泛使用的开源免费数据库,是Linux应用程序数据存储的首选. Ubuntu下安装 […]
- JavaScript & jQuery Code Snippet
1. 按照每个object的Name属性对object对象集合进行排序: //sort a collection of objects by Name property function sortBy ...
- CentOS安装软件出现错误:bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
CentOS安装软件出现错误: bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or d ...
- Oracle基础之分析表
analyze table tablename compute statistics; analyze index indexname compute statistics; (analyze 不会重 ...