abstractinterceptorabstract 的用法

abstractinterceptor  时间:2021-06-05  阅读:()

struts2 继承AbstractInterceptor所实现的拦截器和 实现Interceptor接口的拦截器有什么区别

Struts2与Struts1的对比 Action 类: Struts1要求Action类继承一个抽象基类。

Struts1的一个普遍问题是使用抽象类编程而不是接口。

Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。

Struts2提供一个ActionSupport基类去实现 常用的接口。

Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

线程模式: Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。

单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。

Action资源必须是线程安全的或同步的。

Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题) Servlet 依赖: Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。

Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,Struts2 Action仍然可以访问初始的request和response。

但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。

可测性: 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。

一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。

Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕获输入: Struts1 使用ActionForm对象捕获输入。

所有的ActionForm必须继承一个基类。

因为其他JavaBean不能用作ActionForm,开发者经 常创建多余的类捕获输入。

动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。

Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

输入属性可能是有自己(子)属性的rich对象类型。

Action属性能够通过 web页面上的taglibs访问。

Struts2也支持ActionForm模式。

rich对象类型,包括业务对象,能够用作输入/输出对象。

这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。

表达式语言: Struts1 整合了JSTL,因此使用JSTL EL。

这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL). 绑定值到页面(view): Struts 1使用标准JSP机制把对象绑定到页面中来访问。

Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

类型转换: Struts 1 ActionForm 属性通常都是String类型。

Struts1使用Commons-Beanutils进行类型转换。

每个类一个转换器,对每一个实例来说是不可配置的。

Struts2 使用OGNL进行类型转换。

提供基本和常用对象的转换器。

校验: Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。

同一个类可以有不同的校验内容,但不能校验子对象。

Struts2支持通过validate方法和XWork校验框架来进行校验。

XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性 Action执行的控制: Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。

堆栈能够根据需要和不同的Action一起使用。

来源:

Struts2中过滤器和拦截器的区别

首先,struts2进行权限验证是用拦截器做的 一个简单的登录拦截器示例如下: .zdf.interceptor; .opensymphony.xwork2.Action; .opensymphony.xwork2.ActionInvocation; .opensymphony.xwork2.interceptor.AbstractInterceptor; .zdf.entity.Admin; @SuppressWarnings("serial") public class LoginInterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub Admin admin = (Admin)invocation.getInvocationContext().getSession().get("ADMIN"); if(admin!=null){ return invocation.invoke(); }else{ return Action.LOGIN; } } }

servlet怎么使用拦截器

