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>
  • 相关阅读:
    SQLSTATE[HY000] [2002] No such file or directory(转)
    pg_stat_activity各字段的含义
    DedeCMS 后台空白问题
    关于XP和win7 的IIS发布问题
    500错误
    swfupload上传多张照片出现404 错误?(已解决)
    url字符串编码乱码问题
    遮罩层《一》
    Java集合按照索引分页,以及JS数组代码按照索引分页的源码
    填充整个页面
  • 原文地址:https://www.cnblogs.com/ShaoXin/p/6896545.html
Copyright © 2011-2022 走看看