- 浏览: 1068126 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
本文基于Spring MVC 注解,让Spring跑起来。
未登录,不允许访问background文件夹内的页面,那如何判断是否登录呢?background是关键目录,每个操作该目录的人都需要写在日志表中,如何实现呢?拦截器是实现方案之一。
(1) 在com.geloin.spring.interceptor包中添加SystemInterceptor,并使其继承HandlerInterceptor
(2) 修改context-dispatcher.xml,让spring管理拦截器
【转载地址】
http://blog.csdn.net/geloin/article/details/7537070
未登录,不允许访问background文件夹内的页面,那如何判断是否登录呢?background是关键目录,每个操作该目录的人都需要写在日志表中,如何实现呢?拦截器是实现方案之一。
(1) 在com.geloin.spring.interceptor包中添加SystemInterceptor,并使其继承HandlerInterceptor
/** * * @author geloin * @date 2012-3-27 下午2:29:35 */ package com.geloin.spring.interceptor; import java.io.PrintWriter; import java.util.Iterator; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Repository; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.embest.ruisystem.form.SystemLoggerForm; import com.embest.ruisystem.form.SystemUserForm; import com.embest.ruisystem.service.SystemLoggerService; import com.embest.ruisystem.util.Constants; import com.embest.ruisystem.util.DataUtil; /** * * @author geloin * @date 2012-3-27 下午2:29:35 */ @Repository public class SystemInterceptor extends HandlerInterceptorAdapter { @Resource(name = "systemLoggerService") private SystemLoggerService systemLoggerService; /* * (non-Javadoc) * * @see * org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle * (javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse, java.lang.Object) */ @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 后台session控制 String[] noFilters = new String[] { "login.html", "veriCode.html", "index.html", "logout.html" }; String uri = request.getRequestURI(); if (uri.indexOf("background") != -1) { boolean beFilter = true; for (String s : noFilters) { if (uri.indexOf(s) != -1) { beFilter = false; break; } } if (beFilter) { Object obj = request.getSession().getAttribute( Constants.LOGINED); if (null == obj) { // 未登录 PrintWriter out = response.getWriter(); StringBuilder builder = new StringBuilder(); builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">"); builder.append("alert(\"页面过期,请重新登录\");"); builder.append("window.top.location.href=\""); builder.append(Constants.basePath); builder.append("/background/index.html\";</script>"); out.print(builder.toString()); out.close(); return false; } else { // 添加日志 String operateContent = Constants.operateContent(uri); if (null != operateContent) { String url = uri.substring(uri.indexOf("background")); String ip = request.getRemoteAddr(); Integer userId = ((SystemUserForm) obj).getId(); SystemLoggerForm form = new SystemLoggerForm(); form.setUserId(userId); form.setIp(ip); form.setOperateContent(operateContent); form.setUrl(url); this.systemLoggerService.edit(form); } } } } Map paramsMap = request.getParameterMap(); for (Iterator<Map.Entry> it = paramsMap.entrySet().iterator(); it .hasNext();) { Map.Entry entry = it.next(); Object[] values = (Object[]) entry.getValue(); for (Object obj : values) { if (!DataUtil.isValueSuccessed(obj)) { throw new RuntimeException("有非法字符:" + obj); } } } return super.preHandle(request, response, handler); } }
(2) 修改context-dispatcher.xml,让spring管理拦截器
<mvc:interceptors> <bean class="com.geloin.spring.interceptor.SystemInterceptor" /> </mvc:interceptors>
【转载地址】
http://blog.csdn.net/geloin/article/details/7537070
发表评论
-
Spring MVC 3.1新特性 生产者、消费者请求限定
2015-06-15 07:42 731参考地址: http://www.iteye.com/to ... -
CSRF TOKEN
2015-02-14 18:02 1153package com.uncle5.pubrub.web.c ... -
Spring MVC Controller单例陷阱
2014-06-27 08:51 687Spring MVC Controller默认是 ... -
[Spring] Hessian权限认证,加密前面
2014-03-06 09:52 1621Hessian的一些基本简介已经在上一节已经全部介绍了,上一节 ... -
FieldRetrievingFactoryBean 和 MethodInvokingFactoryBean
2014-01-09 18:36 1025spring提供了filed的值注入和method的返回值注入 ... -
Spring中ApplicationContext的事件机制(二 内定事件)
2014-01-09 11:08 12348在Spring中已经定义了五个标准事件,分别介绍如下: 1) ... -
当spring 容器初始化完成后执行某个方法 .
2014-01-08 17:40 1447在某些应用中,我们希望,当spring 容器将所有的bea ... -
spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2013-09-12 10:43 1221spring mvc处理方法支持如下的返回方式:ModelA ... -
JSR-303
2013-09-12 00:22 938JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
EHCACHE分布式缓存
2013-09-06 17:26 1322从1.2版本开始,Ehcache可 ... -
springMVC+freemarker整合
2013-09-06 16:39 1440springMVC整合大家都比较熟悉了吧主要有以下几个步骤: ... -
Spring MVC 学习笔记 Viewresol和View
2013-09-06 15:34 935Spring MVC使用ViewResolver来根据cont ... -
Spring的PropertyPlaceholderConfigurer应用
2013-09-06 15:04 3229Spring 利用PropertyPlaceholderCon ... -
SpringSecurity3_Logout
2013-08-22 16:07 2589Logout¶•退出登录的链接 <a href=&quo ... -
spring的default-lazy-init参数 .
2013-04-23 20:08 986spring在启动的时候,会默认加载会默认加载整个对象实例图, ... -
Spring MVC 如何防止XSS、SQL注入攻击
2013-04-16 15:40 1689在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问 ... -
Spring JMS
2013-01-08 10:48 989http://blog.csdn.net/shiqiang12 ... -
给spring jdbctemplate加上一层“绮丽外衣”-动态SQL&&SQL语句以文件存放
2013-01-07 16:00 3313给spring jdbctemplate加上一层“华丽外衣”- ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作 .
2013-01-07 14:54 1192NamedParameterJdbcTemplate内部包含了 ... -
cron表达式(quartz中时间表达式)
2012-12-20 15:54 1021http://sosuny.iteye.com/blog/46 ...
相关推荐
综合以上,本文通过具体的代码示例和技术细节深入讲解了如何使用Spring MVC拦截器实现session控制,包括如何监听session的创建和销毁,如何实现用户的重复登录控制以及如何在拦截器中处理未登录用户的访问权限问题,...
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现权限检查、日志记录、性能统计等多种功能。本压缩包“spring mvc 拦截器获取请求...
总结一下,本篇文章介绍了如何在Spring MVC 3中结合DWZ前端框架实现一个拦截器,用于检测session是否过期。通过拦截器,我们能够在每次请求前检查session状态,及时通知用户重新登录,从而提高了系统的安全性。同时...
在本文中,我们将深入探讨如何在...拦截器和过滤器的选择取决于具体需求,拦截器更适合Spring MVC的控制流,而过滤器则适用于更底层的HTTP请求处理。后续使用token认证的方式将进一步提升系统的可扩展性和安全性。
在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前、之后以及视图渲染之后执行一些额外的操作。拦截器通过实现`HandlerInterceptor`接口或者继承`HandlerInterceptorAdapter`...
- 如果需要共享拦截器逻辑,可以考虑使用Spring的`@Component`和`@Order`注解,结合`@EnableWebMvc`和`WebMvcConfigurerAdapter`来实现组件化和定制化的拦截器管理。 7. **总结** SpringMVC的Session拦截器是提高...
这篇文章将深入探讨Spring MVC拦截器的作用、实现方式以及其在实际应用中的使用场景,并对比拦截器与过滤器的区别。 首先,让我们来看看如何实现一个Spring MVC拦截器: 1. **编写拦截器类**:你需要创建一个类并...
Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入探讨如何使用Spring Boot、JPA连接数据库以及设置登录拦截器来拦截指定路径。 首先,我们需要理解Spring Boot中的JPA(Java ...
在Spring Boot应用中,拦截器(Interceptor)是Spring MVC框架的一部分,用于在请求处理之前、之后或在实际处理过程中执行一些预定义的任务。这通常包括权限检查、日志记录、性能监控等。自定义拦截器可以帮助我们更...
Spring MVC的核心组件包括DispatcherServlet、Controllers、Models、Views以及各种拦截器和转换器。 **添加功能实现步骤** 1. **配置Spring MVC** - 首先,你需要在`web.xml`中配置DispatcherServlet,这是Spring ...
本项目是一个基于Spring 4的Spring MVC实现,内含登录功能和拦截器,可以直接运行,为开发者提供了一个快速开发的基础模板。 首先,让我们详细了解一下Spring MVC的核心概念: 1. **DispatcherServlet**:它是...
Spring MVC 国际化实现详解 在 Spring MVC 框架中,实现国际化是一项非常重要的任务。国际化可以让我们的应用程序适应不同语言和地区,提高应用程序的可读性和可用性。本文将详细介绍如何使用 Spring MVC 实现国际...
本文将详细介绍如何在Spring MVC中配置一个简单的拦截器来实现用户Session的存在性检查,以及当Session不存在时,自动跳转到登录页面。 #### 二、XML配置详解 拦截器可以通过XML文件进行配置。下面的示例展示了...
登录拦截器在 Spring MVC 中是实现权限控制的一种方式。通常,拦截器会在控制器方法执行前进行拦截,检查请求上下文中的某些信息,如 Session 中的用户信息。如果用户未登录或权限不足,拦截器会阻止请求继续执行,...
4. SpringMVC中的拦截器实现登录控制的流程:首先配置拦截器,指定需要拦截的URL路径和排除的URL路径(如登录页面和静态资源路径等)。拦截器的实现类中,preHandle方法中首先检查请求的URI是否在排除的URL列表中,...
本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...
此外,如果需要在全局范围内改变应用的`Locale`,可以创建一个自定义的`HandlerInterceptor`,在拦截器中处理`Locale`的切换逻辑。这样,当用户请求特定的URL时,系统会自动更新`Locale`,并重定向到原来的请求URL,...
在Java Web开发中,特别是使用SpringMVC框架时,管理...总之,通过SpringMVC拦截器来实现对session是否过期的监听,是一个既灵活又强大的解决方案,对于需要精细控制Web应用会话的开发者来说,是一个必不可少的技术点。
总结起来,这个"Spring MVC注解项目实例"涵盖了Spring MVC框架的核心元素,包括注解驱动的控制器、拦截器的使用,以及数据库操作。它为初学者提供了一个动手实践的机会,帮助他们快速掌握Spring MVC的开发技巧。
9. **拦截器**:`HandlerInterceptor` 接口可以用来实现请求的预处理和后处理,例如登录检查、性能监控等。 10. **验证**:Spring MVC 结合 `Hibernate Validator` 提供了表单验证功能,可以使用 `@Valid` 和 `...