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 那 ...
随机推荐
- win10 mysql57密码重置
[摘要: 1.my-default.ini 更名my.ini 正在解压的目次上面复造my-default.ini一份更名字为 my.ini. 2.翻开 Windows 情况变量设置, 新建变量名 MY ...
- [88221008]调用新下单接口失败,result:162020004,resInfo
[88221008]调用新下单接口失败,result:162020004,resInfo
- TCP/IP具体解释学习笔记——地址解析协议ARP
一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...
- 【pyhon】nvshens图片批量下载爬虫
代码: # nvshens图片批量下载爬虫 from bs4 import BeautifulSoup import requests import time import urllib.reques ...
- Linux ${} 变量内容的提取和替换功能等
[root@localhost log]# var=/dir1/dir2/file.txt 1.对变量取值 [root@localhost log]# echo ${var} /dir1/dir2/f ...
- SQLServer 之 Group By 和 Compute By
创建测试表,如下: CREATE TABLE tableTest ( Id INT PRIMARY KEY, DepartMent ), Name ), Salary int ) 添加测试数据,如下图 ...
- Google C++ Coding Style 学习笔记
写在前面:最新公司马上就要开始开发一款视觉产品,工程量较大,且需要对客户提供可以二次开 发的SDK,整个项目用C++编写. 这就对代码质量提出了非常高的要求,同时,如何设计出优雅稳定的API也是相当大 ...
- 2、JSP脚本
JSP脚本 JSP脚本包含了JSP表达式.声明标识和脚本程序.通过这些标识,在JSP页面中可以如同编写Java程序一样来声明变量.定义方法和执行各种表达式的运算 1.在JSP中应用代码片段 语法格式: ...
- CSS border 生成三角
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- FastDFS简易概括
FastDFS是一个文件系统,可以部署在Linux上. 该文件系统具备高可用和负载均衡特性,还可以动态扩充容量. 此文件系统有两个服务组成:跟踪服务和存储服务,也就是说你必须部署了这两种服务,这个文件 ...