最近研究如果用原生的Filter來判別session存在否或者過期否。來跳轉到的頁面實例,下載來展示代碼。
因為顧慮器是每次請求能會進入的,所以可以設置了,進行攔截判斷
1.配置web.xml
<filter> <filter-name>BackEndFilter</filter-name> <filter-class>com.sun.BackFilter</filter-class> </filter> <filter-mapping> <filter-name>BackFilter</filter-name> <url-pattern>/backend/issues/*</url-pattern> <url-pattern>/backend/repairmen/*</url-pattern> <url-pattern>/backend/payment/*</url-pattern> </filter-mapping>
2.新建BackFilter類,實現Filter接口。
package com.xyt.backend;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.xyt.common.Logging;
import com.xyt.common.RedisClient;
import com.xyt.jdbc.entity.Admin;
/**
* 后台管理系統登錄攔截器
*/
public class BackFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//useless
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpSession sess = ((HttpServletRequest)request).getSession();
String ad = sess.getAttribute("admin");
if(ad==null ){
((HttpServletResponse)response).sendRedirect(((HttpServletRequest)request).getContextPath()+"//login");
}else{
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
//useless
}
}
