spring mvc xml配置拦截器

来源:互联网 发布:pot player for mac 编辑:程序博客网 时间:2024/06/05 05:48

spring mvc xml配置拦截器

    博客分类:
  • Java Web
  • spring MVC
springspringmvcschema基于xml拦截器 

spring mvc 有两种配置:(1)注解;(2)基于xml(schema)。

公司要求使用xml方式的,其实在我看来注解更方便;

如何使用xml配置spring mvc的拦截器呢?

场景:比如用户通过浏览器访问我的网站时,我需要判断用户是否已经登录过,若登录过,则允许访问,否则自动跳转到登陆页面。

spring mvc中拦截器类需要继承HandlerInterceptorAdapter

代码如下:

Java代码  收藏代码
  1. package com.yj.mvc.controler.interceptor;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.springframework.web.servlet.ModelAndView;  
  7. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  
  8.   
  9. public class HandlerInterceptor1 extends HandlerInterceptorAdapter {  
  10.     @Override    
  11.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {    
  12.         System.out.println("===========HandlerInterceptor1 preHandle");    
  13.         return true;    
  14.     }    
  15.     @Override    
  16.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {    
  17.         System.out.println("===========HandlerInterceptor1 postHandle");    
  18.     }    
  19.     @Override    
  20.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {    
  21.         System.out.println("===========HandlerInterceptor1 afterCompletion");    
  22.     }    
  23. }  

 比较重要的方法时preHandle,如果返回false,就请求不会往下传递,就会拒绝请求。所以该方法可用于进行访问控制

控制器代码如下:

Java代码  收藏代码
  1. package com.yj.mvc.controler;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. import org.springframework.web.servlet.ModelAndView;  
  10. import org.springframework.web.servlet.mvc.Controller;  
  11. import org.springframework.web.servlet.view.json.MappingJacksonJsonView;  
  12.   
  13. public class DemoController implements Controller {  
  14.   
  15.     private String name;  
  16.     private String age;  
  17.     public ModelAndView handleRequest(HttpServletRequest request,  
  18.             HttpServletResponse response) throws Exception {  
  19.         System.out.println("request.getRequestURL():"+request.getRequestURL());  
  20.         System.out.println("request.getServletPath():"+request.getServletPath());  
  21.   
  22.         Map root = new HashMap();   
  23.         ModelAndView modelAndView =new ModelAndView(new MappingJacksonJsonView(), root);   
  24.         return modelAndView;  
  25.     }  
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.     public void setName(String name) {  
  30.         this.name = name;  
  31.     }  
  32.     public String getAge() {  
  33.         return age;  
  34.     }  
  35.     public void setAge(String age) {  
  36.         this.age = age;  
  37.     }  
  38.   
  39. }  

 

spring mvc配置文件:springmvc-servlet.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.             http://www.springframework.org/schema/context  
  9.            http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  10.            http://www.springframework.org/schema/aop  
  11.            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  12.            http://www.springframework.org/schema/tx   
  13.            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  14.            http://www.springframework.org/schema/mvc   
  15.            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
  16.   
  17.   
  18.     <!-- HandlerAdapter -->  
  19.     <bean  
  20.         class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />  
  21.     <!-- ViewResolver -->  
  22.     <bean  
  23.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  24.   
  25.         <property name="viewClass"  
  26.             value="org.springframework.web.servlet.view.JstlView" />  
  27.         <property name="viewNames">  
  28.             <list>  
  29.                 <value>org.springframework.web.servlet.view.json.MappingJacksonJsonView  
  30.                 </value>  
  31.             </list>  
  32.         </property>  
  33.     </bean>  
  34.   
  35.   
  36.   
  37.   
  38.     <mvc:resources mapping="/resource/**" location="/WEB-INF/resource/" />  
  39.   
  40.   
  41. </beans>  

 

web.xml配置如下 :

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  5.     version="3.0">  
  6.     <display-name></display-name>  
  7.     <context-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>  
  10.             classpath:beans.xml  
  11.           
  12.         </param-value>  
  13.     </context-param>  
  14.     <listener>  
  15.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  16.     </listener>  
  17.       
  18.   
  19.     <servlet>  
  20.         <servlet-name>springmvc</servlet-name>  
  21.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  22.         <load-on-startup>1</load-on-startup>  
  23.     </servlet>  
  24.     <servlet-mapping>  
  25.         <servlet-name>springmvc</servlet-name>  
  26.         <url-pattern>/</url-pattern>  
  27.     </servlet-mapping>  
  28.   
  29.   
  30.   
  31.   
  32. </web-app>  

 

beans.xml内容:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  7.             http://www.springframework.org/schema/context  
  8.            http://www.springframework.org/schema/context/spring-context-3.2.xsd  
  9.            http://www.springframework.org/schema/aop  
  10.            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
  11.            http://www.springframework.org/schema/tx   
  12.            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"  
  13.     default-lazy-init="false">  
  14.   
  15.     <!-- url映射列表,所有控制层Controller的访问路径在这里定义 -->  
  16.     <bean id="urlMapping"  
  17.         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  18.         <property name="mappings">  
  19.             <props>  
  20.                 <prop key="demo.action">demoController</prop>  
  21.                 <prop key="demo222.action">demoController</prop>  
  22.             </props>  
  23.               
  24.         </property>  
  25.         <property name="interceptors">  
  26.             <list>  
  27.                 <ref bean="handlerInterceptor2" />  
  28.             </list>  
  29.         </property>  
  30.     </bean>  
  31.     <!-- 控制器的父类 -->  
  32.     <bean id="demoController" class="com.yj.mvc.controler.DemoController">  
  33.     </bean>  
  34.   
  35.   
  36.   
  37.   
  38.     <!-- 系统业务参数 -->  
  39.     <!-- <bean name="businessParamViewConf" class="com.tdr.otp.ats.conf.BusinessParamViewConf" -->  
  40.     <!-- parent="baseController" > -->  
  41.     <!-- <property name="businessParamViewService"> -->  
  42.     <!-- <ref bean="businessParamViewService" /> -->  
  43.     <!-- </property> -->  
  44.     <!-- </bean> -->  
  45.     <bean id="handlerInterceptor2" class="com.yj.mvc.controler.interceptor.HandlerInterceptor1" />  
  46. </beans>  

 

 

启动服务器后,在浏览器中访问:http://localhost:8080/springmvc_xml/demo.action

后台打印:

===========HandlerInterceptor1 preHandle

request.getRequestURL():http://localhost:8080/springmvc_xml/demo.action

request.getServletPath():/demo.action

===========HandlerInterceptor1 postHandle

===========HandlerInterceptor1 afterCompletion

项目使用maven构建

IDE:eclipse

项目结构:



源代码见附件springmvc_xml.zip 

 

 

  • springmvc_xml.zip (11.1 KB)
  • 下载次数: 4
0 0
原创粉丝点击