配置拦截器有三个步骤:

第一:先创建一个拦截器的包

com.bdqn.interceptor

package com.bdqn.interceptor;import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class HelloInterceptor extends AbstractInterceptor{//这就是拦截器的方法@Overridepublic String intercept(ActionInvocation arg0) throws Exception {System.out.println("在执行MyAction的方法前进行拦截");String obj = arg0.invoke();//代表事物,这里是action的方法System.out.println("在跳出action的方法之后再次进行拦截!");return obj;}}

第二:然后在Struts2配置文件里面进行配置

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="false" /><package name="default" namespace="/" extends="struts-default"><interceptors><!-- 为自己创建的拦截器配置 --><interceptor name="hellointerceptor" class="com.bdqn.interceptor.HelloInterceptor"></interceptor><interceptor-stack name="myfriststack"><interceptor-ref name="hellointerceptor"></interceptor-ref><!-- 默认的拦截器 --><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors>   <action name="MyAction" class="com.bdqn.action.MyAction"method="Hello"><!--  引用拦截器栈 --><interceptor-ref name="myfriststack"></interceptor-ref><result name="success">/index.jsp</result></action></package></struts>

第三:在要引用拦截器的配置里面进行配置

<action name="MyAction" class="com.bdqn.action.MyAction"method="Hello"><!--  引用拦截器栈 --><interceptor-ref name="myfriststack"></interceptor-ref><result name="success">/index.jsp</result></action>

制作一个用户登录权限验证,只能通过登录的路径到达我的商品首页,不然就跳入登录页面

实现原理:

登录成功的用户,存入session,设置商品首页拦截器,只要是访问该链接地址前,先查询session是否有用户存钻,假如有就允许访问,没有就调用商品首页的error页面

第一步:设置登录表单

<form action="/Struts2拦截器配置/UsersAction.java/loginAction">name:<input type="text" name="users.name"><br/>pass:<input type="text" name="users.pass"><br/><input type="submit" value="提交"><br/></form>

第二步:设置登录处理action

package com.bdqn.action;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import com.bdqn.entity.Users;
import com.opensymphony.xwork2.ActionSupport;public class UsersAction extends ActionSupport implements SessionAware{private Users users;private Map session;//登录方法成功就把用户存入sessionpublic String login() throws Exception {if (("jin").equals(users.getName())&&("123").equals(users.getPass())) {session.put("user", users);return SUCCESS;}return ERROR;}public Users getUsers() {return users;}public void setUsers(Users users) {this.users = users;}public void setSession(Map<String, Object> session) {// TODO Auto-generated method stubthis.session = session;}public Map getSession() {return session;}}

第三步:登录显示商品首页action

package com.bdqn.action;import com.opensymphony.xwork2.ActionSupport;public class GoodsAction extends ActionSupport{public String getGoods() throws Exception {return SUCCESS;}
}

第四步:拦截器

package com.bdqn.interceptor;import java.util.Map;import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginInterceptor extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation arg0) throws Exception {System.out.println("登陆拦截");Map session = arg0.getInvocationContext().getSession();System.out.println(session.get("user"));if (session.get("user")!=null) {return arg0.invoke();}return Action.ERROR;}
}

第五步设置Struts2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="false" /><package name="default" namespace="/" extends="struts-default"><interceptors><!-- 为自己创建的拦截器配置 --><interceptor name="logininterceptor" class="com.bdqn.interceptor.LoginInterceptor"></interceptor><!-- login --><interceptor-stack name="logininterceptor"><interceptor-ref name="logininterceptor"></interceptor-ref><!-- 默认的拦截器 --><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack><!-- 用户登录权限 --><action name="loginAction" class="com.bdqn.action.UsersAction"method="login"><!-- 引用拦截器栈 --><result name="success" type="redirectAction">goodsAction</result><result name="error">/login.jsp</result></action><action name="goodsAction" class="com.bdqn.action.GoodsAction"method="getGoods"><interceptor-ref name="logininterceptor"></interceptor-ref><result name="success">/index.jsp</result><result name="error">/login.jsp</result></action></package></struts>

