`
xiaotao.2010
  • 浏览: 216591 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SpringMVC初探_拦截器(Inteceptor)

 
阅读更多

 

还是直接上代码了;

 

不过还是有一个疑问没有搞清楚,例如下配置

<mvc:interceptors >  
			<mvc:interceptor>  
				<!-- 拦截/showUser/后的所有请求,包括静态资源文件 -->
				<mvc:mapping path="/showUser/**" /> 
				<bean class="com.test.inteceptor.HelloWorldInteceptor"></bean>  
			</mvc:interceptor>  
		</mvc:interceptors>  
 将会拦截/showUser/后的所有请求,包括静态资源文件,资源文件包括(CSS、Js、Image),在实际的环境中这些静态资源不需要被拦截,目前还在研究怎么能使得Inteceptor不拦截这些静态资源文件。

 

运行环境参照:http://xiaotao-2010.iteye.com/blog/1638827

 

1、SpringMVC的配置文件

spring-mvc-config.xml

 

<?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"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
	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">

	<!--
			the application context definition for the springappDispatcherServlet
		-->
	<!-- 默认的注解映射的支持 -->  
	<context:annotation-config />
	
	<!-- 启动时注解扫描器扫描包中的注解,目标包  base-package="*,*" 多个包以逗号分割-->  
	<context:component-scan base-package="com.test.controller" />

	<!--启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

	<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
		<!-- 然后通过order属性 来指定顺序 handler 的加载器-->
		<property name="order" value="1"/>
	</bean >
	<!-- 在使用Spring MVC 映射配置文件时候使用 -->
	<!-- HandlerMapping  
		<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
		 -->
	<!-- HandlerAdapter
		<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
		 -->
	 
	 
	<!-- 视图解释类 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="prefix" value="/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	
	<!-- 对静态资源文件的访问  方案一 -->
	<mvc:default-servlet-handler/>  
	
	<!-- 对静态资源文件的访问  方案二 (二选一)
	<mvc:resources mapping="/img/**" location="/img/" cache-period="31556926"/> 
	--> 
	<!--	-->
		<mvc:interceptors >  
			<mvc:interceptor>  
				<!-- 拦截/showUser/后的所有请求,包括静态资源文件 -->
				<mvc:mapping path="/showUser/**" /> 
				<bean class="com.test.inteceptor.HelloWorldInteceptor"></bean>  
			</mvc:interceptor>  
		</mvc:interceptors>  

	<!-- 处理器  (非注解时使用)
		<bean name="/hello" class="com.test.controller.HelloWorldController"/>
		-->
</beans>

 

2、自定义的Inteceptor

 

 

package com.test.inteceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class HelloWorldInteceptor implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object o, Exception e)
			throws Exception {
		System.out.println("拦截器结束。。。。");
		// TODO Auto-generated method stub
		
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response,
			Object o, ModelAndView mv) throws Exception {
		System.out.println("拦截器工作。。。。"); 
		String s = "------- Inteceptor --------: HelloWord !";
		System.out.println(s);
		mv.addObject("intep",s);
	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
			Object o) throws Exception {
		// TODO Auto-generated method stub
		 System.out.println("拦截器开启。。。。");  
		return true;
	}

}

 

3、访问

访问 URL :http://localhost:8080/test-webapp/jsp/**后的所有资源,将会被拦截

Console输出:

 写道
拦截器开启。。。。
拦截器工作。。。。
------- Inteceptor --------: HelloWord !
拦截器结束。。。。
 
分享到:
评论
4 楼 xiaotao.2010 2013-01-11  
beming 写道
xiaotao.2010 写道
beming 写道
请问我要截拦ROOT下某个目录下面的静态文件如test.txt应该怎么配置?

http://localhost:8080/upload/test.txt

截拦这种访问


<mvc:interceptors >   
            <mvc:interceptor>   
                <!-- 拦截/upload/*.txt,例举用的是HelloWorldInteceptor这个拦截器 --> 
                <mvc:mapping path="/upload/*.txt" />  
                <bean class="com.test.inteceptor.HelloWorldInteceptor"></bean>   
            </mvc:interceptor>   
        </mvc:interceptors> 

试过不可以。。。

帖一下你的配置~
3 楼 beming 2013-01-10  
xiaotao.2010 写道
beming 写道
请问我要截拦ROOT下某个目录下面的静态文件如test.txt应该怎么配置?

http://localhost:8080/upload/test.txt

截拦这种访问


<mvc:interceptors >   
            <mvc:interceptor>   
                <!-- 拦截/upload/*.txt,例举用的是HelloWorldInteceptor这个拦截器 --> 
                <mvc:mapping path="/upload/*.txt" />  
                <bean class="com.test.inteceptor.HelloWorldInteceptor"></bean>   
            </mvc:interceptor>   
        </mvc:interceptors> 

试过不可以。。。
2 楼 xiaotao.2010 2012-12-31  
beming 写道
请问我要截拦ROOT下某个目录下面的静态文件如test.txt应该怎么配置?

http://localhost:8080/upload/test.txt

截拦这种访问


<mvc:interceptors >   
            <mvc:interceptor>   
                <!-- 拦截/upload/*.txt,例举用的是HelloWorldInteceptor这个拦截器 --> 
                <mvc:mapping path="/upload/*.txt" />  
                <bean class="com.test.inteceptor.HelloWorldInteceptor"></bean>   
            </mvc:interceptor>   
        </mvc:interceptors> 
1 楼 beming 2012-12-20  
请问我要截拦ROOT下某个目录下面的静态文件如test.txt应该怎么配置?

http://localhost:8080/upload/test.txt

截拦这种访问

相关推荐

    SpringMVC Demo_java_springmvc_DEMO_

    这个名为"SpringMVC Demo_java_springmvc_DEMO_"的项目是一个演示示例,旨在展示如何在Java项目中集成和使用SpringMVC。通过这个项目,我们可以学习到以下关键知识点: 1. **环境配置**:首先,我们需要一个Java...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_10_拦截器 共7页.pptx

    ### Java实训教程知识点详解——SpringMVC拦截器 #### 一、SpringMVC概述与应用场景 SpringMVC作为Spring框架中的一个模块,主要用于构建Web应用。它是一个基于MVC(Model-View-Controller)设计模式的轻量级框架...

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    在本文中,我们讨论了三种解决SpringMVC拦截器拦截静态资源文件的方法,并对这些方法的优劣进行了分析。 方案一是在拦截器中排除静态资源路径。在SpringMVC的配置文件中(通常是spring-mvc.xml),可以通过配置元素...

    Java实训教程 Java软件开发实战 Java开发框架SpringMVC介绍 共10个章节.rar

    【课程大纲】 SpringMVC_1_开发环境搭建 共41页.pptx SpringMVC_2_HelloWorld 共19页.pptx SpringMVC_3_方法入参 共41页.pptx SpringMVC_4_方法返回值 共25页.pptx ...SpringMVC_10_拦截器 共7页.pptx

    springmvc4_springmvc_mainlyyb8_

    在 "springmvc4_springmvc_mainlyyb8_" 这个项目中,我们可以预见到它将涉及到 Spring MVC 4.x 版本的相关知识。 1. **Spring MVC 概述** Spring MVC 提供了一个灵活的架构,可以处理 HTTP 请求、路由请求到相应的...

    SpringMVC PPT_springmvc_

    SpringMVC 的拦截器(Interceptor)允许在请求处理前后执行自定义逻辑,例如登录检查、日志记录、性能监控等。拦截器通过 HandlerInterceptor 接口实现。 九、数据绑定与验证 SpringMVC 提供了自动的数据绑定功能,...

    SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi

    SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi

    SSM.zip_mybatis_spring_springMVC mybatis_springmvc_ssm

    标题 "SSM.zip_mybatis_spring_springMVC mybatis_springmvc_ssm" 提供了一个关于集成框架的线索,即Spring、SpringMVC和MyBatis的整合应用,通常称为SSM框架。这个框架是Java开发Web应用程序的常用组合,特别是对于...

    SSM.rar_SSM_MYSQL_springMVC mybatis_springMVC mysql_ssm_分页功能

    一个ssm项目 整合MyBatis+spring+springmvc的小例子,使用Mysql数据库,手写分页,没有用插件,还有增删查功能,文件放了sql文件,可以导入数据库,看效果,适合新手学习的例子.

    mc.rar_springMVC mybatis_springmvc

    5. **拦截器(Interceptor)**:可以定义一系列预处理和后处理操作,增强系统的功能和安全性。 MyBatis是一个轻量级的持久层框架,它简化了数据库操作,提供了SQL与Java代码的直接映射。MyBatis的核心功能包括: 1...

    SpringMVC-12 拦截器

    在本教程“SpringMVC-12 拦截器”中,我们将深入探讨如何实现和配置自定义拦截器,以及多个拦截器的执行顺序。 首先,我们来了解如何创建一个自定义的拦截器。在Spring MVC中,我们需要创建一个实现了`...

    demo_SpringMVC.rar_+SpringMVC demo_DEMO_spring mvc_spring mvc de

    2. **spring-servlet.xml**: 定义 Spring MVC 的配置,如视图解析器、拦截器、数据源、事务管理器等。 3. **Maven build**: 使用 Maven 编译项目,打包成 WAR 文件后,可以部署到支持 Servlet 的应用服务器(如 ...

    Java入门必学实训教程 Java软件开发实战 Java基础、开发框架、类库、web开发 已分类全套共50多份PPT课件.rar

    SpringMVC_10_拦截器 SpringMVC_2_HelloWorld SpringMVC_3_方法入参 SpringMVC_4_方法返回值 SpringMVC_5_常用注解 SpringMVC_6_数据校验 SpringMVC_7_国际化 SpringMVC_8_标签库 SpringMVC_9_文件上传 struts2_1_...

    springmvc_spring_mybatis框架整合文档

    整合springmvc_spring_mybatis框架后整理的学习笔记以及整合方法。

    ssm_拦截器demo

    拦截器的注册通常在SpringMVC的配置文件中完成,我们需要在标签内添加子标签,并配置相应的路径和拦截器类。这样,当请求匹配到指定路径时,对应的拦截器就会被触发。 在这个demo中,可能包含了一个简单的增删改查...

    SpringMVC 中的拦截器与异常处理

    在SpringMVC框架中,拦截器(Interceptor)和异常处理是两个重要的概念,它们对于构建健壮、可维护的Web应用程序至关重要。本文将深入探讨这两个主题,并解释它们如何协同工作以提升应用性能和用户体验。 首先,让...

    SpringMVC3.0_Demo

    通过这两个目录中的文件,我们可以学习到如何配置SpringMVC 3.0的拦截器、视图解析器、控制器等组件,以及如何利用JPA进行数据库操作,实现CRUD(创建、读取、更新、删除)功能。此外,还可以看到如何将两者结合,...

    springmvc_mybatis3.01.zip_SpringMVC事务_漏洞

    在"springmvc_mybatis3.01.zip"压缩包中,包含了一个SpringMVC与MyBatis 3.01集成的实例,同时也涉及到了事务管理和安全漏洞的相关知识。 1. **SpringMVC与MyBatis集成** - **配置集成**:SpringMVC通过配置Spring...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_8_标签库 共39页.pptx

    **SpringMVC_10_拦截器**(共7页):最后,这部分讲解了SpringMVC中的拦截器机制,包括拦截器的实现方式、生命周期、如何注册拦截器等。 ### 总结 通过这份详细的教程,读者不仅能够系统地学习SpringMVC的基本原理...

    基于springMVC的session拦截器

    在SpringMVC中,拦截器(Interceptor)是一种机制,可以对请求和响应进行预处理和后处理,类似于AOP(面向切面编程)的概念,但更专注于Web层。本文将深入探讨如何基于SpringMVC实现一个session拦截器,以检查用户...

Global site tag (gtag.js) - Google Analytics