Struts2内建拦截器

params拦截器

负责将请求参数设置为Action属性。

staticParams拦截器

将配置文件中的action元素的子元素param参数设置为Action属性

servletConfig拦截器

将源于Servlet API的各种对象注入到Action,必须实现对应接口

fileUpload拦截器

对文件上传提供支持,将文件和元数据设置到对应的Action属性(内部封装了Commons-FileUpload)

exception拦截器

捕获异常,并且将异常映射到用户自定义的错误页面。

validation拦截器

调用验证框架进行数据验证

默认拦截器栈

  • 在struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器。
  • 只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器
  • 当为包中的某个action显示指定了某个拦截器,则默认拦截器不会起作用
  • 为action显示引用拦截器后,默认的拦截器defaultStack不再生效,需要手工引用
  • 拦截器栈中的各个拦截器的顺序很重要

开发权限验证拦截器

已登录用户可以访问页面,未登录用户不可以访问页面。
在WEB-INF下新建文件夹page,即WEB-INF/page/manage.jsp。我们知道WEB-INF下的资源不允许外部直接访问,可以创建Action,通过Action转发到此页面。
在WEB-INF下创建login.jsp
    <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拦截器浅析(二)相关推荐

  1. 《struts2拦截器的使用》

    struts2 拦截器的使用 在struts2的工作原理博文中http://blog.csdn.net/u010412719/article/details/51193352,可以看到,拦截器是str ...

  2. Struts2拦截器的使用

    如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了str ...

  3. Struts2 拦截器 及如何获得 servlet 请求对象 以及Struts 基本配置 Session 超时设置...

    在拦截器中可以三种实现 一:继承 AbstractInterceptor 类 二:继承 MethodFilterInterceptor类 三:实现 Interceptor 接口 在实现Intercep ...

  4. Struts2拦截器的使用 (详解)

    Struts2拦截器的使用 (详解) 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈default ...

  5. struts2拦截器理论知识

    软件设计中DRY规则,即不要写重复的代码,这样可以大大减轻后期维护的工作量!但是问题来了,重复的代码是不可避免的,比如在用户发送请求之前先判断用户是否登录,怎么办呢?于是就把这些重复代码提取出来,封装 ...

  6. 详解Struts2拦截器机制

    Struts2的核心在于它复杂的拦截器,几乎70%的工作都是由拦截器完成的.比如我们之前用于将上传的文件对应于action实例中的三个属性的fileUpload拦截器,还有用于将表单页面的http请求 ...

  7. Struts2拦截器和标签

    一.struts2拦截器 1.struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面. 2 struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每 ...

  8. struts2拦截器简介

    2019独角兽企业重金招聘Python工程师标准>>> 一.理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦 ...

  9. Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法

    参考:http://blog.csdn.net/coolcoffee168/article/details/7963251 在配置struts2 拦截器属性excludeMethods.include ...

最新文章

  1. 唐敏豪:我给MSU评测打9分
  2. python离线安装包_Python2.7如何离线安装包
  3. 【maven3学习之一】window7下maven环境搭建
  4. 避开这2个误区,测试目标 KPI 不再难设
  5. 华为云ModelArts 3.0助力行业AI高效落地
  6. Liunx CentOS6编译安装LAMP
  7. wiquery ResizePanel
  8. jenkins 手动执行_Win下Jenkins-2.138源码编译及填坑笔记
  9. DSP入门小白学习日记第四篇
  10. 用Python全自动播放尔雅网课
  11. 关于计算机信息学奥赛视频,震惊!信息学奥赛好处竟然这么多
  12. pycharm显示中间变量
  13. 电子计算机 隐形眼镜,戴隐形眼镜看电脑要注意什么
  14. MySQL-运算符详解
  15. nodejs 判断是文件夹还是文件
  16. 华为 oj java题库_华为OJ题目:刷题
  17. unicode 生僻字_生僻字打不出来怎么办?教你一招轻松应对!
  18. 进制转换计算机文档,计算机进制转换.pdf
  19. IELTS学习(001) - 语法构成原理
  20. 思科网络设备 show version命令输出内容详解

热门文章

  1. 数据结构和算法推荐书单
  2. 开车适合戴什么款式的耳机,几款适合在开车佩戴的骨传导耳机
  3. 硕士最高可提至100万/人!江苏某地再调整公积金政策
  4. MySQL 性能优化之骨灰级,高阶神技 !
  5. CCNP350-401学习笔记(251-300题)
  6. 学习springcloud的Eureka。记录其中遇见的问题(参考纯洁的微笑)
  7. 浮点数加减法的运算步骤
  8. 公关公司工作委员会09年工作会议在京召开
  9. 计算机操作系统中,缺页次数和缺页中断次数
  10. qprocess回调_从QProcess说开来(一)