Struts2配置拦截器相关推荐

  1. struts2自定义拦截器并配置拦截器使其生效

    首先编写一个struts2的拦截器,要继承 MethodFilterInterceptor 并获取其中的方法 package star.july.d_interceptor;import com.op ...

  2. dwz ajax session超时跳转登录页(struts2自定义拦截器)

    1.定义struts2拦截器(网上例子很多) 代码如下: package rt.intercepter;import java.util.Map;import javax.servlet.http.H ...

  3. struts2中拦截器的使用

    拦截器的使用 实现AOP 转自http://www.cnblogs.com/fmricky/archive/2010/05/24/1742514.html 1.什么是拦截器(Interceptor) ...

  4. Struts2自定义拦截器

    1. 需求 自定义拦截器实现,用户登录的访问控制. 2. 定义拦截器类 1 public class LoginInterceptor extends AbstractInterceptor 2 { ...

  5. Struts2之拦截器

    一.Struts2有一核心技术是拦截器,英文名为Interceptor.拦截器本来是WebWork框架中一个很好的支持国际化.校验.类型转换的工具.现在WebWork和Struts合并成Struts2 ...

  6. (转)Struts2的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/68648101 Struts2的拦截器 拦截器的概述 拦截器,在AOP(Aspect-Orien ...

  7. Struts2之拦截器篇

    拦截器是Struts2框架的核心和基础,Struts2绝大多数功能都是通过拦截器来完成的,当StrutsPrepareAndExecuteFilter拦截到用户请求后,大量拦截器会对该请求进行处理,然 ...

  8. Struts2 自定义拦截器

    所属栏目:AbstractInterceptor 如果要编写自定义拦截器,那么可以只用实现com.opensymphony.xwork2.interceptor.Interceptor这个接口即可. ...

  9. Struts2【拦截器】就是这么简单

    2019独角兽企业重金招聘Python工程师标准>>> 什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 ...

最新文章

  1. antlr-2.7.6.jar的作用
  2. 98年“后浪”科学家,首次挑战图片翻转不变性假设,一作拿下CVPR最佳论文提名​...
  3. 吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议
  4. SQL Server 系统存储过程
  5. linux下源码软件包的安装
  6. nashorn预编译_Java 8:在新的Nashorn JS引擎中编译Lambda表达式
  7. 【牛客 - 297C】little w and Segment Coverage(差分数组,区间差分,思维,卡线段树)☆
  8. Centos7 安装mysql 需要自己下载 rpm
  9. Hyper-V动态扩展或差异磁盘体积缩小技巧
  10. CentOS 7.X配置连接网络
  11. 常用网站网址、名称、logo列表
  12. android 手机内存清理,教你彻底清理手机内存的最佳方法,只需一招
  13. 揭秘0撸资金盘:区块链噱头,拉人头模式,数亿元收割
  14. 小米手机开启Root权限
  15. C# WPF MVVM 实战 - 1
  16. 有同学问我Java工程师怎么入门?我马上甩出C认证模拟测试推荐给他!
  17. OpenHarmony在Amlogic A311D芯片平台的快速开发上手指南
  18. 调css p 段落间距,CSS段落第一个文字空两格缩进text-indent 和 文字之间间距调整letter-spacing...
  19. cocos2d-x 流星划过特效
  20. HTML5权威指南读书笔记03(第7,8章)--icon,base,锚点,一些七七八八的元素

热门文章

  1. 微信小程序按钮分享好友的onShareAppMessage不起作用的解决办法
  2. CF730J Bottles
  3. win10一直正在检查更新_Win10磁盘占用100%?试试用这8种方法搞定它
  4. iTunes登录出现无法连接-50等错误的解决办法
  5. 【jQuery】slideUp()和slideDown()函数
  6. 子串查找(字符串匹配)
  7. 树莓派.GPRS.短信接收器
  8. week11——作业(水题+背包问题)
  9. Linux环境下DM8的安装部署详细步骤
  10. 获取微信群所有人员的备注