天天看点

传知_11_strus1

Struts1:   DEMO

传知_11_strus1

安装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