struts2拦截器--拦截未登录用户
拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。
在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。
拦截器栈(Interceptor Stack)类似于过滤器链。拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器栈的拦截器就会按其之前定义的顺序被调用。
我们可以自定义一个拦截器,拦截我们想要拦截的请求。这里我们让未登录的用户无法访问特定页面。话不多上代码。
一、页面:
1、login.jsp
<body><h2>user login</h2><!-- el表达式 直接获取session中的值-->${loginError }<form action="login.action" method="post">Name:<input type="text" value="username"/><br>password:<input type="password" value="password" /><br><input type="submit" value="login"/></form>
</body>
2、hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>hello!
</body>
</html>
二、Action:
loginAction.java
public class LoginAction extends ActionSupport implements ModelDriven<User>{private User user= new User();private Map<String,Object> session;public String login(){if("admin".equals(user.getUsername())&&"123".equals(user.getPassword())){session.put("loginInfo", user.getUsername());return SUCCESS;}else{session.put("loginError", "username or password error");return ERROR;}}@Overridepublic User getModel() {return user;}}
三、拦截器
AuthInterceptor.java
public class AuthInterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invacation) throws Exception {ActionContext context=ActionContext.getContext();Map<String,Object> session=context.getSession();if(session.get("loginInfo")!=null){String result=invacation.invoke();return result;}else{return "login";}}}
四、配置文件
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts><constant name="struts.enable.DynamicMethodInvacation" value="false"></constant><constant name="struts.devMode" value="true"></constant><package name="default" namespace="/" extends="struts-default"><!-- 注册拦截器 --><interceptors><interceptor name="auth" class="com.ouc.interceptor.AuthInterceptor"></interceptor><!-- 自定义拦截器栈 --><interceptor-stack name="myStack"><!--加入默认拦截器栈--><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="auth"></interceptor-ref></interceptor-stack></interceptors><action name="auth"> <result>/WEB-INF/page/hello.jsp</result><result name="login">/login.jsp</result><!-- 引用自定义拦截器栈 --><interceptor-ref name="myStack"></interceptor-ref></action><action name="login" class="com.ouc.action.LoginAction" method="login"><result>/WEB-INF/page/hello.jsp</result><result name="error">/login.jsp</result></action></package></struts>
转载于:https://blog.51cto.com/qmkkd/1840127
struts2拦截器--拦截未登录用户相关推荐
- vue的axios拦截器实现未登录页面跳转
1.拦截器分为request请求拦截器和response响应拦截器 PS:request请求拦截器:发送请求前统一处理,如:设置请求头headers.应用的版本号.终端类型等. response响应拦 ...
- Spring Filter过滤器,Spring拦截未登录用户权限限制
实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面. 比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权 ...
- SpringBoot——使用拦截器拦截未登录用户
前置知识SpringBoot配置拦截器基于HandlerInterceptor接口实现,关键三个方法 preHandle()执行目标之前 postHandle()执行目标之后 afterComplet ...
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...
- Java自定义异常、全局捕获异常、拦截器 实现动态控制登录超时
Java自定义异常.全局捕获异常.拦截器 实现动态控制登录超时 参考文章: (1)Java自定义异常.全局捕获异常.拦截器 实现动态控制登录超时 (2)https://www.cnblogs.com/ ...
- spring拦截器 拦截和排除接口冲突
以下为springboot案例: 场景: 某个规则下的绝大部分接口路径不需要经过拦截器, 但其中的某几个接口又需要经过拦截器. 例如: "/api/register/**" 模式 ...
- jsp中未登录用户也可以浏览页面的功能实现代码
jsp中未登录用户也可以浏览页面的功能实现代码 <%! int count=0; %> < ...
- axios config里自定义属性,使用拦截器拦截,无法拿到自定义属性问题
axios config里自定义属性,使用拦截器拦截,无法拿到自定义属性问题 最新版本axios限制了键,对键值做了白名单处理. 解决思路: 修改源码中的内容,添加一个键来报错额外属性. 或者:使用老 ...
- 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案
在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 参考文章: (1)在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 (2)https: ...
- 【项目经验】拦截器拦截入参出参
文章目录 拦截器拦截入参出参 入参 出参 拦截器拦截入参出参 入参 @Overridepublic boolean preHandle(HttpServletRequest request, Http ...
最新文章
- 漫画:什么是 “抽象工厂模式” ?
- 电单车拉力赛的调试情况汇集
- 导致定时器失效_IIS进程回收导致定时器失效的解决方法(CMD命令)
- python完全新手教程-Python完全新手教程
- ThreadLocalT
- PaaS云计算平台服务商大集合
- 什么是卫星的有效载荷?
- 会议交流 | DataFunSummit 知识图谱在线峰会——链接知识图谱最前沿技术和最落地产业化应用的桥梁!...
- Mac下关闭Sublime Text 3的更新检查
- 如何查看使用 Cloud Toolkit 部署应用的实时日志
- Python提取任意长度整数的每位数字
- 头条 msra几道面试题
- windows apache 负载均衡配置 Tomcat集群配置
- 麦克风阵列原理(转载)
- 阵列信号处理 窄带信号与包络
- Python渗透测试之网络嗅探与欺骗
- 人工智能时代的投影融合软件
- Linux cp 复制文件强制覆盖的用法
- arduino的pinMode()函数
- 拳皇世界6月13服务器维护,拳皇世界2月8日例行维护 数据互通公告[图]