- 浏览: 932847 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 3426在我们实际的开发中,往往需要SpringMVC ... -
Spring为某个属性注入值或为某个方法的返回值
2013-08-26 16:02 1490项目中用到需要初始化一些数据,Spring提供了filed的 ... -
SpringMVC 基础知识点小结
2013-08-23 15:26 2269参照:http://zachary-g ... -
使用SpringMVC Restful 开发思考
2013-03-18 14:23 1278一、rest思想 此部分 ... -
Spring MVC Jackson DateFormat
2012-10-14 15:59 2233使用Spring MVC 里的Jackson返回JSON时,遇 ... -
SpringMVC 中文件上传 MultipartResolver
2011-12-17 17:44 55171基于前面文章的基础上。 一、准备 需要的jar ... -
SpringMVC 异常处理初探
2011-12-12 12:18 8239Web应用中对于异常的处理方式与其他形式的应用并没有太大的不同 ... -
SpringMVC 使用JSR-303进行校验 @Valid
2011-12-11 18:04 31562一、准备校验时使用的JAR 说明: ... -
SringMVC 注解标记备忘录
2011-12-10 22:42 2134Spring MVC注解开发中常用标签,如下表: ... -
SpringMVC生成JSON(三)
2011-12-10 01:16 20640基于上一篇文章的代码基础上 一、准备工作 1、 下载依赖库 ... -
SpringMVC生成JSON(二)
2011-12-06 21:24 8278基于上一篇文章的代码基础上 开始Jackson之旅。 一、准 ... -
SpringMVC 生成JSON(一)
2011-12-04 19:37 3311本示例基于前面几篇文章的代码。 一、JSON-lib框 ... -
Spring MVC处理重定向的传参
2011-12-03 21:35 6541一、Spring MVC是如何处理重定向的传参? 现提供一种 ... -
Spring MVC3.0的RESTFul方式的访问
2011-12-03 20:59 1633上一篇以简单介绍了 ... -
SpringMVC之用注解控制器
2011-12-03 19:53 2529在传统的Spring MVC开发方法中,必须在Bean配置 ... -
SpringMVC例子代码小汇总
2011-11-20 11:18 1906一、结构 二、Jar版本及使用jar包 ... -
SpringMVC 拦截器实现分析
2011-11-20 00:10 5392一、Servlet Filter与Spring interce ... -
SpringMVC学习笔记(三) --- 映射处理器(续)
2011-10-07 21:46 1672<?xml version="1.0" ... -
SpringMVC学习笔记(二) --- 后端控制器之MultiActionController(一)
2011-10-07 21:07 2045创建处理多个请求的控制器 根据"每个请求一个 ... -
SpringMVC学习笔记(二) --- 后端控制器之CommandController、 FormController(三)
2011-10-07 16:09 2990另一种表单封装的参数的Controller是AbstractC ...
相关推荐
在本文中,我们讨论了三种解决SpringMVC拦截器拦截静态资源文件的方法,并对这些方法的优劣进行了分析。 方案一是在拦截器中排除静态资源路径。在SpringMVC的配置文件中(通常是spring-mvc.xml),可以通过配置元素...
在这个项目中,你可以了解到如何配置和使用拦截器,以及如何将它们集成到 SpringMVC 应用中。 1. **SpringMVC 概述**: SpringMVC 提供了一个模型-视图-控制器架构,用于处理 HTTP 请求和响应。它简化了 MVC 应用...
- 如何配置 SpringMVC 框架以使用自定义拦截器。 - 如何在 Web 应用的部署描述符(`web.xml`)中配置 DispatcherServlet。 这些知识是构建企业级应用的基础,对于理解 SpringMVC 框架的工作原理和提高安全性至关...
这个名为“SpringMVC拦截器源代码.zip”的压缩包可能包含了Spring MVC拦截器的实现源码,这对于理解和学习如何自定义拦截器以增强应用功能非常有帮助。 1. **拦截器的基本概念** - 拦截器是AOP(面向切面编程)的...
### SpringMVC拦截器 #### 一、拦截器概述 拦截器(Interceptor)是一种轻量级、低侵入式的AOP实现方式,在SpringMVC框架中有着广泛的应用。它主要用于处理那些与业务逻辑无关但又频繁出现的功能需求,如日志记录...
接下来,我们来创建一个简单的自定义拦截器。首先,我们需要创建一个实现`HandlerInterceptor`接口的类: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;...
Spring MVC 拦截器是基于Java的Servlet技术,用于处理HTTP请求的一种机制。它允许开发者在Controller...通过深入了解和熟练使用Spring MVC拦截器,开发者可以更好地控制请求处理流程,提高应用程序的灵活性和可扩展性。
- 使用Java配置时,可以通过`@EnableWebMvc` 注解启用Web MVC配置,并在`WebMvcConfigurer` 实现类中重写`addInterceptors()` 方法来注册拦截器。 3. **自定义拦截器**: - 自定义拦截器需要继承`...
综上所述,本项目是一个适合初学者了解和实践SpringMVC拦截器功能的小程序。通过学习和实践,你可以掌握如何使用拦截器实现登录验证和安全退出,同时加深对Intelli IDEA的使用理解。在实际应用中,拦截器常用于权限...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它可以用来实现诸如权限验证、日志记录、性能统计、缓存控制等多种功能。在这个主题中,我们将深入...
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
通过这个教程“SpringMVC-12-Interceptor”,你将能够掌握Spring MVC中拦截器的使用,包括创建自定义拦截器、配置拦截器以及理解多个拦截器的执行顺序。这将使你有能力在实际项目中灵活运用拦截器来实现各种业务需求...
本文将深入探讨如何使用Spring MVC的拦截器实现登录验证,并提供相关知识点。 1. **Spring MVC 拦截器简介** Spring MVC的拦截器是基于Servlet的Filter的一种扩展,它允许开发者在请求被控制器处理之前或之后执行...
SpringMVC拦截器是基于AOP(面向切面编程)的概念实现的,它们遵循HandlerInterceptor接口。这个接口定义了三个方法: 1. `preHandle`: 在请求被处理器处理之前调用,返回`true`表示继续执行处理器,`false`则中断...
总的来说,Spring MVC的自定义拦截器结合注解的使用,使得在应用程序中添加额外的处理逻辑变得简单且高效。通过自定义拦截器,开发者能够更好地控制请求的生命周期,实现更精细的控制和功能扩展,提高应用的可维护性...
11SpringMVC拦截器.md
这通常在Spring配置类中完成,使用`@Configuration`和`@EnableWebMvc`注解,并且通过`addInterceptors()`方法将拦截器添加到`InterceptorRegistry`。 4. **配置拦截路径**:在注册拦截器时,需要指定拦截哪些URL。...
SpringMVC拦截器是实现登录认证的一种常见方法,它允许开发者在请求被实际处理之前或之后执行特定的逻辑。本文将深入探讨如何利用SpringMVC拦截器来实现这一功能。 首先,了解SpringMVC的核心组件是必要的。...
以上就是使用`SessionListener`、持久化`Session`和`Springmvc拦截器`实现单点登录的基本原理和实现步骤。通过这样的设计,可以有效地提升用户体验,同时确保系统的安全性。在实际项目中,还需要根据具体需求进行...
了解了这些基础知识后,你可以通过运行这个入门实例,逐步学习如何配置拦截器,编写拦截器逻辑,并将其与控制器结合使用。在实践中,你会更深入地理解 SpringMVC 框架如何通过拦截器提高应用程序的可扩展性和灵活性...