web.xml代码
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定Spring配置文件位置 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mybatis-config.xml, classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter>
springmvc-servlet.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:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 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"> <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --> <context:component-scan base-package="com.ssm.*"></context:component-scan> <mvc:annotation-driven/> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean> <!-- 拦截器 --> <mvc:interceptors> <bean class="com.interceptor.MyInterceptor"/> </mvc:interceptors> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 如果使用jstl的话,配置下面属性 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean> </beans>
拦截器代码
package com.interceptor; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Repository; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.ssm.service.UserService; public class MyInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3) throws Exception { System.out.println("afterCompletion"); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView model) throws Exception { System.out.println("postHandle"); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { System.out.println("进入拦截器...."); // String url = request.getMethod(); // System.out.println("getMethod:" + url); // 打印getMethod:GET // String url2 = request.getRequestURI(); // System.out.println("getRequestURI:" + url2); // 打印getRequestURI:/04-day26-springmvc_mybatis/action/checkLogin // String url3 = request.getServletPath(); // System.out.println("getServletPath:" + url3); // 打印getServletPath:/action/checkLogin // StringBuffer url4 = request.getRequestURL(); // System.out.println("getRequestURL:" + url4); // 打印getRequestURL:http://localhost:8080/04-day26-springmvc_mybatis/action/checkLogin // String url = request.getContextPath(); // System.out.println(url); // 打印04-day26-springmvc_mybatis //判断Session缓存里面的user是否存在,如果存在则说明用户登入过,放行 if(request.getSession().getAttribute("user") != null){ System.out.println("用户已经登入过了..."); return true; }else{ //判断没有登入过的用户,是不是提交登入,如果是则放行 if("/action/checkLogin".equals(request.getServletPath())){ System.out.println("登入路径为" + request.getServletPath() +",正确,登入成功!"); return true; //以上两者都不是,则是违法操作,进行拦截 }else{ System.out.println("------->你被拦截了..."); //这里需要注意的是,拦截后如果用response.sendRedirect(arg0)返回页面,那么将不能用request.setAttribute("")传值; request.setAttribute("msg", "操作违法,请重新登入!"); request.getRequestDispatcher("../index.jsp").forward(request, response); return false; } } } }
相关推荐
1. 方案一通过在拦截器配置中排除特定的静态资源路径,可以比较精确地控制哪些请求被拦截器处理,哪些不处理。这种方法适合于静态资源和动态资源请求分得比较明确的情况。 2. 方案二通过利用默认的Servlet来处理...
在这个项目中,你可以了解到如何配置和使用拦截器,以及如何将它们集成到 SpringMVC 应用中。 1. **SpringMVC 概述**: SpringMVC 提供了一个模型-视图-控制器架构,用于处理 HTTP 请求和响应。它简化了 MVC 应用...
这个名为“SpringMVC拦截器源代码.zip”的压缩包可能包含了Spring MVC拦截器的实现源码,这对于理解和学习如何自定义拦截器以增强应用功能非常有帮助。 1. **拦截器的基本概念** - 拦截器是AOP(面向切面编程)的...
### SpringMVC拦截器 #### 一、拦截器概述 拦截器(Interceptor)是一种轻量级、低侵入式的AOP实现方式,在SpringMVC框架中有着广泛的应用。它主要用于处理那些与业务逻辑无关但又频繁出现的功能需求,如日志记录...
接下来,我们来创建一个简单的自定义拦截器。首先,我们需要创建一个实现`HandlerInterceptor`接口的类: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;...
配置 SpringMVC 拦截器,我们需要在 `springmvc-config.xml` 文件中添加以下内容: ```xml ... ... ``` 此外,还需要在 `web.xml` 文件中配置 SpringMVC 的前端控制器 DispatcherServlet: ```xml ...
5. **配置拦截器** 在Spring MVC的配置文件(通常是`dispatcher-servlet.xml`)中,我们需要声明一个`<mvc:interceptors>`元素来定义拦截器。在其中,可以创建一个或多个`<mvc:interceptor>`子元素,每个子元素代表...
下面将详细解释Spring MVC拦截器的工作原理、配置和实际应用。 1. **工作原理**: - 拦截器是基于AOP(面向切面编程)思想实现的,它通过预处理器和后处理器模式,对HTTP请求进行拦截。 - 当一个请求到达Spring ...
综上所述,本项目是一个适合初学者了解和实践SpringMVC拦截器功能的小程序。通过学习和实践,你可以掌握如何使用拦截器实现登录验证和安全退出,同时加深对Intelli IDEA的使用理解。在实际应用中,拦截器常用于权限...
SpringMVC拦截器是基于AOP(面向切面编程)的概念实现的,它们遵循HandlerInterceptor接口。这个接口定义了三个方法: 1. `preHandle`: 在请求被处理器处理之前调用,返回`true`表示继续执行处理器,`false`则中断...
在本教程“SpringMVC-12 拦截器”中,我们将深入探讨如何实现和配置自定义拦截器,以及多个拦截器的执行顺序。 首先,我们来了解如何创建一个自定义的拦截器。在Spring MVC中,我们需要创建一个实现了`...
4. **配置拦截器** 创建好拦截器后,需要在Spring MVC的配置中声明并注册它。这可以通过`<mvc:interceptors>`标签在XML配置中完成,或者在Java配置类中使用`addInterceptors()`方法添加。 5. **排除不需要拦截的...
总的来说,Spring MVC的自定义拦截器结合注解的使用,使得在应用程序中添加额外的处理逻辑变得简单且高效。通过自定义拦截器,开发者能够更好地控制请求的生命周期,实现更精细的控制和功能扩展,提高应用的可维护性...
这通常在Spring配置类中完成,使用`@Configuration`和`@EnableWebMvc`注解,并且通过`addInterceptors()`方法将拦截器添加到`InterceptorRegistry`。 4. **配置拦截路径**:在注册拦截器时,需要指定拦截哪些URL。...
SpringMVC拦截器是实现登录认证的一种常见方法,它允许开发者在请求被实际处理之前或之后执行特定的逻辑。本文将深入探讨如何利用SpringMVC拦截器来实现这一功能。 首先,了解SpringMVC的核心组件是必要的。...
SpringMVC拦截器配置及运行流程解析 SpringMVC拦截器是指在SpringMVC框架中,用于拦截和处理请求的组件。拦截器可以在请求处理之前、之后或抛出异常时执行某些操作,例如身份验证、日志记录、异常处理等。SpringMVC...
3. **配置Springmvc拦截器**:创建自定义拦截器,实现`HandlerInterceptor`接口,覆盖`preHandle`方法进行会话检查。 4. **单点登录逻辑**:在`preHandle`中,检查当前请求的会话是否有效,无效则引导至登录页面,...
1. **配置文件**:如 `springmvc-servlet.xml`,其中会配置 DispatcherServlet,以及在 `<mvc:interceptors>` 标签内注册拦截器。 2. **拦截器类**:自定义的拦截器类,实现 `HandlerInterceptor` 接口,包含上述三...
本文将详细介绍 SpringMVC 拦截器的原理、配置方式以及异常处理机制。 ### 一、SpringMVC 拦截器原理 SpringMVC 的拦截器基于 Java 的动态代理机制,当一个请求到达 DispatcherServlet 时,会先经过一系列预定义或...
SpringMVC拦截器运行原理及配置详解 SpringMVC拦截器是SpringMVC框架中的一种机制,用于在 Controller 方法执行前、后或抛出异常时执行某些操作的拦截器,拦截器可以对Controller中的方法进行拦截和过滤,从而实现...