<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
    重定向請(qǐng)求

      下面我們來構(gòu)造一個(gè)AuthenticationFilter過濾器,它的功能是截獲對(duì)Controller Servlet的請(qǐng)求,然后驗(yàn)證用戶的身份。按照前面介紹的步驟用向?qū)?chuàng)建過濾器時(shí),向?qū)峁┝硕x初始化參數(shù)、過濾器的URL和Servlet映射等參數(shù)。如果不設(shè)置這類參數(shù),缺省情況下向?qū)в眠^濾器本身的名稱創(chuàng)建一個(gè)URL映射,我們將在下面用編輯web.xml文件的方式定義映射,因此現(xiàn)在先認(rèn)可缺省值。注意,如果你想在鏈中使用一個(gè)以上的過濾器,那就必須手工編輯web.xml。

      在向?qū)е悬c(diǎn)擊“完成”按鈕后,WSAD立即構(gòu)造出過濾器的骨架代碼。對(duì)于本例來說,接下來我們唯一的任務(wù)就是將代碼插入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("獲得了來自過濾器的應(yīng)答。");
                    // 將請(qǐng)求直接傳遞給下一個(gè)頁面(而不是Controller Servlet)
                    rd = req.getRequestDispatcher(nextPage);
                    rd.forward(req, resp);
                } else {
                    req.setAttribute("login", "loginsuccess");
                    // 將請(qǐng)求傳遞給Controller Servlet
                    chain.doFilter(req, resp);
                    System.out.println("獲得了來自過濾器的應(yīng)答。");
                }
            } else {
                rd = req.getRequestDispatcher("Welcome.jsp");
                rd.forward(req, resp);
            }
        }


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

      如果用戶通過了身份驗(yàn)證,則我們調(diào)用chain.doFilter(),允許應(yīng)答進(jìn)入Controller——這是因?yàn)檎{(diào)用chain.doFilter()時(shí),鏈里面已經(jīng)沒有其他過濾器,所以控制將以POST方式轉(zhuǎn)入作為Controller的Servlet,實(shí)際上,chain.doFilter()將調(diào)用Controller.doPost()方法。

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

    // Listing 2: controller.java
    
    protected final void doPost(
        HttpServletRequest request,
        HttpServletResponse response) {
    
        // begining codes
        //--用戶已通過身份驗(yàn)證
        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) 評(píng)論(1)  編輯  收藏

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

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲高清乱码午夜电影网| 亚洲精品韩国美女在线| 美女免费视频一区二区三区| 扒开双腿猛进入爽爽免费视频| 亚洲国产精品综合一区在线| 四虎1515hh永久久免费| 亚洲国产成+人+综合| AA免费观看的1000部电影| 亚洲狠狠成人综合网| 成人免费a级毛片无码网站入口 | 国产精品久久久亚洲| 特级做A爰片毛片免费看无码| 亚洲夜夜欢A∨一区二区三区| 精品一卡2卡三卡4卡免费视频 | 亚洲国产精品久久网午夜 | 日日躁狠狠躁狠狠爱免费视频| 亚洲?V无码成人精品区日韩| 国产免费一区二区三区免费视频| 亚洲午夜福利717| 久久w5ww成w人免费| 亚洲高清有码中文字| 免费一区二区视频| 两个人看的www免费视频| 亚洲成人免费在线观看| 日韩成人免费在线| a级毛片无码免费真人久久| 亚洲色图.com| 国产美女被遭强高潮免费网站| 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲精品无码不卡在线播HE| 99国产精品永久免费视频| 亚洲av色香蕉一区二区三区蜜桃| 亚洲综合区小说区激情区| 午夜精品射精入后重之免费观看 | 杨幂最新免费特级毛片| 五月天网站亚洲小说| 日韩免费福利视频| 永久免费A∨片在线观看| 亚洲最大的成人网| 亚洲AV无码一区二区三区DV| 毛片免费视频在线观看|