Struts2学习笔记1——基础知识

来源:互联网 发布:梁朝伟演技 知乎 编辑:程序博客网 时间:2024/05/16 02:14

 

1.Struts2是现在Web开发中一个比较流行的MVC框架,它是由WebWork框架发展而来的,Struts1Struts2如同小熊猫与大熊猫一样,虽然名字相同,但是区别比较大,Struts2充分吸收了Struts1的优秀之处,同时也避免了Struts1的不足之处,开发更方便快捷。

2.Struts2web.xml文件中主要配置一个过滤器用于接收页面请求,并将请求转发给后台逻辑处理,其作用类似于Struts1中的ActionServlet。其具体配置如下:

 

配置过滤器和配置Servlet类似,熟悉Servlet的人应该很容易看懂这段配置。

3.在页面上使用Struts2的标签时,需要在页面引入Struts2的标签库:

 

4.Struts2的后台处理逻辑主要是一个Action,与Struts1不同的是:

a:Struts2中没有ActionFromStruts2Action相当于Struts1中的ActionActionFrom的组合。Struts2Action中接收页面请求数据,同时进行业务逻辑处理。

b.Struts2Action可以不继承任何东西,就是一个普通的POJO,也可以继承ActionSupport

5.Struts2的数据类型转换:

Web页面中收集的数据都是String字符串类型,为了使数据类型转换成所需要的目标类型数据,就需要数据类型转换。

(1).简单数据类型Struts2会自动进行转换。

(2).复杂类型转换:

a.编写自定义的转换处理类,继承DefaultTypeConvert类,实现其ObjectconvertValue(Map context, Object value, Class toType);方法,其中toType为要转换成的目标类型。

b.在需要进行转换属性的Action的同一目录下建立属性文件,

文件名命名规则:被转换Action名字-conversion.properties

然后在属性文件中写如下内容:

要转换属性名=第一步中写的转换处理类全路径

c.还可以定义全局类型转换:

适用于所有Action中符合条件的类型转换。具体方法:

/src根目录下建立“xwork-conversion.properties”转换属性文件。

在属性文件中写如下内容;

被转换类全路径名=第一步中写的转换处理类全路径

6.简化的Struts2数据类型转换:

一般的Struts2工程在数据类型转换时,很少直接继承DefaultTypeConverter类,而是继承一个抽象类:com.apache.struts2.util.StrutsTypeConverter类,需要重写该类的以下两个方法:

(1).converterFromString(Map context,String[] value, Class toClass);从页面端向服务器端数据类型转换。

(2).converterToString(Map context, Objectvalue);从服务器端向页面端字符串进行数据类型转换。

7.改变Struts2表单的默认布局:

Struts2的标签默认将表单封装在一个table中,如果不想使用Struts2默认的表格布局,可以在表单输入域中加上“theme=’simple’”即可。

注意:当表单加上“theme=’simple’”,表单的label不再起作用。

8.Struts2的校验错误提示信息:

(1).字段错误信息:

a.Action校验失败时,添加错误提示信息:Action对象.addFieldError(“被验证字段”,“错误信息”);

b.在页面表单中字段下添加<s:fielderror>标签,当校验出错时,错误信息会自动显示到字段上。

(2).Action错误信息:

Struts2表单只能信息字段错误信息,若要信息Action的错误信息,则需要在表单外添加<s:actionerror>标签,用于显示Action级别的错误信息。

9.Struts2的校验和转换:

校验和转换时结合在一起的,需要先进行类型转换,然后才能进行验证。类型转换时如果失败,则会自动变为输入域类型的默认值,如int自动为0String自动为null等。

类型转换和输入校验的流程:

(1).Struts2对页面端传来的数据进行数据类型转换。

(2).类型转换完毕,进行输入校验。

(3).如果类型转换和输入校验都通过,那么进行Actionexecute方法调用具体业务逻辑处理。

注意:如果类型转换不成功时,也同样要进行输入校验。

10.Struts2的输入校验——XML方式调用Struts2校验框架:

(1).在和Action同一目录下建立校验文件,命名规则:“Action名字-validation.xml”,在校验文件中定义具体的校验规则。

(2).对于Action中有多个业务逻辑方法,类似于Struts1DispatchAction一个Action中包含多个业务逻辑处理方法,针对特定的方法进行校验时,校验文件命名规则:“Action名字-被校验方法名-validation.xml”。

