服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|

服务器之家 - 编程语言 - JAVA教程 - struts2自定义拦截器的示例代码

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

2020-12-17 13:19rainumdo JAVA教程

本篇文章主要介绍了struts2自定义拦截器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

定义拦截器

在struts.xml中定义拦截器使用标签<Intercaptors>、<Intercapter>。

?
1
2
3
4
5
6
7
<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变量是否为空。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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中添加拦截器

?
1
2
3
4
<action name="Action" class="Action.Action">
    <interceptor-ref name="test"></interceptor-ref>
    <result name="success">Message.jsp</result>
</action>

其他

action的实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

?
1
2
3
4
5
6
7
8
<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>

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

UserLogin.jsp

在request.getSesssion中存放user变量

?
1
2
3
4
5
6
7
<%@ 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变量

?
1
2
3
4
5
6
7
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 
 退出成功
  <%
  request.getSession().removeAttribute("user");
    response.setHeader("refresh", "1;url=index.jsp");
  %>

Message.jsp

简单是输出message和debug

?
1
2
3
4
<body>
 ${message } <br/>
<s:debug></s:debug>
</body>

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

原文链接:http://www.jianshu.com/p/fc9e8ef59790?utm_source=tuicool&utm_medium=referral

延伸 · 阅读

精彩推荐