1. 程式人生 > >j2ee過濾器實現的主要代碼

j2ee過濾器實現的主要代碼

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過濾器實現的主要代碼