loginFilter.java

          /**
           * loginFilter.java
           */
          package myFilter;

          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;

          /**
           * 檢查 session 中的 username 內(nèi)容是否為空,為空則沒(méi)有登錄,轉(zhuǎn)發(fā)到登錄頁(yè)面, 如果不為空,則分發(fā)請(qǐng)求。
           * @author wind
           *
           */
          public class loginFilter implements Filter {
           private String onErrorUrl;

           @Override
           public void destroy() {
            // TODO Auto-generated method stub

           }

           @Override
           public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) throws IOException, ServletException {
            // TODO Auto-generated method stub
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;

            HttpSession session = req.getSession();
            String username = (String) session.getAttribute("username");
            boolean flag = true;

            if (username == null) {
             flag = false;
            } else {

            }
            if (flag) {

             /*
              * Causes the next filter in the chain to be invoked, or if the
              * calling filter is the last filter in the chain, causes the
              * resource at the end of the chain to be invoked.
              */
             chain.doFilter(request, response);
            } else {
             /*
              * Forwards a request from a servlet to JSP file on the server.
              */
             req.getRequestDispatcher(onErrorUrl).forward(req, res);
            }
           }

           @Override
           public void init(FilterConfig filterConfig) throws ServletException {

            /*
             * Returns a String containing the value of the named initialization
             * parameter, or null if the parameter does not exist.
             */
            onErrorUrl = filterConfig.getInitParameter("onError");
            if (onErrorUrl == null || "".equals(onErrorUrl)) {
             onErrorUrl = "/index.jsp";
            }
           }

          }

          web.xml添加以下代碼:
          <filter>
            <filter-name>loginFilter</filter-name>
            <filter-class>myFilter.loginFilter</filter-class>
            <init-param>
             <param-name>onError</param-name>
             <param-value>/index.jsp</param-value>
            </init-param>
           </filter>
           <filter-mapping>
            <filter-name>loginFilter</filter-name>
            <url-pattern>/havesession/*</url-pattern>
           </filter-mapping>

          特別注意:<url-pattern>/havesession/*</url-pattern>這里意思是過(guò)濾/havasession/路徑中的所有HTTP請(qǐng)求。

          Feedback

          # re: 沒(méi)有登錄不能訪問(wèn)非index.jsp的JSP頁(yè)面[未登錄](méi)  回復(fù)  更多評(píng)論   

          2012-05-02 18:32 by michael
          如果要過(guò)濾多個(gè)文件夾呢?

          posts - 1, comments - 3, trackbacks - 0, articles - 7

          Copyright © wind_miao

          主站蜘蛛池模板: 新民市| 九江市| 旌德县| 琼结县| 桦甸市| 皋兰县| 海宁市| 杂多县| 临高县| 仪征市| 富顺县| 冕宁县| 南郑县| 汽车| 邯郸县| 酒泉市| 比如县| 安龙县| 舟曲县| 衡东县| 青州市| 维西| 察雅县| 昌乐县| 江山市| 漾濞| 湖口县| 威宁| 三门峡市| 铅山县| 博湖县| 寻乌县| 那曲县| 常德市| 正镶白旗| 璧山县| 外汇| 揭西县| 华阴市| 青州市| 滨州市|