spring mvc 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

项目结构:


相关文章
|
1月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
50 0
|
2月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
43 0
|
4天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
41 14
|
1天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
16 6
|
3天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
28 3
|
4天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
22 4
|
2月前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
22天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
67 2
|
1月前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
37 1
|
2月前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
158 1
下一篇
DataWorks