struts2自定义拦截器的示例代码
题目:使用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>
上一篇:Feign实现跨服务文件上传下载
栏 目:JAVA代码
本文标题:struts2自定义拦截器的示例代码
本文地址:http://www.codeinn.net/misctech/137553.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