11.Struts2的输入校验——Action校验:

(1).Struts2Action中进行输入校验,需要实现ActionSupportvalidate()方法。

validate()是对execute()方法进行校验。

注意:Action直接写validate()方法校验和XML校验框架两种方式最好只选择一种,免得引起冲突。

(2).对于Action中有多个业务逻辑方法,针对特定的方法进行校验时,校验方法名命名:“validate被校验方法首字母大写”,如校验方法update的方法命名为validateUpdate

12.Struts2的输入校验——客户端校验:

在页面提交时进行校验

(1).页面表单的validate属性设置为true

(2).Action同一目录下加入“Action名字-validation.xml”的XML校验框架文件

注意:在运行时,Struts2会根据校验框架自动在页面生成javascript代码进行校验。

13.Struts2校验信息存储和校验执行顺序:

(1).Struts2中,字段级别的错误信息对象存放在一个LinkedHashMap集合中,该Mapkey是字段名,valueArrayList类型。Action级别的错误信息对象存放在ArrayList中。

(2).Struts2校验执行顺序:客户端校验—>XML校验框架—>Actionvalidate方法校验。

14.Struts2中实现一个Action处理多个业务逻辑

类似于Struts1中的DispatchAction,要在Struts2中实现一个Action处理多个业务逻辑,需要在Struts2的配置文件struts.xml中的<action>标签配置method属性,如:

 

注意:如不指定method属性,则默认执行execute()方法。

15.Struts2的国际化:

(1).Struts2的配置文件Struts.xml<struts>标签元素下添加:

 

注意:value中的国际化资源文件名要去掉后缀“.properties”。

(2)./src根目录下添加国际化资源文件。

Struts2的国际化资源文件命名规则:

baseName_language_country.properties

如:message_en_US.propertiesmessage_zh_CN.peroperties

注意:language必须是小写,country必须是大写的,千万不可写错。

16.使用国际化资源文件替换Struts2验证框架默认的错误提示信息:

在国际化资源文件中加入:“xwork.default.invalid.fieldvalue={0}error”。

同类型转换类似,国际化资源文件也有局部和全局之分,局部资源文件必须和Action放在同一目录下,文件名命名规则为:Action.properties。一般在工程中应尽量多使用局部资源文件而非全局资源文件,因为可以更精细更灵活。

在局部资源文件中替换Struts2验证框架默认错误提示信息方法:

在局部资源文件中添加:“invalid.fieldvalue.被校验字段名=提示信息”。

17.包级别和类级别的局部国际化资源文件:

Struts2的局部国际化资源文件支持包级别和类级别。

(1).包级别的国际化资源文件:

Action同一个包下,添加国际化资源文件,命名规则如下:

Package名称_zh_CN.propertiesPackage名称_en_US.properties.

(2).类级别国际化资源文件:

Action同一目录下添加国际化资源文件,命名规则如下:

Action名称_zh_CN.propertiesAction名称_en_US.properties

18.在资源文件中使用动态参数:

(1).在资源文件的value中使用占位符“{0},{1}”等,如

hello=hello:{0},{1},{2}

(2).使用MessageFormat类格式化value,如:

String result = MessageFormat.format(hello,new Object[]{“zhangsan”,”lisi”,”wangwu”});

19.Struts2中使用国际化:

(1).JSP页面使用国际化资源资源文件:

方式1使用Struts2text标签:使用<s:text name=”资源文件的key”/>

方式2使用Struts2标签中的key属性:如<s:input name=”…” key=”资源文件的key”>

(2).Actionmessage信息国际化:

使用ActionSupport中的getText(资源文件的key);方法。

(3).XML校验框架中使用国际化资源文件:

在校验框架文件的message标签中配置key=”资源文件的key”即可。

20.临时国际化资源文件:

Struts2JSP中也支持指定临时的国际化资源文件,方法为:

 

注意:其中的<s:text>还可以使用<s:param>指定参数。

21.Struts2使用国际化资源文件的原理:

(1).获得LocaleLocale locale= Locale.US/Locale.CN等等。

(2).根据Locale匹配国际化资源文件:

 

(3).通过资源文件的key获取配置文件中的value

 

 

原创粉丝点击