沒有登錄不能訪問非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

          主站蜘蛛池模板: 西峡县| 扎兰屯市| 叙永县| 宁国市| 新竹市| 香格里拉县| 高雄市| 泰顺县| 隆德县| 新乡市| 郧西县| 荔波县| 太保市| 天祝| 肃宁县| 长治县| 临沂市| 西华县| 吉安县| 绩溪县| 白沙| 红安县| 扶余县| 广平县| 平果县| 张家港市| 贞丰县| 静海县| 揭阳市| 岳池县| 赫章县| 靖江市| 龙胜| 卓资县| 高阳县| 柳河县| 青田县| 建水县| 聂荣县| 贵德县| 万荣县|