溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

struts2自定義攔截器的示例代碼

發(fā)布時間:2020-09-22 07:28:54 來源:腳本之家 閱讀:114 作者:rainumdo 欄目:編程語言

題目:使用struts2自定義攔截器,完成用戶登陸才能訪問權(quán)限的實現(xiàn)

  1. 在session中存放user變量表示用戶登陸,若user為空則用戶沒有登陸,反之登陸
  2. 顯示提示信息(請先登錄)

定義攔截器

在struts.xml中定義攔截器使用標(biāo)簽<Intercaptors>、<Intercapter>。

  <interceptors>
      <interceptor name="test" class="Intercaptor.Intercaptor" />
      <interceptor-stack name="testStack">
        <interceptor-ref name="defaultStack"/>
        <interceptor-ref name="test" />
      </interceptor-stack>
  </interceptors>

注:當(dāng)我們?yōu)槟硞€action添加Intercaptor時就會放棄struts2的其他的攔截器,所以我們要把自定義的攔截器放在一個一個攔截器棧中。

name屬性就是Intercaptor.Intercaptor類在服務(wù)器上的一個實例

class屬性就是這個攔截器的的類

實現(xiàn)攔截器

攔截器的java類要實現(xiàn)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";
  }
}

實現(xiàn)業(yè)務(wù)邏輯

在action中添加攔截器

  <action name="Action" class="Action.Action">
      <interceptor-ref name="test"></interceptor-ref>
      <result name="success">Message.jsp</result>
  </action>

其他

action的實現(xiàn)

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>
  用戶狀態(tài):${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>

struts2自定義攔截器的示例代碼

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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI