struts2知识总结_struts2知识小结

2020-02-28 其他工作总结 下载本文

struts2知识总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“struts2知识小结”。

struts2知识总结

1.全局的逻辑控制器为一个过滤器,负责过滤所有的请求。该过滤器引用的API类为

org.apache.struts2.disapatcher.FilterDispatcher

2.MVC:页面请求(jsp)——>逻辑控制器(Filter)——>业务控制器(Action)——>业务逻辑组件——>业务处理/DAO

3.struts2的配置文件放在clapath下。

4.struts2的类型转换:

a.继承DefaultTypeConverter,覆盖父类的public Object convertValue(Map context, Object value, Cla toType)方法

b.继承StrutsTypeConverter, 覆盖父类的public Object convertFromString(Map context, String[] values, Cla toCla)该方法负责转换从页面传递过来的数据。

覆盖父类的public String convertToString(Map context, Object o)

该方法负责将Action中处理好的数据转换成相应格式的字符串。

5.struts2的数据验证:

a.使用编码方式进行验证。业务控制器Action继承ActionSupport类,重写public void validate()方法。

在该方法中进行数据验证。若Action中处理业务的方法为test,则可以编写public void validateTest()方法,来对test方法的数据进行验证。(系统在进行validateTest方法后,会接着执行validate方法,然后

才执行相应的业务代码。)

若严重出错,则可以调用addFieldError或者调用addActionError方法,增加相应的错误提示信息。

b.使用配置xml文件进行验证。验证文件的名字为:×××Action-validation.xml。验证的方式包含字段验证和非字段验证。

其中字段验证表示对某个字段进行某些类型的验证。非字段验证表示用某个类型的验证来验证,某个字段。两种方式

底层实现一样,只是表现方式不同,字段验证方式比较直观。

验证的类型有一下几种:required,requiredstring,int,date,double,expreion,fieldexpreion email,url,visitor,conversion,stringLength,regex(正则表达式)。

对验证类型可以指定shourt-circuit参数为true,来执行短路验证。

如果Action中执行业务的方法为test,则可以通过编写×××Action-test-validation.xml方法来对test方法的数据进行 验证。且执行完test方法的私有验证文件后,还会执行默认的验证文件×××Action-test-validation.xml的验证。

c.struts2进行客户端的验证。首先需要使用struts2的标签库,且标签库的theme属性不能为simple,然后设置标签的validate属性为true。

注意:struts2的客户端验证依赖于服务器的验证配置文件。

6.struts2的拦截器。struts2的拦截器是struts2的核心,其底层实现使用了Java的反射机制与动态代理。在struts2的配置文件中

为一个Action引入了一个拦截器,则配置的默认拦截器不会被调用,需要手工配置到该Action中。

实现struts2拦截器的方法:

a.实现Interceptor接口,并实现init,destrory以及intercept方法。

b.继承AbstractInterceptor类,覆盖intercept方法。

c.继承MethodFilterInterceptor类,覆盖intercept方法。该类可以对特定的方法进行拦截。

拦截器栈可以包含拦截器和拦截器栈。

7.文件的上传和下载:

a.使用apache组织开发的commons-fileupload和commons-io包,并且按需要配置fileUpload拦截器和相应的上传参数,比如上传文件的类型,上传文件的大小。多文件的上传可以使用js代码来在页面修改上传文件的列表,在Action中

则用三个列表分别来保存文件对象(file),文件名(fileName),以及文件类型(fileContentType)。

b.文件下载使用流进行读取:return ServletActionContext.getServletContext.getResourceAsStream(“文件名”)并将Action的结果返回类设定为stream,即流。按需要配置相应的参数。

8.struts2的国际化。struts2国际化的底层实现用到了Java基础类库中的Locale(地区)和ResourceBundle(消息资源)两个类。

struts2的国际化主要用在一下几个地方:

a.jsp页面:使用struts2的标签时,指定标签的key属性(对应消息资源文件中的key)。

使用 标签取得消息资源信息。

还可以用标签来指定特定的消息资源文件。

b.Action中:调用getText(key)或者getText(key,args)方法取得消息资源文件中的消息资源。

c.xml验证文件中:指定meage元素的key属性(对应消息资源文件中的key)。(怎么传参数?)d.类型转换过程中:通过查看xwork包的源代码可以找到:ge.properties文件中可以找到如下的键值对:

xwork.default.invalid.fieldvalue=Invalid field value for field “{0}”.在消息资源文件中重新指定该键值对即可。

另外在struts.properties中设定键值对struts.i18n.encoding=GBK,可以解决中文乱码问题。

9.struts2的异常处理。在Action中,我们的业务逻辑处理方法都对抛出异常进行了声明。具体的异常对应具体的处理结果。

在action配置中:

还可以配置全局的异常处理:

struts2的其他东西:

1.对于struts.xml中的package:

a.设置

,则表明该包中没有action的配置,只定义一个基础公共的组件。

b.package的namespace可以将不同的请求路径分隔开,在多人合作项目中用到比较多。当接收到一个请求,若在当前的namespace中没有相应的请求地址,则会到默认的namespace中去寻找匹配的地址。

2.模型驱动机制(ModelDriven),将一个Action中的各个参数封装成为一个JavaBean(类似struts1.x中的ActionForm)。需要实现ModelDriven接口,并实现getModel方法。当一个Action实现ModenDriven接口后,该Action会被ModenDrivenInterceptor拦截,进行相应的参数设置。

3.防止表单的重复提交:在jsp的表单中设置标签。并且在相应的Action 中设置token拦截器和名为invalid.token的返回结果。相应出错信息的key为struts.meage.invalid.token。

配置该key,来实现国际化。

4.struts2中Action与Servlet容器的耦合。主要有三种方式: a.实现ServletRequestAware或ServletResponseAware接口。并提供对request或者response熟悉的设置方法。

b.使用ActionContext(但不能获得response对象)。改方法方便单元测试。

c.使用ServletActionContext。ServletActionContext是ActionContext的子类。

首选使用ActionContext,其次ServletActionContext。

5.整合多个struts配置文件,在struts2的配置文件中使用include元素包含其他的配置文件。用于多模块开发。

6.可以在web.xml中对struts2的核心过滤器FilterDispatcher设置初始化参数(不推荐使用)。

7.动态方法调用(DynamicMethodInvocation).a.action配置中指定:

b.在客户端即页面指定:

c.使用通配符:,若Action的url为helloLogin,则调用LoginAction的hello来处理业务。此种方法简化了配置,但是

使得程序不明了,不提倡使用该方法。

8.struts2的结果类型。在struts2-core包中,有几种struts2已经配置好的结果类型。

其中默认的类型为dispatcher,此外还有:redirectAction,chain,freemaker,httpheader,redirect, redirectAction,stream,velocity,xslt,plainText。

9.struts2与spring的整合。导入struts2-spring-plugin包,在web.xml中设置spring的监听器, spring监听器对应的API类为:org.springframework.web.context.ContextLoaderListener。

struts2-spring-plugin包为我们将struts2的对象工厂设置为spring的IoC容器,其代码为:

很明显,将struts.objectFactory定位为org.apache.struts2.spring.StrutsSpringObjectFactory 其余的工作就交给spring的IoC容器去做了。

另外:当我们需要增加spring的配置文件时,需要在web.xml中设定contextConfigLocation参数。代码如下:

contextConfigLocation

其他的spring配置文件名,用逗号隔开

需要注意的一些地方

1.存储fieldError的是一个LinkedHashMap;而actionError则存储在一个ArrayList中。

ActionSupport中的getFieldError方法返回的是一个新的集合。该集合是原fieldError集合的一个副本。

在struts2的源代码中返回的是:new LinkedHashMap(internalGetFieldError),即一个新的集合对象。

所以执行代码:this.getFieldErrors.put(“username”,“ErrorMsg”);不会影响原fieldError集合的数据。

2.若一个Action注册了PreResultListner,则会在该Action返回的时候调用相应结果验证的逻辑代码。

3.struts2-core包中的default.properties和struts-default.xml文件保存了一些struts2默认的配置。

可以在自己的struts配置文件中对相应的配置进行覆盖或重新设值。比如修改请求的后缀名:在struts.properties 中加入:

struts.action.extension = do 则将struts2请求的后缀名修改成了struts1中的do后缀名的形式。

4.在配置文件中配置struts.multipart.saveDir来设定上传文件时的临时文件的存储位置。需要定期清理该路径下的文件。

struts2

搭建Struts2环境时:1找到开发Struts2应用需要使用到的jar文件.2编写Struts2的配置文件3在web.xml中加入Struts2 MVC框架启动配置大家可以到http://struts.apache.org/downloa......

struts2面试题(自己总结)

Struts2面试题1、struts2工作流程Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 核心控制器FilterDis......

easyui结合struts2总结

easyui 结合Struts2 总结1 在把struts2框架搭好以后,由于easyui和后台交互主要是靠ajax来进行的并且返回的数据格式是json形式的。所以我们必须在项目中引入struts2-json-plu......

struts2课件

—高级软件人才实作培训专家!Struts2的启动配置在struts1.x中,struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:struts2o......

Struts2介绍

Struts2集成指南关于Struts2 Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java Servle......

《struts2知识总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
struts2知识总结
点击下载文档
相关专题 struts2知识小结 知识 struts2知识小结 知识
[其他工作总结]相关推荐
[其他工作总结]热门文章
下载全文