zoukankan      html  css  js  c++  java
  • j2ee过滤器实现的主要代码

    首先实现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>
  • 相关阅读:
    【OS_Windows】用微pe制作启动盘安装操作系统
    技术列表
    RPC 的概念模型与实现解析
    asp.net站点阻止某个文件夹或者文件被浏览器访问
    常用插件
    安全相关
    asp.net mvc 请求处理流程,记录一下。
    接口的显示实现和隐式实现
    值类型与引用类型的简单测试,没有太多的理论,一目了然。
    IEnumerable、GetEnumerator、IEnumerator之间的关系。
  • 原文地址:https://www.cnblogs.com/ShaoXin/p/6896545.html
Copyright © 2011-2022 走看看