源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-10-09 12:22 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:struts2自定义拦截器的示例代码
[b]题目:使用struts2自定义拦截器,完成用户登陆才能访问权限的实现[/b] [list=1] [*]在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆[/*] [*]显示提示信息(请先登录)[/*] [/list] [b]定义拦截器[/b] 在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属性就是这个拦截器的的类 [b]实现拦截器[/b] 拦截器的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";
  }
}

[b]实现业务逻辑 [/b] 在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>
[img]http://files.jb51.net/file_images/article/201708/2017816151947143.jpg?201771615204[/img] 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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部