struts2自定义 * 的示例代码
作者:rainumdo 时间:2021-12-01 16:24:52
题目:使用struts2自定义 * ,完成用户登陆才能访问权限的实现
在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆
显示提示信息(请先登录)
定义 *
在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>
来源:http://www.jianshu.com/p/fc9e8ef59790?utm_source=tuicool&utm_medium=referral
标签:struts2, ,
0
投稿
猜你喜欢
使用java技术抓取网站上彩票双色球信息详解
2022-01-04 14:47:51
SpringBoot中自定义注解实现参数非空校验的示例
2022-04-12 10:55:55
对Java ArrayList的自动扩容机制示例讲解
2022-04-09 07:58:25
java Spring的启动原理详解
2022-09-02 04:39:59
Java使用Optional实现优雅避免空指针异常
2023-06-05 15:35:39
java并发编程专题(六)----浅析(JUC)Semaphore
2023-07-27 23:30:28
C# URL短地址压缩算法及短网址原理解析
2023-03-26 08:36:31
SpringCloud如何创建一个服务提供者provider
2023-08-01 01:56:33
Spring Security使用Lambda DSL配置流程详解
2021-12-23 19:20:32
使用java实现BBS论坛发送邮件过程详解
2022-12-19 16:58:30
C# 数独求解算法的实现
2022-04-04 18:48:57
关于SpringBoot使用Redis空指针的问题(不能成功注入的问题)
2023-09-04 01:30:03
通过实例解析java8中的parallelStream
2022-04-17 12:59:37
Java 十大排序算法之计数排序刨析
2023-11-28 19:21:26
C# InitializeComponent()方法案例详解
2022-06-12 03:07:06
RocketMQ4.5.X 实现修改生产者消费者日志保存路径
2021-05-24 23:58:37
java实现图片写入高清字体及带边框的方法
2023-11-29 03:43:47
Spring注解@DependsOn解析
2022-01-11 08:20:35
java微信公众号支付示例详解
2023-11-15 05:52:01
Java后端Tomcat实现WebSocket实例教程
2023-08-22 17:31:09