Struts2拦截器浅析(二)
Struts2内建拦截器
params拦截器
staticParams拦截器
servletConfig拦截器
fileUpload拦截器
exception拦截器
validation拦截器
默认拦截器栈
- 在struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器。
- 只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器
- 当为包中的某个action显示指定了某个拦截器,则默认拦截器不会起作用
- 为action显示引用拦截器后,默认的拦截器defaultStack不再生效,需要手工引用
- 拦截器栈中的各个拦截器的顺序很重要
开发权限验证拦截器
<h2>登录页面</h2>${loginError }<form action="login" method="post">用户名:<input type="text" name="username" /><br/>密码:<input type="password" name="password" /><br/><input type="submit" value="登录"/></form>
能获取session的action
package com.lijy.action;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport implements SessionAware {private String username;private String password;private Map<String, Object> session;@Overridepublic void setSession(Map<String, Object> session) {this.session = session;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Map<String, Object> getSession() {return session;}//处理登录请求public String login() {if ("admin".equals(username) && "123".equals(password)) {session.put("loginInfo", username);return SUCCESS;} else {session.put("loginError", "用户名或密码不正确!");return ERROR;}}}
给登录aciton添加过滤器
<!-- 注册拦截器 --><interceptors><interceptor name="auth" class="com.lijy.interceptor.AuthInterceptor"></interceptor><!-- 自定义拦截器栈,组合了defaultStack和auth --><interceptor-stack name="myStack"><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="auth"></interceptor-ref></interceptor-stack></interceptors><!-- 通过此Action访问后台管理页面,需要判断用户是否已登录,如果未登录则跳到登录页面 --><action name="auth"><result>/WEB-INF/page/manage.jsp</result><result name="login">/login.jsp</result><!-- 引用自定义拦截器栈 --><interceptor-ref name="myStack"></interceptor-ref></action>
<action name="login" class="com.lijy.action.LoginAction" method="login">
<result>/WEB-INF/page/manage.jsp</result>
<result name="error">/login.jsp</result>
</action>
拦截器
package com.lijy.interceptor;import java.util.Map;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class AuthInterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invocation) throws Exception {ActionContext context = ActionContext.getContext();Map<String, Object> session = context.getSession();if (session.get("loginInfo") != null) {String result = invocation.invoke();return result;} else {return "login";}}}
Struts2拦截器浅析(二)相关推荐
- 《struts2拦截器的使用》
struts2 拦截器的使用 在struts2的工作原理博文中http://blog.csdn.net/u010412719/article/details/51193352,可以看到,拦截器是str ...
- Struts2拦截器的使用
如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了str ...
- Struts2 拦截器 及如何获得 servlet 请求对象 以及Struts 基本配置 Session 超时设置...
在拦截器中可以三种实现 一:继承 AbstractInterceptor 类 二:继承 MethodFilterInterceptor类 三:实现 Interceptor 接口 在实现Intercep ...
- Struts2拦截器的使用 (详解)
Struts2拦截器的使用 (详解) 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈default ...
- struts2拦截器理论知识
软件设计中DRY规则,即不要写重复的代码,这样可以大大减轻后期维护的工作量!但是问题来了,重复的代码是不可避免的,比如在用户发送请求之前先判断用户是否登录,怎么办呢?于是就把这些重复代码提取出来,封装 ...
- 详解Struts2拦截器机制
Struts2的核心在于它复杂的拦截器,几乎70%的工作都是由拦截器完成的.比如我们之前用于将上传的文件对应于action实例中的三个属性的fileUpload拦截器,还有用于将表单页面的http请求 ...
- Struts2拦截器和标签
一.struts2拦截器 1.struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面. 2 struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每 ...
- struts2拦截器简介
2019独角兽企业重金招聘Python工程师标准>>> 一.理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦 ...
- Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
参考:http://blog.csdn.net/coolcoffee168/article/details/7963251 在配置struts2 拦截器属性excludeMethods.include ...
最新文章
- 唐敏豪:我给MSU评测打9分
- python离线安装包_Python2.7如何离线安装包
- 【maven3学习之一】window7下maven环境搭建
- 避开这2个误区,测试目标 KPI 不再难设
- 华为云ModelArts 3.0助力行业AI高效落地
- Liunx CentOS6编译安装LAMP
- wiquery ResizePanel
- jenkins 手动执行_Win下Jenkins-2.138源码编译及填坑笔记
- DSP入门小白学习日记第四篇
- 用Python全自动播放尔雅网课
- 关于计算机信息学奥赛视频,震惊!信息学奥赛好处竟然这么多
- pycharm显示中间变量
- 电子计算机 隐形眼镜,戴隐形眼镜看电脑要注意什么
- MySQL-运算符详解
- nodejs 判断是文件夹还是文件
- 华为 oj java题库_华为OJ题目:刷题
- unicode 生僻字_生僻字打不出来怎么办?教你一招轻松应对!
- 进制转换计算机文档,计算机进制转换.pdf
- IELTS学习(001) - 语法构成原理
- 思科网络设备 show version命令输出内容详解