您好,登錄后才能下訂單哦!
題目:使用struts2自定義攔截器,完成用戶登陸才能訪問權限的實現
定義攔截器
在struts.xml中定義攔截器使用標簽<Intercaptors>、<Intercapter>。
<interceptors> <interceptor name="test" class="Intercaptor.Intercaptor" /> <interceptor-stack name="testStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="test" /> </interceptor-stack> </interceptors>
注:當我們為某個action添加Intercaptor時就會放棄struts2的其他的攔截器,所以我們要把自定義的攔截器放在一個一個攔截器棧中。
name屬性就是Intercaptor.Intercaptor類在服務器上的一個實例
class屬性就是這個攔截器的的類
實現攔截器
攔截器的java類要實現Intercaptor這個接口和里面的方法intercept()。我們這里攔截的條件是用戶是否登陸,也就是session中的user變量是否為空。
public class Intercaptor implements Interceptor{ public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { Object user=ActionContext.getContext().getSession().get("user"); if(user!=null){ return invocation.invoke(); } ActionContext.getContext().put("message", "請先登陸"); return "success"; } }
實現業務邏輯
在action中添加攔截器
<action name="Action" class="Action.Action"> <interceptor-ref name="test"></interceptor-ref> <result name="success">Message.jsp</result> </action>
其他
action的實現
public class Action extends ActionSupport{ private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String execute() throws Exception { return "success"; } }
index.jsp
<body> 用戶狀態:${user!=null?"已登陸":"未登陸"}<br> <a href="UserLogin.jsp" rel="external nofollow" >用戶登陸</a> <a href="UserQuit.jsp" rel="external nofollow" >用戶退出</a> <form action="<%request.getContextPath(); %>/testIntercaptor/Action"> <input type="submit" value="登陸后的操作"> </form> </body>
UserLogin.jsp
在request.getSesssion中存放user變量
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 登陸成功 <% request.getSession().setAttribute("user", "user"); response.setHeader("refresh", "1;url=index.jsp"); %>
UserQuit.jsp
移除request.getSesssion中user變量
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 退出成功 <% request.getSession().removeAttribute("user"); response.setHeader("refresh", "1;url=index.jsp"); %>
Message.jsp
簡單是輸出message和debug
<body> ${message } <br/> <s:debug></s:debug> </body>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。