配置登录过滤器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置登录过滤器相关的知识,希望对你有一定的参考价值。
用途:进入页面时判断用户是否登录,如果没有登录返回某个页面(如登录界面)。
代码:web.xml
<filter>
<filter-name>onlineFilter</filter-name>
<filter-class>com.***.***.OnlineFilter</filter-class> <!-- 项目中的类,***改为自己项目的包命 -->
</filter>
<filter-mapping>
<filter-name>onlineFilter</filter-name>
<url-pattern>*.html</url-pattern> <!-- 过滤那些请求(后缀为html的) -->
</filter-mapping>
<filter-mapping>
<filter-name>onlineFilter</filter-name>
<url-pattern>*.jsp</url-pattern> <!-- 过滤那些请求(后缀为jspl的) -->
</filter-mapping>
OnlineFilter.java
package com.cyimayi.filter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class OnlineFilter extends HttpServlet implements javax.servlet.Filter { //实现javax.servlet.Filter接口
private static final long serialVersionUID = 1L;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();
String[] arr = {"/login.html", "/main.jsp", "/alipay/alipayapi.jsp", "/alipay/notify_url.jsp", "/alipay/return_url.jsp"};
//放行的页面,项目名开始(如www.abc.com/abc/aa.jsp, abc为项目名的话就填/aa.jsp)
List<String> temp = Arrays.asList(arr); //将数据转成list
if(!temp.contains(req.getServletPath())) { // 对页面进行放行
if (session.getAttribute("admin") == null) { //判断用户是否登录,此处可为自己的其他条件。
res.sendRedirect("../login.html"); //重定向
return;
}
}
/*
* chain.doFilter(request, response);
* 他的作用是将请求转发给过滤器链上下一个对象。这里的下一个指的是下一个filter,如果没有filter那就是你请求的资源。
* 一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起
*/
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) {
//System.out.println("OnlineFilter initialized.");
}
public void destroy() {
//System.out.println("OnlineFilter destroied");
}
}
以上是关于配置登录过滤器的主要内容,如果未能解决你的问题,请参考以下文章