Struts1: DEMO
安装Struts1:
1.拷贝JAR包
2.配置web.Xml
a) Struts2采用的是filter(strutsPreAndExecuteFilter)
b) Struts1采用servlet(ActinServlet),并要配置成load-on-startup
3.增加struts-config配置文件,与web.Xml放同一目录
a) 如果将<forward >元素中的redirect设为false,则
4.继承struts1的Action
5. 配置Action
<form-bean name="ActionForm名" type="ActionForm的实现类"/>
<action path="请求" type="Action处理类" name="ActionForm名字"
scope="将ActionForm放入哪个范围(request)">
6. 配置Forward
<forward name="" path="资源" redirect="true/false"/>
如果你把<forward.../>元素中的redirect设为了false,
那会导致请求参数,已经你放入request scope的各种属性全部丢失。
7. 配置Exception
<execption type="异常类" path="资源" scope="指定将异常放入哪个范围(request)"
key="国际化信息key"/>
当Action的execute方法抛出未捕获的异常时,系统转入指定资源。
8. Struts 1的一个Action包含多个处理方法。
a. Action类必须继承 DispatchAction
b. 该Action类里可以包含多个处理方法,
这些处理方法与execute处理方法的方法签名相同。
c. 配置<action .../>多指定一个parameter属性。
d. 要让表单发送请求时,额外地多发送一个请求参数,
该请求参数名为第c步parameter所指定的值。
该请求参数的值决定调用Action的哪个处理方法来处理用户请求。
9. 中文参数
Struts 2 设置一个struts.i18n.encoding常量就够。
Struts 1要自己扩展ActionServlet,重写process方法。
10.输入校验
a. 在struts.xml文件中启用输入校验插件。
用<plug-in.../>元素,该元素指定两个输入校验规则文件。
其中validator-rules.xml由框架提供。
其他的校验规则文件由用户自己编写,
这种文件和Struts 2的校验规则文件的作用相同
b. 拷贝validator-rules.xml文件。
c. 编写校验规则文件。
用户可以编写多个校验规则文件,只要在<plugin.../>元素中指出即可。
常用校验器:
required -
validwhen - 类似于Struts 的表达式校验器
minlength
maxlength
mask - 正则表达式校验器
byte/short/integer/long/float/double
date
range/intrange/floatrange/doublerange
email/url 其实是正则表达式校验器的示例。
<field..../>元素里可以出现如下子元素:
- arg :用于为国际化消息填充占位符。
- var :用于为校验器设置参数。
- msg :直接为某个校验器指定错误提示。
其作用和Struts 2校验规则文件中<message.../>元素相同。
d. 为校验规则添加标准的错误信息
e. 让ActionForm继承ValidatorForm
f. 配置<action .../>增加validate="true"
g. 配置<action .../>时增加input属性,该属性指定校验失败时返回哪个页面。
h. 在页面上使用<h:errors/>或<h:messages.../>输出错误提示。
搞JS客户端校验。
a. 使用<html:javascript .../>导入校验的JS
b. 在<html:form .../>元素里增加οnsubmit="return validateXxxForm(this);"属性。
Strut1可配置数据源,但不用
Struts1的国际化:
1.加载国际化资源文件。它只采用全局方式来加载资源文件
a) 在struts-config.Xml文件中用<message-resource>
使用<bean:message>输出
<bean:message>的key指定国际化的key
arg0~arg4用于为国际化消息里的占位符
Bean Tags标签被JSP EL表达式取代,除了message标签(用于国际化)其他的都没什么用
HTML Tags标签与struts 2的表单标签对应
1.没有两列布局,相当于struts1的simple主题
2.不能输出错误提示
3.Struts1的每个标签基本上就生成一个HTML标签
4.<html:xxx />完成ActionForm和页面上表单之间的绑定
Logic Tags标签被JSTL的c:Tag取代
strut2中的Actin == strut1中的ActionForm + Action
配置Action时,struts1的<forward../>元素和struts2的<reults>元素是功能是相同的,
struts1的核心组件:
ActinForm
a) 继承struts1的ActionForm
b) 为每个请求参数提供对应的属性,并为它们提供setter和getter方法
Action
a) 继承struts1的Action
b) 重写execute方法 [W1]
从servlet2.4以后,TLS文件就不用给它指定一下location,会放到包里自动加载的
ActionString只是String的封装,本质上还是字符串,禁止在代码中构造对象,因为这种方式属性硬编码耦合;
ActinMapping通常用于创建ActionForward