- 浏览: 1036670 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
一、拦截器的配置
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、基于注解的配置
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、基于注解的配置
<!-- 拦截器 --> 1.<!-- 拦截器 --> 2. <mvc:interceptors> 3. <!-- 多个拦截器,顺序执行 --> 4. <mvc:interceptor> 5. <mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller --> 6. <bean class="com.wy.interceptor.CommonInterceptor"></bean> 7. </mvc:interceptor> 8. </mvc:interceptors> 二、拦截器类1.package com.wy.interceptor; 2. 3.import javax.servlet.http.HttpServletRequest; 4.import javax.servlet.http.HttpServletResponse; 5. 6.import org.apache.log4j.Logger; 7.import org.springframework.web.servlet.HandlerInterceptor; 8.import org.springframework.web.servlet.ModelAndView; 9. 10.public class CommonInterceptor implements HandlerInterceptor { 11. 12. private Logger log = Logger.getLogger(CommonInterceptor.class); 13. 14. public CommonInterceptor() { 15. // TODO Auto-generated constructor stub 16. } 17. 18. private String mappingURL;//利用正则映射到需要拦截的路径 19. public void setMappingURL(String mappingURL) { 20. this.mappingURL = mappingURL; 21. } 22. 23. /** 24. * 在业务处理器处理请求之前被调用 25. * 如果返回false 26. * 从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 27. * 28. * 如果返回true 29. * 执行下一个拦截器,直到所有的拦截器都执行完毕 30. * 再执行被拦截的Controller 31. * 然后进入拦截器链, 32. * 从最后一个拦截器往回执行所有的postHandle() 33. * 接着再从最后一个拦截器往回执行所有的afterCompletion() 34. */ 35. @Override 36. public boolean preHandle(HttpServletRequest request, 37. HttpServletResponse response, Object handler) throws Exception { 38. // TODO Auto-generated method stub 39. log.info("==============执行顺序: 1、preHandle================"); 40. String url=request.getRequestURL().toString(); 41. if(mappingURL==null || url.matches(mappingURL)){ 42. request.getRequestDispatcher("/msg.jsp").forward(request, response); 43. return false; 44. } 45. return true; 46. } 47. 48. //在业务处理器处理请求执行完成后,生成视图之前执行的动作 49. @Override 50. public void postHandle(HttpServletRequest request, 51. HttpServletResponse response, Object handler, 52. ModelAndView modelAndView) throws Exception { 53. // TODO Auto-generated method stub 54. log.info("==============执行顺序: 2、postHandle================"); 55. } 56. 57. /** 58. * 在DispatcherServlet完全处理完请求后被调用 59. * 60. * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() 61. */ 62. @Override 63. public void afterCompletion(HttpServletRequest request, 64. HttpServletResponse response, Object handler, Exception ex) 65. throws Exception { 66. // TODO Auto-generated method stub 67. log.info("==============执行顺序: 3、afterCompletion================"); 68. } 69. 70.} 注意:注释中的说明。
完整的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="/jsentryOrJsonController\.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>
【转载地址】
http://blog.sina.com.cn/s/blog_acfebcee01011vgz.html发表评论
-
Spring MVC 3.1新特性 生产者、消费者请求限定
2015-06-15 07:42 661参考地址: http://www.iteye.com/to ... -
CSRF TOKEN
2015-02-14 18:02 1100package com.uncle5.pubrub.web.c ... -
Spring MVC Controller单例陷阱
2014-06-27 08:51 637Spring MVC Controller默认是 ... -
[Spring] Hessian权限认证,加密前面
2014-03-06 09:52 1564Hessian的一些基本简介已经在上一节已经全部介绍了,上一节 ... -
FieldRetrievingFactoryBean 和 MethodInvokingFactoryBean
2014-01-09 18:36 970spring提供了filed的值注入和method的返回值注入 ... -
Spring中ApplicationContext的事件机制(二 内定事件)
2014-01-09 11:08 12277在Spring中已经定义了五个标准事件,分别介绍如下: 1) ... -
当spring 容器初始化完成后执行某个方法 .
2014-01-08 17:40 1391在某些应用中,我们希望,当spring 容器将所有的bea ... -
spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2013-09-12 10:43 1160spring mvc处理方法支持如下的返回方式:ModelA ... -
JSR-303
2013-09-12 00:22 885JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
EHCACHE分布式缓存
2013-09-06 17:26 1267从1.2版本开始,Ehcache可 ... -
springMVC+freemarker整合
2013-09-06 16:39 1378springMVC整合大家都比较熟悉了吧主要有以下几个步骤: ... -
Spring MVC 学习笔记 Viewresol和View
2013-09-06 15:34 888Spring MVC使用ViewResolver来根据cont ... -
Spring的PropertyPlaceholderConfigurer应用
2013-09-06 15:04 3164Spring 利用PropertyPlaceholderCon ... -
SpringSecurity3_Logout
2013-08-22 16:07 2536Logout¶•退出登录的链接 <a href=&quo ... -
spring的default-lazy-init参数 .
2013-04-23 20:08 944spring在启动的时候,会默认加载会默认加载整个对象实例图, ... -
Spring MVC 如何防止XSS、SQL注入攻击
2013-04-16 15:40 1623在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问 ... -
Spring JMS
2013-01-08 10:48 910http://blog.csdn.net/shiqiang12 ... -
给spring jdbctemplate加上一层“绮丽外衣”-动态SQL&&SQL语句以文件存放
2013-01-07 16:00 3265给spring jdbctemplate加上一层“华丽外衣”- ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作 .
2013-01-07 14:54 1133NamedParameterJdbcTemplate内部包含了 ... -
cron表达式(quartz中时间表达式)
2012-12-20 15:54 903http://sosuny.iteye.com/blog/46 ...
相关推荐
本篇文章主要介绍了防止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拦截器实现单点登录