首页 > 编程 > Java > 正文

struts2自定义拦截器的示例代码

2019-11-26 11:38:21
字体:
来源:转载
供稿:网友

题目:使用struts2自定义拦截器,完成用户登陆才能访问权限的实现

  1. 在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆
  2. 显示提示信息(请先登录)

定义拦截器

在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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表