2018-06-25(編寫權(quán)限校驗過濾器)

權(quán)限校驗過濾器:

對應的servlet文件(login.jsp)中的doPost()方法中添加:

String returnUri=request.getParameter("return_uri");//return_uri是用戶訪問對應的頁面之前會訪問的頁面,通過這個值可以返回對應頁面。

在登錄成功(在登錄功能下)的判斷語句下添加:

request.getSession.setAttribute("flag","_success");//如果登錄成功,在當前對象中保存一個名稱為flag的變量的值為_success

if(returnUri!=null){

rd=request.getRequestDispatcher(returnUri);//RequestDispatcher rd=null;

rd.forward(request,response);

}else{

rd=request.getRequestDispatcher("/index.jsp");

rd.forward(request,response);

}

在登錄失敗的判斷語句下添加:

request.getSession.setAttribute("flag","_error");

reuqest.setAttribute("msg","用戶名或密碼錯誤");

rd=request.getRequestDispatcher("login.jsp");

rd.forward(request,response);


-》在對應的jsp文件中添加隱藏域:

<%if(request.getAttribute("return_uri")!=null){%>

<input type="hidden" name="return-uri" value="<%=request.getAttribute("return_uri")%>" />

<%}%>


-》新建過濾器 -》 編寫doFilter()方法中的業(yè)務邏輯:

HttpServletRequset req=(HttpServletRequest)request;

HttpServletResponse resp=(HttpServletResponse)response;

String sp=req.getServletPath();

HttpSession session=req.getSession();

String flag=(String)session.getAttribute("flag");

if(sp!=null&&(sp.equals.("/login.jsp")||sp.equals.("/index.jsp"))){//如果訪問的是默認頁面或登錄界面(即一些不需經(jīng)過權(quán)限授予即可以訪問的頁面),就直接將請求轉(zhuǎn)發(fā)給下一個組件處理

chain.doFilter(request,response);

}else{

if(flag!=null&&flag,equals("_success")){

chain.doFilter(request,response);

}else if(flag!=null&&flag,equals("_error")){

req.setAttribute("msg","登錄失敗,請重新登錄<br/>");

req.setAttribute("return_uri",sp);

RequestDispatcher ?rd=request.getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}else{

req.setAttribute("msg","您尚未登錄,請登錄<br/>");

req.setAttribute("return_uri",sp);

RequestDispatcher ?rd=request.getRequestDispatcher("/login.jsp");

rd.forward(request,response);

}

}


-》接下來在web.xml配置一下(將編寫的過濾器等配置好):

<filter>

<filter-name>PermissionFilter</filter-name>

<filter-class>hp.filter.PermissionFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>PermissionFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括:1、Filter簡介2、Filter是如何實現(xiàn)攔截的?3、Filter開發(fā)入門4、Filter的生命周期...
    廖少少閱讀 7,524評論 3 56
  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    91數(shù)據(jù)閱讀 3,645評論 0 13
  • Web應用程序 WEB,在英語中web即表示網(wǎng)頁的意思,它用于表示Internet主機上供外界訪問的資源。Inte...
    陳先森mansplain閱讀 2,433評論 1 4
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實現(xiàn)中,有程序代碼之間控制,又名依賴注入。All 類的創(chuàng)建,...
    irckwk1閱讀 1,097評論 0 0
  • 字如其人,在很多時候,字就是自己的另外一張名片。我們都希望自己有一手好字,但也都覺得自己已經(jīng)這么大歲數(shù)了,再練字也...
    箏小錢閱讀 4,624評論 2 49

友情鏈接更多精彩內(nèi)容