spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)
public class LoginedFilter implements Filter {
/**
* 排除的地址
*/
private Map<String, Boolean> ignore;
/**
* 排除的后缀
*/
private Map<String, Boolean> ignoreExt;
/**
* <b>功能描述:</b>实现接口,登录验证<br>
* <b>修订记录:</b><br>
*/
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
String a = request.getRequestURI();
String ss = request.getRequestURI().replaceFirst(request.getContextPath(), "");
String address = request.getRequestURI().replaceFirst(request.getContextPath(), "").substring(1);
String ext = "";
if(address.lastIndexOf(".") > 0) {
ext = address.substring(address.lastIndexOf(".") + 1);
}
if(address.indexOf("/") != -1) {
address = address.substring(address.indexOf("/") + 1, address.length());
}
if(null == this.ignore.get(address) && null == this.ignoreExt.get(ext)) {
HttpSession session = request.getSession();
// 如果session为空,则跳转到登录页面。
// if(null == session.getAttribute("user") || session.isNew()) {
response.sendRedirect(request.getContextPath()+"/index");
return ;
//}
}
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig config) throws ServletException {
// 初始化排除列表
if(null == this.ignore) {
this.ignore = new HashMap<String, Boolean>();
}
if(null == this.ignoreExt) {
this.ignoreExt = new HashMap<String, Boolean>();
}
// 读取web.xml中的配置列表,装入Map对象,排除内容为Key,Value为true。
String ignoreConfig = config.getInitParameter("ignore");
String[] ignoreConfigArray = ignoreConfig.split(",");
for(String string : ignoreConfigArray) {
this.ignore.put(string.trim(), true);
}
String ignoreExtConfig = config.getInitParameter("ignoreExt");
String[] ignoreExtConfigArray = ignoreExtConfig.split(",");
for(String string : ignoreExtConfigArray) {
this.ignoreExt.put(string.trim(), true);
}
}
@Override
public void destroy() {
// 销毁时清除排除列表
this.ignore.clear();
this.ignore = null;
this.ignoreExt.clear();
this.ignoreExt = null;
}
//下面是web.xml 配置
<filter>
<filter-name>urlfilter</filter-name>
<filter-class>com.payease.chains.order.common.Filter.LoginedFilter</filter-class>
<init-param>
<description>排除过滤的前缀</description>
<param-name>ignore</param-name>
<param-value>index,chains,main,fund,order,fundDetail,orderList,logout,OmsUpload,merchant,upload,main1,main2</param-value>
</init-param>
<init-param>
<description>排除过滤的后缀</description>
<param-name>ignoreExt</param-name>
<param-value>js,css,jpg,gif,png,bmp,jpeg,ico</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>urlfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>urlfilter</filter-name>
<url-pattern>/**</url-pattern>
</filter-mapping>
spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)的更多相关文章
- nodejs ejs 请求路径和静态资源文件路径
/XXX 会跳转到 http://域名:端口/XXX ./XXX 会跳转到 当前路径+/XXX XXX(../XXX) 会跳转到 当前路径父级+XXX
- Spring Boot整合Servlet,Filter,Listener,访问静态资源
目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...
- spring boot 2.x拦截器导致静态资源404终极解决办法
首先添加application文件static路径,我的是yml文件 spring: mvc: static-path-pattern: /static/**然后注册拦截器类如下方法; @Overri ...
- spring mvc controller接收请求值及controller之间跳转及传值
spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...
- springMVC请求路径 与实际资源路径关系
个人理解: 请求路径可以分为两部分:不通过springmvc转发的url:通过springmvc转发的url: 通过特定的配置,告诉springmvc哪些url需要从springmvc处理,处理后再跳 ...
- Thymeleaf静态资源引入方式及公共页面代码抽取
静态资源引入 Thymeleaf模板引擎url问题,要用如下的方式写,确保在任何情况下都能访问到 <!-- Bootstrap core CSS --> <link href=&qu ...
- 如果在springboot中设置了 修改了默认页面的指向 使用thymleaf模板 而请求不到静态资源 可能是
@Configurationpublic class DefaultView extends WebMvcConfigurerationSupport { @Override public void ...
- Spring的MVC控制器返回ModelMap时,会跳转到什么页面?
控制器中的方法如下: @RequestMapping("/person/personDisplay") public ModelMap defaultHandler() { Sys ...
- ASP.NET - (Session)后台登陆时,判断是不是已经登陆,如果不是,跳转回登陆页
admin(小写):用户输入的账户. password(小写):用户输入的密码. 1.先将用户名和密码,存储到Session会话中. Session["Admin"] = admi ...
随机推荐
- 搜索框+ 定时器+Bug解决
定时器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 使用比特币轻量钱包Electrum
一.选择对应的钱包安装程序 浏览器打开 https://electrum.org/#download 选择windwos版本的安装程序 点击下载,并安装 二.运行Electrum的 testnet版本 ...
- 牛客小白月赛12 H 华华和月月种树 (离线dfs序+线段树)
链接:https://ac.nowcoder.com/acm/contest/392/H 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...
- zencart清空产品商品实用命令
TRUNCATE TABLE categories; TRUNCATE TABLE categories_description;TRUNCATE TABLE meta_tags_categories ...
- Python Module模块
模块 https://docs.python.org/zh-cn/3/tutorial/modules.html 模块的概念被高级语言广泛使用. Python的定义 一个包括Python定义和语句的文 ...
- TOMCAT控制台日志输出到指定文件中
1 .修改startup.bat第42行 call "%EXECUTABLE%" start %CMD_LINE_ARGS% 为 call "%EXECUTABLE%&q ...
- 如何判断元素是否在可视区域ViewPort
个性签名: 生如夏花,逝如冬雪:人生如此,何悔何怨. 前言: 经常需要计算元素的大小或者所在页面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop这几个 ...
- (web)个人项目(挖宝网)
前台:使用bootstrap. 后台:使用layui. 数据库:mysql 下载地址:https://github.com/oukele/wabaowangDemo(数据库文件忘记上传,我在展示功能结 ...
- BSGS 扩展大步小步法解决离散对数问题 (BZOJ 3239: Discrete Logging// 2480: Spoj3105 Mod)
我先转为敬? orz% miskcoo 贴板子 BZOJ 3239: Discrete Logging//2480: Spoj3105 Mod(两道题输入不同,我这里只贴了3239的代码) CODE ...
- vue环境搭建及简单接触
1.安装node环境 首先官网安装nodejs,下载地址https://nodejs.org/en/ 很多情况下,npm i 命令安装的包都是要科学上网的,或者就是国际网,下载速度很慢,不过有个淘宝镜 ...