j2ee過濾器實現的主要代碼
阿新 • • 發佈:2017-05-24
substr generate bsp 如果 攔截 info 用戶 相關信息 web.xml
首先實現Filter接口(該實例是用於判斷session中是否存在用戶)
package com.xinzhi.filter; 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; public class LoginFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 1. 獲取請求資源,截取 String uri = request.getRequestURI(); // /emp_sys/login.jsp // 截取 【login.jsp或login】 String requestPath = uri.substring(uri.lastIndexOf("/") + 1, uri .length());// 2. 判斷: 先放行一些資源:/login.jsp、/login if ("LoginServlet".equals(requestPath) || "login.jsp".equals(requestPath)) { // 放行 chain.doFilter(request, response); } else { // 3. 對其他資源進行攔截 // 3.1 先獲取Session、獲取session中的登陸用戶(loginInfo) HttpSession session = request.getSession(false); // 判斷 if (session != null) { Object obj = session.getAttribute("adminname"); // 3.2如果獲取的內容不為空,說明已經登陸,放行 if (obj != null) { // 放行 uri = requestPath; // chain.doFilter(request, response); } else { // 3.3如果獲取的內容為空,說明沒有登陸; 跳轉到登陸 uri = "jsp/login.jsp"; } } else { // 肯定沒有登陸 uri = "jsp/login.jsp"; } request.getRequestDispatcher(uri).forward(request, response); } } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
然後要在web.xml配置文件中指定相關信息
<filter> <filter-name>filter</filter-name> <filter-class>com.xinzhi.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
j2ee過濾器實現的主要代碼