springmvc sessionfilter 登录过滤器
1.在web.xml中配置
<!-- sessionfilter --> <filter>
<filter-name>sessionFilter</filter-name>
<filter-class>com.juin.filter.SessionFilter</filter-class>
</filter> <filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!--以上截止sessionfilter -->
2.创建SessionFilter类
package com.juin.filter; import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.http.HttpStatus;
import org.springframework.web.filter.OncePerRequestFilter; public class SessionFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException { // 不过滤的uri
String[] notFilter = new String[] { "/user/toUser", "/login", "user/toMain" }; // 请求的uri
String uri = request.getRequestURI();
// 是否过滤
boolean doFilter = true;
for (String s : notFilter) {
if (uri.indexOf(s) != -1) {
// 如果uri中包含不过滤的uri,则不进行过滤
doFilter = false;
break;
}
} if (doFilter) {
// 执行过滤
// 从session中获取登录者实体
Object obj = request.getSession().getAttribute("temp_user");
if (null == obj) {
boolean isAjaxRequest = isAjaxRequest(request);
if (isAjaxRequest) {
response.setCharacterEncoding("UTF-8");
response.sendError(HttpStatus.UNAUTHORIZED.value(), "您已经太长时间没有操作,请刷新页面");
return;
}
response.sendRedirect("../user/toUser");
return;
} else {
// 如果session中存在登录者实体,则继续
filterChain.doFilter(request, response);
}
} else {
// 如果不执行过滤,则继续
filterChain.doFilter(request, response);
}
} /**
* 判断是否为Ajax请求 <功能详细描述>
*
* @param request
* @return 是true, 否false
* @see [类、类#方法、类#成员]
*/
public static boolean isAjaxRequest(HttpServletRequest request) {
String header = request.getHeader("X-Requested-With");
if (header != null && "XMLHttpRequest".equals(header))
return true;
else
return false;
}
}
3.欢迎大家➕我微信一起探讨,微信号:kj19960106
springmvc sessionfilter 登录过滤器的更多相关文章
- springmvc中登录过滤器使用
前言 一般的javaWeb项目中我们肯定会使用过滤器来实现对一些请求的过滤,通过过滤来实现对一些请求参数的设置和校验,比如我们比较熟悉的CharacterEncodingFilter就是一个字符编 ...
- 基于springMVC实现登录过滤器
此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 一. 相关文件介绍 1. LoginFilter.java:登录过滤器,保证每次的url访问都对s ...
- Spring MVC 架构的java web工程如何添加登录过滤器
发布到外网的web工程必须添加登录过滤器来阻挡一些非法的请求,即只有登录的用户才能对web工程进行请求,否则无论请求什么资源都需要调整到登录页面进行登录操作.这时就需要用到过滤器,其实非常简单,只需要 ...
- Asp.Net MVC 自定义登录过滤器
1.新建类BaseController用于统一所有控制器继承扩展,方便扩展登录等过滤器.示例如下: using CloudWave.JustBeHere.JBH_H5.Controllers.Attr ...
- Java丨简单的登录过滤器实现方法
过滤过滤,实际就是把需要和不需要的东西分开! 今天来说道说道我们程序中的‘登录过滤器’ ,首先我们看看一下面的问题: 1.“登录过滤器”是干什么用的? 1)“登录过滤器”就是为了防止在用户没有登录的情 ...
- 详解springmvc控制登录用户session失效后跳转登录页面
springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml <session-config> <session-timeo ...
- .NET MVC中登录过滤器拦截的两种方法
今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...
- Spring4+SpringMVC+MyBatis登录注册详细
项目结构: package com.mstf.controller; import org.springframework.stereotype.Controller; import org.spri ...
- 基于Springmvc的登录权限拦截器
1.什么是拦截器 拦截器是指通过统一拦截从浏览器发往服务端的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证问题等) 2.拦截器的基本工作原理 springmvc可以通过配 ...
随机推荐
- adb命令集锦
adb 是什么? adb工具即Android Debug Bridge(安卓调试桥) tools.它就是一个命令行窗口,用于电脑端与模拟器或者真实设备交互. 常用操作: 把文件发送到android设备 ...
- RTX任务管理
默认情况下用户创建的任务栈大小是由参数Task stack size决定的. 如果觉得每个任务都分配同样大小的栈空间不方便的话,可以采用自定义任务栈的方式创建任务.采用自定义方式更灵活 ...
- thinkcmf 忘记后台登陆密码的解决办法
thinkcmf 忘记密码 或者 密码错误 如何修改后台登陆密码? 直接在后台登陆控制器里输入 dump(cmf_password('123456')); 参考文件路径 app\admin\contr ...
- J.U.C
- php操作redis案例
<?php //实例化 $redis = new Redis(); //连接服务器 //默认端口是6379,可不写 $redis->connect( ...
- 13.vue组件
vue组件(一) 组件嵌套: 1.全局嵌套: <!doctype html> <html> <head> <meta charset="utf-8& ...
- Water Buying
Water Buying time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- HR在ERP实施过程中的作用
ERP实施涉及到部门职责.个人职责的改变,在实施过程中HR有着不可估量的作用: 实施制度设计 包括如何对实施人员的激励,对实施人员进行合理的岗位职责调整: 某些企业在实施ERP时自项目经理到关键用户都 ...
- 页面初始化document.body.clientWidth大小变化
目前:原因不明 初步判断:设置字体大小前图片加载失败! 结果:等待验证
- day12 十二、开放封闭、装饰器
一.nonlocal关键词 # global # num = # def fn(): # global num # L>G 将局部的名字与全局统一 # num = # fn() # print( ...