<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23,comments - 12,trackbacks - 0
    重定向請求

      下面我們來構造一個AuthenticationFilter過濾器,它的功能是截獲對Controller Servlet的請求,然后驗證用戶的身份。按照前面介紹的步驟用向導創建過濾器時,向導提供了定義初始化參數、過濾器的URL和Servlet映射等參數。如果不設置這類參數,缺省情況下向導用過濾器本身的名稱創建一個URL映射,我們將在下面用編輯web.xml文件的方式定義映射,因此現在先認可缺省值。注意,如果你想在鏈中使用一個以上的過濾器,那就必須手工編輯web.xml。

      在向導中點擊“完成”按鈕后,WSAD立即構造出過濾器的骨架代碼。對于本例來說,接下來我們唯一的任務就是將代碼插入doFilter()方法,如Listing 1所示。

    // Listing 1: AuthenticationFilter.java
    
        public void doFilter(
            ServletRequest req,
            ServletResponse resp,
            FilterChain chain)
            throws ServletException, IOException {
    
            String nextPage;
            RequestDispatcher rd = null;
            //檢查用戶名稱和密碼
            if (req.getParameter("userid") != null) {
                if (!((req.getParameter("password").equals("password"))
                    && (req.getParameter("userid").equals("user")))) {
                    ArrayList actionreport = newArrayList();
                    actionreport.add("登錄失敗。。。");
                    (((HttpServletRequest) req).getSession()).setAttribute(
                        "actionreport", actionreport);
    
                    nextPage = "failure.jsp";
                    System.out.println("獲得了來自過濾器的應答。");
                    // 將請求直接傳遞給下一個頁面(而不是Controller Servlet)
                    rd = req.getRequestDispatcher(nextPage);
                    rd.forward(req, resp);
                } else {
                    req.setAttribute("login", "loginsuccess");
                    // 將請求傳遞給Controller Servlet
                    chain.doFilter(req, resp);
                    System.out.println("獲得了來自過濾器的應答。");
                }
            } else {
                rd = req.getRequestDispatcher("Welcome.jsp");
                rd.forward(req, resp);
            }
        }


      從上面的代碼可以看出,在過濾器中驗證用戶身份的方式仍和平常的一樣。在此過程中,為了獲得session對象,我們把ServletRequest定型(cast)成了HttpServletRequest。如果用戶未能通過身份驗證,我們不再把請求傳遞給Controller Servlet,而是通過RequestDispatcher把請求傳遞給報告頁面(failure.jsp)。

      如果用戶通過了身份驗證,則我們調用chain.doFilter(),允許應答進入Controller——這是因為調用chain.doFilter()時,鏈里面已經沒有其他過濾器,所以控制將以POST方式轉入作為Controller的Servlet,實際上,chain.doFilter()將調用Controller.doPost()方法。

      發送請求給Controller之前,我們可以根據用戶獲得的身份證書來設置請求的屬性,這些信息將幫助Controller及其輔助類處理請求。作為一個例子,我們設置了請求的login屬性,然后在Controller中檢查該屬性,Controller把應答返回給success.jsp(如Listing 2所示)。

    // Listing 2: controller.java
    
    protected final void doPost(
        HttpServletRequest request,
        HttpServletResponse response) {
    
        // begining codes
        //--用戶已通過身份驗證
        if (((String) request.getAttribute("login")).equals
           ("login success")) {
            ArrayList actionreport = new ArrayList();
            actionreport.add("Correct Password");
            session.setAttribute("actionreport", actionreport);
            nextPage = "success.jsp";
        }
        if (dispatch) {
            RequestDispatcher rd =
                getServletContext().getRequestDispatcher(nextPage);
            rd.forward(request, response);
        } else {
    
            session.invalidate();
    
        }
        // ending codes
    }
    posted on 2005-09-12 16:27 my java 閱讀(3099) 評論(1)  編輯  收藏

    FeedBack:
    # re: AuthenticationFilter過濾器[未登錄]
    2014-11-10 17:27 | dd
    ddddddddddddddd  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成a人无码av波多野按摩| 亚洲av无码片在线观看| 在线A亚洲老鸭窝天堂| 亚洲精品自拍视频| 一区二区免费在线观看| 中国人xxxxx69免费视频| 亚洲国产精品一区二区九九| 亚洲av成人一区二区三区观看在线| av永久免费网站在线观看| 妞干网手机免费视频| 黑人精品videos亚洲人| 爱情岛论坛亚洲品质自拍视频网站| 久久国产免费一区| 亚洲中文字幕第一页在线| aaa毛片免费观看| 国产精品高清全国免费观看| 亚洲综合一区二区精品久久| xx视频在线永久免费观看| 亚洲国产精品无码AAA片| 最好2018中文免费视频| 成人免费在线观看网站| 亚洲欧洲校园自拍都市| 99久久国产精品免费一区二区 | 亚洲成a人片在线观看无码| 99久久免费看国产精品| 国产亚洲色婷婷久久99精品91| 亚洲国产美女精品久久久 | 欧美好看的免费电影在线观看| 亚洲国产成人片在线观看无码| 5g影院5g天天爽永久免费影院| 亚洲综合av一区二区三区 | 99热免费在线观看| 99久久国产亚洲综合精品| 午夜性色一区二区三区免费不卡视频| 亚洲成色WWW久久网站| 无码国产精品久久一区免费| 亚洲a级片在线观看| 亚洲AV中文无码乱人伦| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲私人无码综合久久网| 国产亚洲美女精品久久久|