1:拦截器注册配置,spring-mvc.xml
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="${adminPath}/**" /> <mvc:exclude-mapping path="${adminPath}/"/> <mvc:exclude-mapping path="${adminPath}/login"/> <bean class="com.thinkgem.jeesite.modules.sys.interceptor.LogInterceptor" /> </mvc:interceptor> </mvc:interceptors>
2:Java代码,LogInterceptor.java
import java.text.SimpleDateFormat; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.core.NamedThreadLocal; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.thinkgem.jeesite.common.service.BaseService; import com.thinkgem.jeesite.common.utils.DateUtils; import com.thinkgem.jeesite.modules.sys.utils.LogUtils; /** * 日志拦截器 * @author ThinkGem * @version 2014-8-19 */ public class LogInterceptor extends BaseService implements HandlerInterceptor { private static final ThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>("ThreadLocal StartTime"); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (logger.isDebugEnabled()){ long beginTime = System.currentTimeMillis();//1、开始时间 startTimeThreadLocal.set(beginTime); //线程绑定变量(该数据只有当前请求的线程可见) logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS") .format(beginTime), request.getRequestURI()); } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { if (modelAndView != null){ logger.info("ViewName: " + modelAndView.getViewName()); } } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 保存日志 LogUtils.saveLog(request, handler, ex, null); // 打印JVM信息。 if (logger.isDebugEnabled()){ long beginTime = startTimeThreadLocal.get();//得到线程绑定的局部变量(开始时间) long endTime = System.currentTimeMillis(); //2、结束时间 logger.debug("计时结束:{} 耗时:{} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m", new SimpleDateFormat("hh:mm:ss.SSS").format(endTime), DateUtils.formatDateTime(endTime - beginTime), request.getRequestURI(), Runtime.getRuntime().maxMemory()/1024/1024, Runtime.getRuntime().totalMemory()/1024/1024, Runtime.getRuntime().freeMemory()/1024/1024, (Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory())/1024/1024); } } }
相关推荐
在Java的Spring框架中,SpringMVC是一个提供了构建Web应用程序的模型-视图-控制器(MVC)的流行框架。其中,拦截器是SpringMVC的一个特性,允许开发者在进入控制器之前执行特定的操作,常用于日志记录、权限检查等场景...
SpringMVC 拦截器项目是一个典型的 Web 应用开发示例,它利用 SpringMVC 框架中的拦截器(Interceptor)机制来实现特定的功能,如权限控制、日志记录、性能统计等。SpringMVC 是 Spring 框架的一部分,专为构建基于 ...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复代码...
- 多个拦截器按照注册顺序形成一个链,每个拦截器的`preHandle`方法按顺序执行,`postHandle`和`afterCompletion`则按后进先出的顺序执行。 6. **应用场景** - 权限验证:在处理请求前检查用户是否已登录或拥有...
SpringMVC提供了一个名为`CharacterEncodingFilter`的过滤器,用于解决HTTP请求中的乱码问题。该过滤器通常被配置在`web.xml`文件中,或者通过Spring的配置类来配置。通过设置`CharacterEncodingFilter`的`encoding`...
在其中,可以创建一个或多个`<mvc:interceptor>`子元素,每个子元素代表一个拦截器。需要指定拦截哪些请求路径,以及对应的拦截器类。 6. **自定义拦截器** 自定义拦截器需要实现Spring MVC提供的...
在企业级开发中,SpringMVC 是一个广泛使用的框架,用于构建高效、模块化和可测试的 Web 应用程序。本实验报告将探讨如何利用 SpringMVC 的拦截器(Interceptor)来实现用户登录权限验证,确保只有已登录的用户才能...
综上所述,本项目是一个适合初学者了解和实践SpringMVC拦截器功能的小程序。通过学习和实践,你可以掌握如何使用拦截器实现登录验证和安全退出,同时加深对Intelli IDEA的使用理解。在实际应用中,拦截器常用于权限...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复编写...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的任务。它提供了一种AOP(面向切面编程)的方式,让我们可以全局地处理请求,如日志记录、权限验证、性能...
Spring MVC支持多个拦截器组成一个拦截器链,每个拦截器的`preHandle()`方法都会按顺序执行,只有当所有拦截器都返回true时,请求才会继续被处理。如果有一个返回false,请求处理将被中断。 7. **最佳实践** - ...
在SpringMVC中,拦截器(Interceptor)是一个重要的概念,用于在实际处理请求之前和之后执行一些预处理或后处理逻辑。这些逻辑可以包括权限检查、日志记录、性能统计等。 ### 一、SpringMVC 拦截器的定义 ...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,它允许我们在请求处理前后执行自定义逻辑,如权限检查、日志记录、性能监控等。本文将深入探讨如何使用注解来自定义Spring MVC的拦截器。 首先,...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。在本场景中,我们探讨的是如何利用拦截器来实现登录验证功能,确保只有经过身份验证的用户才能访问...
SpringMVC框架下对限定时间拦截(适用于初学者)
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
如果这个方法返回 `true`,则继续调用下一个拦截器的 `preHandle()` 方法,直到所有拦截器的 `preHandle()` 都执行完毕。接着,SpringMVC 将调用目标控制器处理请求。最后,从最后一个拦截器开始,按相反的顺序调用 ...
拦截器是Spring MVC中的一个关键概念,它允许在请求处理前后执行一些预处理和后处理逻辑。例如,实现用户权限检查、日志记录、性能统计等功能。Spring MVC的HandlerInterceptor接口提供了preHandle、postHandle和...
SpringMVC 拦截器(HandlerInterceptor)是 SpringMVC 框架中的一个重要组成部分,它在请求处理之前、之后以及视图渲染之前执行,提供了预处理和后处理的功能。这个入门实例是为了帮助开发者理解如何在实际项目中...
至此,你已经创建了一个基本的登录认证拦截器,并将其集成到了SpringMVC应用中。当用户尝试访问受保护的资源时,拦截器会检查用户是否已登录,如果未登录则重定向到登录页面。这是一种常见的安全实践,可以防止未经...