- 浏览: 921675 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (251)
- WebService (17)
- IBatis (22)
- Hibernate (1)
- SpringMVC - 基础篇 (32)
- Spring (15)
- Java (11)
- JVM及调优 - 基础篇 (4)
- 集群 (14)
- 数据库 (17)
- WebSphere (5)
- 多线程 (4)
- 集合、容器 (2)
- DB Pool (1)
- Power Designer (5)
- Maven基础 (5)
- JS (14)
- WEB 前端 (5)
- 实用小工具 (17)
- 社会、人 (2)
- 乱七八糟 (18)
- ASM&CGLIB - 基础篇 (12)
- 缓存 (1)
- 性能 (1)
- 设计之殇 (1)
- 分布式事务 (1)
- 单点登录 (11)
- 分布式 Session (4)
- Memcached - 基础篇 (6)
最新评论
-
一笑_奈何:
楼主写的还真行不错。
扫盲贴 - J2EE集群之JNDI集群实现 -
xuezhongyu01:
博主写的很详细,但最后还是没明白,最后调用BasicDataS ...
Spring中的destroy-method方法 -
Mr梁:
commons-fileupload.jar commons- ...
SpringMVC 中文件上传 MultipartResolver -
Eywa:
总结的很不错
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 -
TryRelax:
fastjson 比 jackson 好用吧?
Spring MVC Jackson DateFormat
基于上一篇文章的基础上
一、拦截器的配置
1、传统的配置
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" > <property name="interceptors"> <!-- 多个拦截器,顺序执行 --> <list> <ref bean="commonInterceptor"/> </list> </property> </bean> <!-- 如果不定义mappingURL,则默认拦截所有对Controller的请求 ; 可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*); --> <bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor"> <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/> </bean>
2、基于注解的配置
<!-- 拦截器 --> <mvc:interceptors> <!-- 多个拦截器,顺序执行 --> <mvc:interceptor> <mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller --> <bean class="com.wy.interceptor.CommonInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
二、拦截器类
package com.wy.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class CommonInterceptor implements HandlerInterceptor { private Logger log = Logger.getLogger(CommonInterceptor.class); public CommonInterceptor() { // TODO Auto-generated constructor stub } private String mappingURL;//利用正则映射到需要拦截的路径 public void setMappingURL(String mappingURL) { this.mappingURL = mappingURL; } /** * 在业务处理器处理请求之前被调用 * 如果返回false * 从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 * * 如果返回true * 执行下一个拦截器,直到所有的拦截器都执行完毕 * 再执行被拦截的Controller * 然后进入拦截器链, * 从最后一个拦截器往回执行所有的postHandle() * 接着再从最后一个拦截器往回执行所有的afterCompletion() */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO Auto-generated method stub log.info("==============执行顺序: 1、preHandle================"); String url=request.getRequestURL().toString(); if(mappingURL==null || url.matches(mappingURL)){ request.getRequestDispatcher("/msg.jsp").forward(request, response); return false; } return true; } //在业务处理器处理请求执行完成后,生成视图之前执行的动作 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub log.info("==============执行顺序: 2、postHandle================"); } /** * 在DispatcherServlet完全处理完请求后被调用 * * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub log.info("==============执行顺序: 3、afterCompletion================"); } }
注意:注释中的说明。
完整的spring配置文件
<?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" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!-- 默认的注解映射的支持 ,它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter <mvc:annotation-driven /> --> <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd --> <mvc:resources mapping="/js/**" location="/js/" /> <!-- 自动扫描注解的Controller --> <context:component-scan base-package="com.wy.controller.annotation" /> <!-- 处理在类级别上的@RequestMapping注解--> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" > <property name="interceptors"> <!-- 多个拦截器,顺序执行 --> <list> <ref bean="commonInterceptor"/> </list> </property> </bean> <!-- 如果不定义mappingURL,则默认拦截所有对Controller的请求 ; 可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*); --> <bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor"> <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/> </bean> <!-- 处理方法级别上的@RequestMapping注解--> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <property name="messageConverters"> <util:list id="beanList"> <ref bean="mappingJacksonHttpMessageConverter"/> </util:list> </property> </bean> <!-- 将指定路径的请求直接转到对应的view上,而不需要特定的controller来处理请求 . 注意:此处的映射路径是/hello,请求时http://localhost:8080/SpringMVC/hello 不能在hello.xxx,而不使用此种方式的映射可以加的,因为web.xml配置的是‘/’ --> <mvc:view-controller path="/hello" view-name="hello" /> <!-- 视图解析器策略 和 视图解析器 --> <!-- 对JSTL提供良好的支持 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 默认的viewClass,可以不用配置 <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" /> --> <property name="prefix" value="/WEB-INF/page/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 处理JSON数据转换的 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <!-- 为了处理返回的JSON数据的编码,默认是ISO-88859-1的,这里把它设置为UTF-8,解决有乱码的情况 --> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 拦截器 --> <mvc:interceptors> <!-- 多个拦截器,顺序执行 --> <mvc:interceptor> <mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller --> <bean class="com.wy.interceptor.CommonInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <!-- ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。 对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。 同样,[视图名].url所对应的值是该视图所对应的URL。 可以指定一个parent view,其它的视图都可以从parent view扩展。 用这种方法,可以声明一个默认的视图。 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="welcome" /> </bean> --> </beans>
评论
10 楼
2047699523
2015-03-16
spring mvc demo教程源代码下载:http://www.zuidaima.com/share/kspringmvc-p1-s1.htm
9 楼
107x
2015-02-28
不错,谢谢!
8 楼
zebing007
2014-07-29
7 楼
guojigjkill
2014-07-09
[color=brown][/color]
6 楼
123456789012
2014-03-17
http://cobaya.org.cn/
5 楼
123456789012
2014-03-17
不错,很棒!<a href="http://cobaya.org.cn/">留站不留名,扯淡走天涯!</a>
4 楼
zzulb123
2014-02-21
引用
3 楼
宋建勇
2013-09-09
2 楼
meiyx
2012-10-11
<!--一个拦截器多个mapping path的配置--> <mvc:interceptor> <mvc:mapping path="/ads/plan/channel" /> <mvc:mapping path="/ads/plan/keyword" /> <mvc:mapping path="/ads/plan/wordAdd" /> <mvc:mapping path="/ads/plan/save" /> <ref bean="planAgreementInterceptor" /> </mvc:interceptor>
1 楼
meiyx
2012-10-10
<!——设置spring拦截器若mvc:mapping的path相同则按照配置先后形成拦截器链 ——> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/*" /> <bean class="test.interceptor.TestInterceptor1" /> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/*" /> <bean class="test.interceptor.TestInterceptor2" /> </mvc:interceptor> </mvc:interceptors>
发表评论
-
SpringMVC中内容协商【统一资源多种展现json xml html】
2013-09-12 15:58 3371在我们实际的开发中,往往需要SpringMVC ... -
Spring为某个属性注入值或为某个方法的返回值
2013-08-26 16:02 1431项目中用到需要初始化一些数据,Spring提供了filed的 ... -
SpringMVC 基础知识点小结
2013-08-23 15:26 2228参照:http://zachary-g ... -
使用SpringMVC Restful 开发思考
2013-03-18 14:23 1237一、rest思想 此部分 ... -
Spring MVC Jackson DateFormat
2012-10-14 15:59 2148使用Spring MVC 里的Jackson返回JSON时,遇 ... -
SpringMVC 中文件上传 MultipartResolver
2011-12-17 17:44 55038基于前面文章的基础上。 一、准备 需要的jar ... -
SpringMVC 异常处理初探
2011-12-12 12:18 8173Web应用中对于异常的处理方式与其他形式的应用并没有太大的不同 ... -
SpringMVC 使用JSR-303进行校验 @Valid
2011-12-11 18:04 31477一、准备校验时使用的JAR 说明: ... -
SringMVC 注解标记备忘录
2011-12-10 22:42 2082Spring MVC注解开发中常用标签,如下表: ... -
SpringMVC生成JSON(三)
2011-12-10 01:16 20595基于上一篇文章的代码基础上 一、准备工作 1、 下载依赖库 ... -
SpringMVC生成JSON(二)
2011-12-06 21:24 8232基于上一篇文章的代码基础上 开始Jackson之旅。 一、准 ... -
SpringMVC 生成JSON(一)
2011-12-04 19:37 3259本示例基于前面几篇文章的代码。 一、JSON-lib框 ... -
Spring MVC处理重定向的传参
2011-12-03 21:35 6517一、Spring MVC是如何处理重定向的传参? 现提供一种 ... -
Spring MVC3.0的RESTFul方式的访问
2011-12-03 20:59 1596上一篇以简单介绍了 ... -
SpringMVC之用注解控制器
2011-12-03 19:53 2462在传统的Spring MVC开发方法中,必须在Bean配置 ... -
SpringMVC例子代码小汇总
2011-11-20 11:18 1860一、结构 二、Jar版本及使用jar包 ... -
SpringMVC 拦截器实现分析
2011-11-20 00:10 5352一、Servlet Filter与Spring interce ... -
SpringMVC学习笔记(三) --- 映射处理器(续)
2011-10-07 21:46 1627<?xml version="1.0" ... -
SpringMVC学习笔记(二) --- 后端控制器之MultiActionController(一)
2011-10-07 21:07 2008创建处理多个请求的控制器 根据"每个请求一个 ... -
SpringMVC学习笔记(二) --- 后端控制器之CommandController、 FormController(三)
2011-10-07 16:09 2956另一种表单封装的参数的Controller是AbstractC ...
相关推荐
本篇文章主要介绍了防止SpringMVC拦截器拦截js等静态资源文件的解决方法,具有一定的参考价值,有兴趣的同学可以了解一下
SpringMvc 拦截器 原理清楚,代码简单,值得学习!
springmvc 拦截器
SpringMVC拦截器例子详解,
SpringMVC拦截器源代码
SpringMVC拦截器的使用,通俗易懂!
可下载部署直接运行
企业级开发-SpringMVC使用拦截器实现用户登录权限验证实验报告
springmvc拦截器实现登录验证
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
SpringMVC框架下使用Interceptor进行登录验证 链接:http://blog.csdn.net/lazyrabbitlll/article/details/78696168
11SpringMVC拦截器.md
主要介绍了SpringMVC拦截器实现登录认证的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
简单的SpringMVC小程序,用Intelli IDEA 编写的,实现拦截器功能,实现了简单的登录、退出功能,是入门的好程序
Springmvc框架进行登录验证,除了某些特定的action请求不需要登录验证,例如登录,注册等。其他的action请求均需要登录验证,若没有登录则直接调到登录界面。若登录成功,则通过拦截
SpringMVC 拦截器实现分析.docx
springmvc配置以及拦截器配置。。
自定义拦截器的具体实现、自定义拦截器的配置方式、多个拦截器之间的执行执行顺序
初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...
使用SessionListener+持久化Session+Springmvc拦截器实现单点登录