struts2自定義攔截器

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

  • 在session中存放user變量表示用戶登陸,若user為空則用戶沒有登陸,反之登陸
  • 顯示提示信息(請先登錄)
  1. 定義攔截器
    在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>

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

name屬性就是Intercaptor.Intercaptor類在服務器上的一個實例
class屬性就是這個攔截器的的類

  1. 實現(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";
    }
}
  1. 實現(xiàn)業(yè)務邏輯
  • 在action中添加攔截器
    <action name="Action" class="Action.Action">
            <interceptor-ref name="test"></interceptor-ref>
            <result name="success">Message.jsp</result>
    </action>
  1. 其他
  • 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">用戶登陸</a>
    <a href="UserQuit.jsp">用戶退出</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>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 概述 本文簡單介紹如何自定義一個Struts攔截器,但不涉及攔截器基礎、原理等其他知識,僅僅只是介紹自定義攔截器的...
    小山雀閱讀 216評論 0 0
  • 詳談 Struts2 的核心概念 本文將深入探討Struts2 的核心概念,首先介紹的是Struts2 的體系結構...
    可愛傻妞是我的愛閱讀 1,226評論 0 2
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產品,是在 struts1和WebWork的...
    inke閱讀 2,343評論 0 50
  • 1.自定義攔截器 創(chuàng)建攔截器方式三種 練習,攔截除login方法之外所有方法 判斷是否是window框架本身 in...
    路人愛早茶閱讀 256評論 0 0
  • 那只貓死了,琥珀的眼,斑駁如虎的紋。它安靜地趴在水泥路面上,背對著它曾無數(shù)次嬉戲過的田野。 它曾見證過男孩...
    驀墨漠閱讀 104評論 0 0

友情鏈接更多精彩內容