欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2021-06-08 07:43:51|栏目:JAVA代码|点击:

题目:使用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>

上一篇:Feign实现跨服务文件上传下载

栏    目:JAVA代码

下一篇:java把excel内容上传到mysql实例代码

本文标题:struts2自定义拦截器的示例代码

本文地址:http://www.codeinn.net/misctech/137553.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有