ssh2——Interceptor拦截器
尽管没学过struts1吧。可是了解到struts1中并没有拦截器, 到Struts2才有。它是基于WebWork发展起来的, 顾名思义,说到拦截器大家首先肯定会想到它是拦截东西的,起到一个限制的作用。那么好,在这里它是拦截什么的呢?在struts2中拦截器是用来拦截Action的。在运行Action之前拦截器会起一定的作用,运行一些预先处理的代码, 接着去运行Action中相关的方法,之后,又会回到拦截器里面,接着去运行兴许的一些操作。刚刚学习,假设我理解的不正确的话,请大家留言指正啊。
Struts2拦截器原理
定义拦截器
- public class MyInterceptor implements Interceptor{
- @Override
- public void destroy() {
- System.out.println("--destroy()--");
- }
- @Override
- public void init() {
- System.out.println("--init()--");
- }
- @Override
- public String intercept(ActionInvocation invocation) throws Exception {
- System.out.println("--intercept()--");
- Map<String,Object> session= invocation.getInvocationContext().getSession();
- if(session.get("username")!=null){
- return invocation.invoke();
- }
- else{
- return"error";
- }
- }
- }
- //当须要对action中指定的方法须要拦截的时候须要用的MethodFilterInterceptor
- //public class MyInterceptor extends MethodFilterInterceptor{
- public class MyInterceptor extends AbstractInterceptor{
- @Override
- public String intercept(ActionInvocation invocation) throws Exception {
- System.out.println("--intercept()--");
- Map<String,Object> session= invocation.getInvocationContext().getSession();
- if(session.get("username")==null){
- return "error";
- }
- else{
- return"user";
- }
- }
- }
说明:自己定义的接口须要继承自AbstractInterceptor的类。com.opensymphony.xwork2.interceptor.Interceptor接口。声明了3个方法,包含init,destroy和intercept方法,当中,init和destroy方法会在程序開始和结束时各运行一遍。无论使用了该拦截器与否,仅仅要在struts.xml中声明了该Struts2拦截器就会被运行。intercept方法就是拦截的主体了。每次拦截器生效时都会运行当中的逻辑。
只是,struts中还提供了抽象类来简化这一步骤。public class MyInterceptor extends MethodFilterInterceptor和public class MyInterceptor extends AbstractInterceptor,当中AbstractInterceptor提供了init()和destroy()的空实现。使用时仅仅须要覆盖intercept()方法;而MethodFilterInterceptor则提供了includeMethods和excludeMethods两个属性,用来过滤运行该过滤器的Action的方法。能够通过param来增加或者排除须要过滤的方法。
注冊拦截器
- <interceptors>
- <interceptor name="myInterceptor" class="MyInterceptor"></interceptor>
- <interceptor-stack name="defaultInterceptorStack">
- <interceptor-ref name="myInterceptor"></interceptor-ref>
- <interceptor-ref name="defaultStack"></interceptor-ref>(必须加,否则出错)
- </interceptor-stack>
- </interceptors>
配置拦截器
配置都是在struts.xml里面的,以下是我的一个小样例,注意:在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack。
- <package name="testLogin" namespace="/" extends="struts-default">
- <interceptors>
- <interceptor name="myInterceptor" class="MyInterceptor"></interceptor>
- <interceptor-stack name="defaultInterceptorStack">
- <interceptor-ref name="myInterceptor"></interceptor-ref>
- <interceptor-ref name="defaultStack"></interceptor-ref>(必须加,否则出错)
- </interceptor-stack>
- </interceptors>
- (这句是设置全部Action自己主动调用的拦截器堆栈)
- <default-interceptor-ref name="defaultInterceptorStack"></default-interceptor-ref>
- <action name="Login" class="LoginAction">
- <result name="user">/user.jsp</result>
- <result name="error">/error.jsp</result>
- <interceptor-ref name="defaultInterceptorStack"></interceptor-ref>
- </action>
- </package>
说明:至于前面说到的Action里边必须在最后引用struts2自带的拦截器缺省堆栈defaultStack。实际我也不是非常清
楚。只是后边还会深入的理解这一知识点,再来补充。
这样,我们的拦截器就能使用啦,这仅仅是拦截器非常基础的一部分,简单能实现了,刚刚接触ssh。随后还须要通过总结来填充这一部分的学习,记得视频中讲到它与filter有一定的关系与差别,当时没有细致的考虑,接下来会通过对filter的学习比較它与interceptor的差别。
ssh2——Interceptor拦截器的更多相关文章
- SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- Spring MVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- SpringMvc中Interceptor拦截器用法
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆等. 一. 使用场景 1 ...
- SpringMVC 中的Interceptor 拦截器
1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...
- SpringBoot-SpringMvc的Interceptor拦截器配置
Interceptor拦截器实现对每一个用户请求处理前后的业务处理,比如我们需要对用户请求进行响应时间的记录,需要记录请求从开始到结束所耗的时间,这时我们就需要用到拦截器了 下面我们以记录请求处理时间 ...
- SpringMVC中使用Interceptor拦截器顺序
一.简介 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验 证,或者是来判断用户是否登陆,或者是像1 ...
- 【tmos】如何在Interceptor拦截器中注入其他数据
光是这样是获取不到weixinConfig内容的 public class WebLoginInterceptor implements HandlerInterceptor { @Autowired ...
- SpringMVC中的Interceptor拦截器及与Filter区别
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- [转]SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
随机推荐
- [ACM] POJ 2524 Ubiquitous Religions (并查集)
Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 23093 Accepted: ...
- ThinkPad如何修改fn键默认操作
ThinkPad如何修改fn键默认操作 ThinkPad笔记本如何修改fn键默认操作 Fn键F1-F12
- 递归方式 DOM 解析(parse) XML
friends.xml <span style="font-size:16px;"><?xml version="1.0" encoding= ...
- Openerp 中打开 URL 的三种 方法
来自:http://shine-it.net/index.php/topic,8013.0.html 最近总结了,Openerp 中打开 URL 的三种 方法: 一.在form view 添加 < ...
- 51CTO 资料汇总 截止20150504
================帖子列表,请大家选择自己喜欢的汇总贴分享================ 考试认证: 1.备战2014软考!精品视频教程推荐(综合复习+经验分享+考前冲刺)[随时更新] ...
- 【CentOS6.5】MySQL安装和配置
1./etc/my.cnf 这是mysql的主配置文件 2.数据存放位置 3.错误存放位置
- centos时间调整的操作(转)
在我们使用CentOS系统的时候,也许时区经常会出现问题,有时候改完之后还是会出错,下面我们就来学习一种方法来改变这个状况. 如果没有安装,而你使用的是 CentOS系统 那使用命令 yum ins ...
- 你所不知道的 CSS 阴影技巧与细节 滚动视差?CSS 不在话下 神奇的选择器 :focus-within 当角色转换为面试官之后 NPOI 教程 - 3.2 打印相关设置 前端XSS相关整理 委托入门案例
你所不知道的 CSS 阴影技巧与细节 关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧,介绍了一些关于 box-shadow ...
- github get 请求指定页面的代码
https://raw.githubusercontent.com/dragon8github/wx-h5/master/push.sh
- mac shell终端编辑命令行快捷键——行首行尾
mac shell终端编辑命令行快捷键——行首行尾 ctrl+a //移到行首ctrl+e //移到行尾===========linux系统用============alt+a //移到光标所在单词首 ...