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 ...
随机推荐
- linux基础—课堂随笔04_文件查找和压缩
文件查找和压缩 文件查找 1.locate 这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进 ...
- C++——函数
C++基础函数 (一)函数的参数传递 在没有调用函数之前,函数的形参并没有占据实际的空间. 1.值传递 传入的仅仅只是一个值--就是把实参的值赋给形参.形参自己会在内存中开辟一个空间! 2.传引用 这 ...
- “联邦对抗技术大赛”9月开战 微众银行呼唤开发者共同“AI创新”
“联邦对抗技术大赛”9月开战 微众银行呼唤开发者共同“AI创新” 从<第五元素>中的智能系统到<超体>中的信息操控,在科幻电影中人工智能已经发展到了极致.而在现实中,目前 ...
- Java语言基础(15)
1 综合案例 Demo1 设计一个父类Shape(图形类),抽象类常量:public static final double PI = 3.14;抽象方法:void show():输出每一个属性值vo ...
- PHP代码执行流程
怎么样?有点了解了么.说实话,单看这个,我本人是有点懵的,不过,不要怕.咱们来慢慢地看下. 首先,在网上找的信息说PHP代码执行的顺序是这样的,第一步是词法分析,第二步是语法分析,第三步是转化为opc ...
- linux抓取usb包设置usbmon
- maven命令创建web骨架项目
maven命令创建web骨架项目有以下两种方式: mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -Darchetype ...
- Cobbler——无人值守安装多种版本多种配置操作系统
Cobbler Web 图形界面也能实现类似的导入功能,可以参见下一节举了一个Cobbler Web的用法: cobbler 添加网络同步仓库(Reposync用法)
- phpStudy环境下composer的安装
前言 原来是做php开发的,现在转行前端工程师,因为很久没有接触了,可能会有其他问题,这里简单记录一下,后期遇到什么问题再进行更新~ 话说下载特别慢所以这里给个网盘链接Composer-Setup.e ...
- springboot打包后静态资源webapp文件夹无法打包进去
1.如下图的目录结构 webapp 文件夹和resources 文件夹同级.使用mvn clean install 打包过后项目启动访问,静态资源页面404. 2.原因,springboot 打包时候 ...