沒有登錄不能訪問非index.jsp的JSP頁面

          Posted on 2008-04-10 10:30 wind_miao 閱讀(1162) 評論(1)  編輯  收藏 所屬分類: Servlet&JSP
          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 內容是否為空,為空則沒有登錄,轉發到登錄頁面, 如果不為空,則分發請求。
           * @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>這里意思是過濾/havasession/路徑中的所有HTTP請求。

          Feedback

          # re: 沒有登錄不能訪問非index.jsp的JSP頁面[未登錄]  回復  更多評論   

          2012-05-02 18:32 by michael
          如果要過濾多個文件夾呢?

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

          Copyright © wind_miao

          主站蜘蛛池模板: 西华县| 讷河市| 宝应县| 从化市| 吉林市| 绿春县| 青浦区| 府谷县| 东乡| 桐庐县| 睢宁县| 淮安市| 电白县| 河南省| 来宾市| 石林| 阿巴嘎旗| 呼和浩特市| 惠水县| 襄樊市| 胶南市| 通化县| 宜君县| 泉州市| 伊金霍洛旗| 南投县| 全州县| 盐城市| 丽江市| 绥芬河市| 友谊县| 百色市| 苏尼特右旗| 台北县| 武冈市| 广宁县| 德昌县| 湟源县| 黄大仙区| 通城县| 江北区|