⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginfilter.java

📁 在线考试 考生登陆 查分 管理员管理后台等的 的的的的达到的达到的的的
💻 JAVA
字号:
/* * LoginFilter.java * * */package com.eonline.web;import java.io.*;import javax.servlet.http.*;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/** * * @author * @version */public class LoginFilter implements Filter {        // The filter configuration object we are associated with.  If    // this value is null, this filter instance is not currently    // configured.    private FilterConfig filterConfig = null;        public LoginFilter() {    }        private void doBeforeProcessing(ServletRequest request, ServletResponse response)    throws IOException, ServletException {        if (debug) log("LoginFilter:DoBeforeProcessing");        //        // Write code here to process the request and/or response before        // the rest of the filter chain is invoked.        //                //        // For example, a logging filter might log items on the request object,        // such as the parameters.        //        /*         for (Enumeration en = request.getParameterNames(); en.hasMoreElements(); ) {             String name = (String)en.nextElement();             String values[] = request.getParameterValues(name);             int n = values.length;             StringBuffer buf = new StringBuffer();             buf.append(name);             buf.append("=");             for(int i=0; i < n; i++) {                 buf.append(values[i]);                 if (i < n-1)                     buf.append(",");             }             log(buf.toString());         }         */            }        private void doAfterProcessing(ServletRequest request, ServletResponse response)    throws IOException, ServletException {        if (debug) log("LoginFilter:DoAfterProcessing");        //        // Write code here to process the request and/or response after        // the rest of the filter chain is invoked.        //                //        // For example, a logging filter might log the attributes on the        // request object after the request has been processed.        //        /*        for (Enumeration en = request.getAttributeNames(); en.hasMoreElements(); ) {            String name = (String)en.nextElement();            Object value = request.getAttribute(name);            log("attribute: " + name + "=" + value.toString());                 }         */        //                //        // For example, a filter might append something to the response.        //        /*        PrintWriter respOut = new PrintWriter(response.getWriter());        respOut.println("<P><B>This has been appended by an intrusive filter.</B>");         */    }        /**     *     * @param request The servlet request we are processing     * @param result The servlet response we are creating     * @param chain The filter chain we are processing     *     * @exception IOException if an input/output error occurs     * @exception ServletException if a servlet error occurs     */    public void doFilter(ServletRequest _request, ServletResponse _response,            FilterChain chain)            throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest)_request;//;//如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此request对象构造成HttpServletRequest        HttpServletResponse response = (HttpServletResponse)_response;        String currentURL = request.getRequestURI();//取得根目录所对应的绝对路径:        String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length());  //截取到当前文件名用于比较        HttpSession session = request.getSession(false);          if ((!"/login.jsp".equals(targetURL)) && (!"/register.jsp".equals(targetURL))) {//判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环               if (session == null || session.getAttribute("userItem") == null) {//*用户登录以后需手动添加session                System.out.println("request.getContextPath()=" + request.getContextPath());                response.sendRedirect(request.getContextPath() + "/login.jsp");//如果session为空表示用户没有登录就重定向到login.jsp页面                return;               }          }        //加入filter链继续向下执行        chain.doFilter(request, response);//.调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。    }        /**     * Return the filter configuration object for this filter.     */    public FilterConfig getFilterConfig() {        return (this.filterConfig);    }            /**     * Set the filter configuration object for this filter.     *     * @param filterConfig The filter configuration object     */    public void setFilterConfig(FilterConfig filterConfig) {                this.filterConfig = filterConfig;    }        /**     * Destroy method for this filter     *     */    public void destroy() {    }            /**     * Init method for this filter     *     */    public void init(FilterConfig filterConfig) {                this.filterConfig = filterConfig;        if (filterConfig != null) {            if (debug) {                log("LoginFilter:Initializing filter");            }        }    }        /**     * Return a String representation of this object.     */    public String toString() {                if (filterConfig == null) return ("LoginFilter()");        StringBuffer sb = new StringBuffer("LoginFilter(");        sb.append(filterConfig);        sb.append(")");        return (sb.toString());            }                private void sendProcessingError(Throwable t, ServletResponse response) {                String stackTrace = getStackTrace(t);                if(stackTrace != null && !stackTrace.equals("")) {                        try {                                response.setContentType("text/html");                PrintStream ps = new PrintStream(response.getOutputStream());                PrintWriter pw = new PrintWriter(ps);                pw.print("<html>\n<head>\n<title>Error</title>\n</head>\n<body>\n"); //NOI18N                                // PENDING! Localize this for next official release                pw.print("<h1>The resource did not process correctly</h1>\n<pre>\n");                pw.print(stackTrace);                pw.print("</pre></body>\n</html>"); //NOI18N                pw.close();                ps.close();                response.getOutputStream().close();;            }                        catch(Exception ex){ }        } else {            try {                PrintStream ps = new PrintStream(response.getOutputStream());                t.printStackTrace(ps);                ps.close();                response.getOutputStream().close();;            } catch(Exception ex){ }        }    }        public static String getStackTrace(Throwable t) {                String stackTrace = null;                try {            StringWriter sw = new StringWriter();            PrintWriter pw = new PrintWriter(sw);            t.printStackTrace(pw);            pw.close();            sw.close();            stackTrace = sw.getBuffer().toString();        } catch(Exception ex) {}        return stackTrace;    }        public void log(String msg) {        filterConfig.getServletContext().log(msg);    }        private static final boolean debug = true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -