一、细说常量配置
A)配置:常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下:
在struts.xml文件中配置常量
<struts>
<constant name="struts.action.extension" value="do"/>
</struts>
在struts.properties中配置常量
struts.action.extension=do
B)Struts2文件加载顺序:
struts-default.xml 、struts-plugin.xml 、struts.xml 、struts.properties 、Web.xml
如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.
C)常用常量简介:
struts.i18n.encoding 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出
Struts.action.extension 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开
struts.serve.static.browserCache 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
Struts.configuration.xml.reload 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
struts.devMode 开发模式下使用,这样可以打印出更详细的错误信息
struts.objectFactory 与spring集成时,指定由spring负责action对象的创建
struts.enable.DynamicMethodInvocation 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false
struts.multipart.maxSize 上传文件的大小限制 默认是2M
二、在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件
<include file="struts-user.xml"/>
<include file="struts-order.xml"/>
三、动态调用方法,指定一个action则可以调用不同的方法
首先我们需要在action标签中设置name的时候用*号代表占位符
<action name="helloworld_*" class="cn.csdn.action.HelloWorldAction" method="{1}">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
这样我们就可以用helloworld!add.action访问 或者用hellworld_add.action访问add的方法
四、接受请求参数
a) 接受基本的参数类型:Struts2内置的类型转换来自动转换
b) 复合类型接受请求参数
在其中定义实体类user的实例对象左右action的属性并且指定了set方法
那就可以在form表单中使用user.id user.name来指定name属性。Struts2就可以将表单中的值赋给user这个对象并且封装
四、类型转换
a) 类型转换器实现
使用这种方式也可以使用java类的封装,一般分为三步来实现
1、添加视图界面。 在input中的name属性指定成user即可
2、实现User封装类
3、实现action类 封装User类的实例属性并且生出set方法
4、实现User类型转换UserConverter类 继承ognl.DefaultTypeConverter
5、实现注册,可以实现全局类型转换器和局部类型转换器
a) 全局转换器,配置xwork-conversion.properties 放在src目录下在内容指定key-value值 为 需要转换的实体类的类名+包名 指定对应的converter的类名+包名
b) 局部转换起 配置
指定action中的实体实例的属性名和对应的converter的类名+包名
b) 自定义类型转换
i. 将类型转换器配置成全局级别只需要编写一个xwork-conversion.properties文件。放在src目录下。Key-value指定需要转换的实体类与转换器类内容如下: java.util.Date=demo.converter.MyDateTypeConverter
ii. 可以继承ognl.DefaultTypeConverter类。也可以继承org.apache.struts2.util.StrutsTypeConverter这个类,实现两个方法来实现 自定义转换器