Spring mvc 拦截器 配置心得
session超过时间自动跳转到登录页面。要求请求的每个url都要进行拦截,当然,js,css这些东西除外。
spring-mvc.xml
<!-- 拦截器配置 -->
<mvc:interceptors>
<!-- session超时 -->
<mvc:interceptor>
<mvc:mapping path="/*/*"/>
<bean class="com.ziyou.platform.interceptor.SessionTimeoutInterceptor">
<property name="allowUrls">
<list>
<!-- 如果请求中包含以下路径,则不进行拦截 -->
<value>/login</value>
<value>/js</value>
<value>/css</value>
<value>/image</value>
<value>/images</value>
</list>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 自定义异常处理,SimpleMappingExceptionResolver这个类可以是个空类,但是要写,方便在java代码里面使用 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.ziyou.platform.interceptor.SessionTimeoutException">redirect:/login</prop>
</props>
</property>
</bean>
/**
* 处理session超时的拦截器
*/
public class SessionTimeoutInterceptor implements HandlerInterceptor{
public String[] allowUrls;//还没发现可以直接配置不拦截的资源,所以在代码里面来排除
public void setAllowUrls(String[] allowUrls) {
this.allowUrls = allowUrls;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2) throws Exception {
String requestUrl = request.getRequestURI().replace(request.getContextPath(), "");
System.out.println(requestUrl);
if(null != allowUrls && allowUrls.length>=1)
for(String url : allowUrls) {
if(requestUrl.contains(url)) {
return true;
}
}
User user = (User) request.getSession().getAttribute("user");
if(user != null) {
return true; //返回true,则这个方面调用后会接着调用postHandle(), afterCompletion()
}else{
// 未登录 跳转到登录页面
throw new SessionTimeoutException();//返回到配置文件中定义的路径
}
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
}
另外,你要在controller中设置session的超时时间
request.getSession().setMaxInactiveInterval(20);//20秒
request.getSession().setAttribute("user", user);
分享到:
相关推荐
Spring MVC 是一款广泛使用的 Java Web 开发框架,它为构建基于模型-视图-控制器(MVC)架构的应用程序提供了一种简洁而有效的方式。Spring 3.0.5 版本的 Spring MVC 提供了丰富的特性和优化,使得开发者能够快速...
6. **拦截器(Interceptor)**:自定义拦截器可以处理通用的预处理和后处理任务,如权限检查、日志记录等。 7. **异常处理**:使用`@ExceptionHandler`注解可以捕获并处理特定类型的异常,提供统一的错误页面。 8....
在实际应用中,SpringMVC 还支持拦截器、异常处理、本地化和主题等功能,可以提供更强大的功能和灵活性。此外,SpringMVC 可以与其他 Spring 模块(如 Spring AOP、Spring Data 等)集成,构建更复杂的业务应用。
3. **Struts拦截器**:学习自定义拦截器,实现业务逻辑的扩展。 4. **Spring DI和AOP**:掌握依赖注入的使用,以及AOP的切面、通知、目标对象等概念。 5. **Spring MVC**:了解Spring提供的另一种MVC实现,与Struts...
Spring的AOP支持使用切面定义拦截器,并在特定的连接点(如方法调用)执行增强操作。 4. **Bean容器**:Spring的Bean容器(ApplicationContext)负责管理应用中的对象,提供对象实例化、初始化、装配以及管理它们...
Struts2是其后续版本,提供了更强大的拦截器(Interceptor)机制和更灵活的配置方式。 **Hibernate框架** 是一个对象关系映射(Object-Relational Mapping,ORM)工具,能够将Java对象与数据库表之间的映射关系自动...
这可能意味着示例会演示如何在Spring应用中集成Struts3,展示MVC设计模式的应用,以及Struts3的动作(Action)、拦截器(Interceptor)和配置文件的使用。 总结来说,这个“spring培训的例子”涵盖了Spring框架的...
SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一...
在实际开发中,还需要根据具体需求进行更复杂的配置,例如添加自定义拦截器、配置数据源、事务管理等。同时,不断实践和学习,深入理解这三个框架的原理和协同工作方式,才能更好地利用S2SH框架开发出高效、稳定的...
它提供了强大的Action类,用于定义业务逻辑,以及Interceptor拦截器,可以灵活地添加额外的功能,如权限验证、日志记录等。 Spring框架则是企业级应用的核心,它负责管理对象的生命周期和依赖关系,实现了IoC...
另一种方法是使用Hibernate插件(`struts2-hibernate-plugin.jar`),它提供了一些预定义的拦截器和结果类型,简化了数据库操作。 6. **测试与调试**:编写测试用例,验证SSH整合是否成功。确保Action能够正确地...
6. **Action调用与结果返回**:在Struts2中,Action的调用通过配置文件中的拦截器链实现,拦截器可以执行预处理和后处理操作。Action的返回结果可以通过配置不同的结果类型(如dispatcher、redirect、chain等)来...
8. **Struts2配置**:在Struts2的配置文件(如`struts.xml`)中,定义Action、结果类型和拦截器栈。这将指定用户请求如何映射到Action,以及Action执行后如何返回结果。 9. **整合测试**:完成配置后,启动服务器,...
- **拦截器**:自定义拦截器可以实现登录检查、权限控制等功能,提高代码复用性。 5. **实战经验** 开发过程中,我们可能会遇到各种问题,如性能优化、安全性考虑、缓存策略等。例如,为了提高性能,可以使用缓存...
2. **AOP**:允许开发者定义方法拦截器,实现非功能性需求,如日志、事务管理等。 3. **Spring MVC**:提供了一种组织Web应用的结构,将业务逻辑、视图和控制器分离。 4. **数据访问**:支持JDBC、ORM(对象关系映射...
Struts2作为MVC框架,其核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptor)等。Action类是业务逻辑的载体,它接收来自控制器的请求,执行相应的操作,并返回一个结果。配置文件用于定义Action与...
10. **部署描述符**:在web.xml中配置Struts2的拦截器和过滤器,确保请求能够被Struts2正确处理。 11. **文件位置**:最后,将applicationContext.xml移动到WEB-INF目录下,这是标准的放置位置,以保护配置文件不被...
在web应用中,我们通常会配置一个`ContextLoaderListener`监听器,以启动Spring的WebApplicationContext,并加载配置文件。如果Spring的配置文件不在默认位置或使用非默认名称,我们需要通过`context-param`来指定...
3. **SpringMVC配置**:配置DispatcherServlet、视图解析器、拦截器等,定义请求映射和处理器。 4. **MyBatis配置**:创建MyBatis的配置文件,包括数据源、SqlSessionFactory、Mapper接口和Mapper XML文件。 5. **...