实现Servlet.Filter接口 public class AdminLoginFilter implements Filter 新建一个实现filter接口的类,实现dofilter方法,在dofilter方法里面写一个判读,比如如果用户名密码为空,则返回到登录页面 public class TestFilter implements Filter { public void doFilter(ServletRequest srt, ServletResponse sre, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)srt; HttpServletResponse response = (HttpServletResponse)sre; String name= (String)request.getSession().getAttribute("name"); if( name== null || name.trim().length() < 1) { response.sendRedirect( "/denglu.jsp" ); }else { filterChain.doFilter(request, response); } } web.xml配置过滤器 TestFilter /test/TestFilter 配置多个映射,哪些请求执行过滤器 TestFilter /web-inf/test/* TestFilter /login.do TestFilter /loginin.do

abstract class和interface的区别

1.相同点   A. 两者都是抽象类,都不能实例化。

  B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。

  2. 不同点   A. interface需要实现,要用implements,而abstract class需要继承,要用extends。

  B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。

  C. interface强调特定功能的实现,而abstract class强调所属关系。

  D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。

interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。

而abstract class的子类可以有选择地实现。

  这个选择有两点含义:   一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。

那些没有abstract的方法,在Abstrct class中必须定义方法体。

  二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。

既是抽象类,当然也不能实例化。

  E. abstract class是interface与Class的中介。

  interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也 不能声明实例变量。

然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。

但将常量变量放在interface中违背了其作为接 口的作用而存在的宗旨,也混淆了interface与类的不同价值。

如果的确需要,可以将其放在相应的abstract class或Class中。

  abstract class在interface及Class中起到了承上启下的作用。

一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。

另外,它还可以定义自己 的实例变量,以供子类通过继承来使用。

  3. interface的应用场合   A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。

  B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。

  C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。

  D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。

  4. abstract class的应用场合   一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。

最常见的有:   A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。

可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。

  B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。

abstract的中介作用可以很好地满足这一点。

  C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。

ssh2中如何配置拦截器

<interceptors> <interceptor name="authenticationInterceptor" class=&.*.*.interceptor.AuthenticationInterceptor" /><!--自定义的拦截器--> <interceptor-stack name="crudStack"> <!--需要引入的拦截器--> <interceptor-ref name="authenticationInterceptor" /> <interceptor-ref name="store"> <param name="operationMode">AUTOMATIC</param> </interceptor-ref> <interceptor-ref name="paramsPrepareParamsStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="crudStack" />

abstract 的用法

abstract中文意思抽象。

在语句中拥有不同的时态形式,不同的意思。

作形容词时意思为“抽象的;抽象派的”。

作名词意思为“摘要;抽象”。

作动词时意思为“摘要;提取;抽象化;退出;转移”。

abstract 释义以及用法如下: 1、作形容词(adj.)时意思为“抽象的;抽象派的”。

This painting belongs to the abstract school。

这幅画属于抽象派的画作。

2、作名词(n?.)意思为“摘要;抽象”。

money is an abstract thing for her. She never thinks about it. 钱对她来说就是个抽象的东西,她从不去想钱。

3、作动词(v.)时意思为“摘要;提取;抽象化;退出;转移”。

a licence to abstract water from the River Axe. 从阿克斯河中抽水的许可证。

abstract英式发音为[??bstr?kt ]。

美式发音[??b?str?kt]。

第三人称单数:abstracts。

复数:abstracts。

现在分词:abstracting。

过去式:abstracted。

扩展资料: 一、abstract?短语搭配 1、abstract system抽象系统 ; 抽象体系 ; 翻译 2、abstract thinking抽象思维 ; 抽象思考 ; 性思考 3、abstract painting抽象画 ; 抽象绘画 ; 抽象油画 ; 抽象画酒店装饰画 4、abstract good抽象产品 5、English Abstract英文摘要 ; 英文文摘 ; 英语摘要 ; 中文摘要 6、abstract space抽象空间 ; 抽象的空间 ; 详细 二、abstract 的同义词 1、conceptual概念性 2、theoretical理论的

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

Hostwinds:免费更换IP/优惠码美元VPS免费更换IP4.99,7月最新优惠码西雅图直连VPS

hostwinds怎么样?2021年7月最新 hostwinds 优惠码整理,Hostwinds 优惠套餐整理,Hostwinds 西雅图机房直连线路 VPS 推荐,目前最低仅需 $4.99 月付,并且可以免费更换 IP 地址。本文分享整理一下最新的 Hostwinds 优惠套餐,包括托管型 VPS、无托管型 VPS、Linux VPS、Windows VPS 等多种套餐。目前 Hostwinds...

快快云:香港沙田CN2/美国Cera大宽带/日本CN2,三网直连CN2 GIA云服务器和独立服务器

快快云怎么样?快快云是一家成立于2021年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,快快云目前提供有香港云服务器、美国云服务器、日本云服务器、香港独立服务器、美国独立服务器,日本独立服务器。快快云专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为业务推进提供强大...

abstractinterceptor为你推荐
李智慧李智慧的《Goodbye to romance》的中文歌词cpu监控win10自带cpu温度监控小四号字Excel小四号字等于几号字awv请问awv是什么样的格式啊?js后退多级页面间的后退如何实现(js方法)什么是生态系统生态系统的我主要特征是什么?xcelsiussap bi是什么人脸识别解锁oppo人脸识别解锁监控插件观看远程监控时,提示需要一个插件来显示汤不热福利手机汤不热太卡怎么办
域名主机空间 东莞服务器租用 淘宝二级域名 已备案域名出售 中国万网域名 greengeeks sugarhosts 亚洲大于500m l5639 vmsnap3 韩国电信 42u机柜尺寸 parseerror html空间 gg广告 web服务器的架设 域名转接 hkt 上海联通宽带测速 怎么建立邮箱 更多