springmvc sessionfilter 登录过滤器

1.在web.xml中配置

 1 <!-- sessionfilter -->
 2
 3 <filter>
 4     <filter-name>sessionFilter</filter-name>
 5     <filter-class>com.juin.filter.SessionFilter</filter-class>
 6 </filter>
 7
 8 <filter-mapping>
 9     <filter-name>sessionFilter</filter-name>
10     <url-pattern>/*</url-pattern>
11 </filter-mapping>
12
13 <!--以上截止sessionfilter -->

2.创建SessionFilter类

 1 package com.juin.filter;
 2
 3 import java.io.IOException;
 4 import javax.servlet.FilterChain;
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8
 9 import org.springframework.http.HttpStatus;
10 import org.springframework.web.filter.OncePerRequestFilter;
11
12 public class SessionFilter extends OncePerRequestFilter {
13     @Override
14     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
15             throws ServletException, IOException {
16
17         // 不过滤的uri
18         String[] notFilter = new String[] { "/user/toUser", "/login", "user/toMain" };
19
20         // 请求的uri
21         String uri = request.getRequestURI();
22         // 是否过滤
23         boolean doFilter = true;
24         for (String s : notFilter) {
25             if (uri.indexOf(s) != -1) {
26                 // 如果uri中包含不过滤的uri,则不进行过滤
27                 doFilter = false;
28                 break;
29             }
30         }
31
32         if (doFilter) {
33             // 执行过滤
34             // 从session中获取登录者实体
35             Object obj = request.getSession().getAttribute("temp_user");
36             if (null == obj) {
37                 boolean isAjaxRequest = isAjaxRequest(request);
38                 if (isAjaxRequest) {
39                     response.setCharacterEncoding("UTF-8");
40                     response.sendError(HttpStatus.UNAUTHORIZED.value(), "您已经太长时间没有操作,请刷新页面");
41                     return;
42                 }
43                 response.sendRedirect("../user/toUser");
44                 return;
45             } else {
46                 // 如果session中存在登录者实体,则继续
47                 filterChain.doFilter(request, response);
48             }
49         } else {
50             // 如果不执行过滤,则继续
51             filterChain.doFilter(request, response);
52         }
53     }
54
55     /**
56      * 判断是否为Ajax请求 <功能详细描述>
57      *
58      * @param request
59      * @return 是true, 否false
60      * @see [类、类#方法、类#成员]
61      */
62     public static boolean isAjaxRequest(HttpServletRequest request) {
63         String header = request.getHeader("X-Requested-With");
64         if (header != null && "XMLHttpRequest".equals(header))
65             return true;
66         else
67             return false;
68     }
69 }

时间: 2024-09-30 15:35:27

springmvc sessionfilter 登录过滤器的相关文章

基于springMVC实现登录过滤器

此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 一. 准备工作 1. 点击此下载相关文件,并把文件放到 ims 工程对应的文件夹下 二. 相关文件介绍 1. LoginFilter.java:登录过滤器,保证每次的url访问都对session进行验证 package com.ims.web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet

springmvc中登录过滤器使用

  前言 一般的javaWeb项目中我们肯定会使用过滤器来实现对一些请求的过滤,通过过滤来实现对一些请求参数的设置和校验,比如我们比较熟悉的CharacterEncodingFilter就是一个字符编码的过滤器,小编今天就filter实现拦截登录的过程做一个简单的演示.    预期效果     一般当我们访问某个页面时,如果没有登录,则需要跳转到登录页面,登陆后在跳转到主页面. 实现代码     主要通过实现Servlet的Filter接口即可,主要代码如下,其中为了防止静态资源.登录页面.登录

Java Web之简单的登录过滤器实现方法

过滤过滤,实际就是把需要和不需要的东西分开! 今天来说道说道我们程序中的‘登录过滤器’ ,首先我们看看一下面的问题: 1.“登录过滤器”是干什么用的? 1)“登录过滤器”就是为了防止在用户没有登录的情况下来访问我们的网站. 2)举例:main.html 这个网页是需要通过login.html这个网页登录后才可以访问的,现在有一个用户没有登录,直接访问main.html成功了.那么,这样的网站是不是觉得不安全呢?用户不用登录随随便便就访问了.so,we have to need a filter.

基于Springmvc的登录权限拦截器

1.什么是拦截器 拦截器是指通过统一拦截从浏览器发往服务端的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证问题等) 2.拦截器的基本工作原理 springmvc可以通过配置过滤器来解决乱码问题 拦截器的工作原理和过滤器非常相似 3.实现拦截器 (1)编写拦截器类实现HandlerInterceptor接口 (2)将拦截器注册进Springmvc框架中 4.拦截器的方法介绍 (1)preHandle方法,在请求被处理之前进行调用(返回值:表示我们是否需要将当前的请求拦

配置登录过滤器

用途:进入页面时判断用户是否登录,如果没有登录返回某个页面(如登录界面). 代码:web.xml <filter> <filter-name>onlineFilter</filter-name> <filter-class>com.***.***.OnlineFilter</filter-class> <!--  项目中的类,***改为自己项目的包命  --> </filter> <filter-mapping>

springmvc字符编码过滤器对于中文get请求乱码问题的解决方法

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

java SpringMVC Filter登录拦截器

SpringMVC框架是一个非常强大的java web框架,目前最主流的也是spring mvc的框架今天我们学习下springMVCd的登录拦截器Filter 首先呢,SpringMVC具有统一的入口DIspatcherServlet,所有请求都会通过DIspatcherServlet来进行处理 dispatcherServlet是前置控制器,配置在web.xml中,主要是用来拦截对应的请求,然后将请求根据对应的规则发送到Controller来进行处理 首先在web.xml中进行配置拦截请求

SpringMVC配置字符过滤器的两种方式

有时候使用SpringMVC框架提交表单时会出现中文乱码,以下是我亲自试验过的配置字符过滤器的两种: 1.在web.xml中配置 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>orgspringframeworkwebfilterCharacterEncodingFilter</filter-class> <init-param> &

Shiro+easyUI+SpringMVC实现登录认证

??最近在做一个小项目,其中认证这块使用shiro+SpringMVC+easyUI,因为easyUI在提交数据的时候使用的是ajax的异步提交,所以shiro在处理数据的时候需要重写FormAuthenticationFilter的相关方法,所以在此记录下实现的过程,以供大伙参考. ??本文只给出核心代码,完整代码可去本人github上查看 https://github.com/q279583842q/SRM.git ShiroLoginFilter ??因为shiro默认的处理验证的方式是验