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

网友投稿 207 2023-04-19


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

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

在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆

显示提示信息(请先登录)

定义拦截器

在struts.xml中定义拦截器使用标签

注:当我们为某个action添加Intercaptor时就会放弃struts2的其他的拦截器,所以我们要把自定义的拦截器放在一个一个拦截器栈中。

name属性就是Intercaptor.Intercaptor类在服务器上的一个实例

class属性就是这个拦截器的的类

实现拦截器

拦截器的java类要实FpvzOuou现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中添加拦截器

Message.jsp

其他

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

用户状态:${user!=null?"已登陆":"未登陆"}

用户登陆

用户退出

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

${message }


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序实现根据字母选择城市功能
下一篇:Java 浅复制和深复制的实例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~