`
strong_fee
  • 浏览: 176014 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

struts1.x总结

阅读更多

申明:总结参考视频《尚学堂Struts》

 

一、Locale

1、缺省Locale是由操作系统决定的,Locale是由语言和国家代码组成

2、国际化资源文件是由baseName+locale组成,如:MessageBundle_en_US.properties

baseName是任意合法的文件名

3native2ascii命令的位置和用法

     * 位置:JAVA_HOME/bin

     * 使用native2ascii.exe  o.properties MessagesBundle_zh_CN.properties

4Struts国际化的实现

(1)       struts-config.xml中加入<message-resources parameter="res.MessageResources" />其中parameter中的值为baseName

(2)       在浏览器中设置语言,如果不存在浏览中对应的语言资源文件,则采用操作系统控制面板中默认的Locale

StrutsLocal放置于session中,设置Locale的原理为,判断sessionGlobal.LOCAL_KEY的属性为否存在,如果存在,则使用这个Locale,如果不存在,则从http头(通过浏览器设置),设置session的属性值,如果不存在,则使用控制面板中设置的Locale

(3)       提供国际化资源文件,命名方式如MessagesBundle_zh_CN.properties

(4)       在前端获取国际化语言

通过JSTL,如:<fmt:message key="user.login.lable.userName" />

通过struts标签库,如:<bean:message key="user.login.lable.userName"/>

二、动态ActionForm和文件上传

1、动态ActionForm

         动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能

         * struts-config.xml文件中定义动态ActionForm,如:

         <form-beans>

                   <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">

                            <form-property name="username" type="java.lang.String" />

                            <form-property name="age" type="java.lang.Integer"/>

                   </form-bean>

         </form-beans>

         *Action中使用动态ActionForm,参见DynaActionFormTestAction.java

                   DynaActionForm daf = (DynaActionForm)form;

                   String username = (String)daf.get("username");

                   Integer age = (Integer)daf.get("age");

                   动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值

         动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}, 参见:dyna_actionform.jsp

         动态Action的验证,通常使用动态验证框架validator

2、采用struts上传文件

         * 页面的配置,如:

        <form action="upload.do" method="post" enctype="multipart/form-data">

                标题:<input type="text" name="title"><br>

                文件:<input type="file" name="myfile"><br>

                <input type="submit" value="提交">

       </form>

        * ActionForm中使用FormFile来接收上传的文件,参见:UploadActionForm.java

        * Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,参见:UploadTestAction.java

        * 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>

       

3、空字段测试

         * 在表单中没有input输入域,jsp脚本接收到的值为nullel表达式接收到的值为空串

         * 如果表单中的值,没有输入,那么jsp脚本和el表达式接收到的值都为空串

        

4、测试ActionForm类型的自动转换

         * boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false

         * Date类型的转换:

                   * 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换

                   * 如果是java.util.Date,默认情况下struts无法转换

 

         * 自定义转换器的实现步骤

                   * 实现converter接口,实现convert方法

                   * 将实现的conerter注册,通常情况采用servlet注册

                   * 采用servlet注册需要注意标签的配置,<load-on-startup>10</load-on-startup>(也可以采用struts plugin注册)

                  

StrutsActionForm的自动搜集过程:

  * 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value

  * 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性

    根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型

可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。

三、ActionForward的使用

1、理解全局和局部ActionForward的概念

2redirect的使用

3struts-config.xml文件不允许动态修改

4、理解动态ActionForward,动态的ActionForward是可以运行期修改的

四、ActionMapping

1struts-config.xml文件中,每个<action>标签对应一个ActionMapping实例

2、了解<action>标签中的forwardunknown属性的含义

3、了解采用jstlstruts标签保持页面数据

五、异常

1、编程式异常

         * 截获异常

         * 创建相应的异常消息

         * 传递异常消息

         * 转向相应的页面处理异常

2、声明式异常(自动处理的异常)

         * struts-config.xml文件中配置<exeception/>标签

         * 理解局部和全局exception

         * 注意局部<exception/>标签需要配置到<forward/>标签的前面,详见dtd中的约束

        

         <exeception/>标签中的属性说明:

                   * key:指异常信息对应的国际化消息文本,这个key值需要在国际化资源文件中定义

                   * type: 处理那种异常

                   * path: 定义一但出现异常,需要转向那个页面,如果不定义path

                            默认情况下将使用<action>标签中input属性对应的页面

                   * scope:可以取值requestsession,默认为request

                   * handler:异常的处理类,struts默认采用org.apache.struts.action.ExceptionHandler

                   如果做个性化的异常处理可以继承此类覆写相应的方法

                   参见:ErrorCodeExceptionHandler.javaAppExceptionHandler.java

六、采用DispathAction

         * 如果覆写DispathAction中的execute方法,必须显示的用super调用execute方法

         * parameter参数值不能是executeperform

         * 了解<action>标签中的parameter的含义

         * 了解DispathAction中的unspecified方法的含义

七、struts validator验证框架

1、配置:

         * 加入国际化配置在struts-config.xml文件中,如:

           <message-resources parameter="MessageResources" />

         * 提供国际化资源文件

         * 引入validator插件在struts-config.xml文件中,如:

           <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

             <set-property

        property="pathnames"

        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>

         </plug-in>

       * 提供validation.xmlvalidator_rules.xml文件,将此文件拷贝到WEB-INF

 

2validator服务器端验证

         * 配置validation.xml文件

 

3validator客户端验证(javascript)

)       * 配置validation.xml文件

         * jsp页面中包含< html:javascript>

         * 对需要验证的表单定义onsubmit事件,其中事件名称为validate+ActionForm的名称,如:validateLoginForm

八、Struts国际化

1struts国际化的配置

         * struts-config.xml文件中加入:

<message-resources parameter="MessageResources" />

2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode

3、在jsp中采用<bean:message>标签来读取国际化消息文本

4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置

         * 参见:ChangeLanguageAction.java

        

5、消息文本的国际化处理,共有三个步骤:

         * 创建国际化消息

         * 传递国际化消息

         * 显示国际化消息

         如何创建国际化消息?

         理解ActionMessageActionMessages两个对象的区别

如何传递国际化消息?

         * 调用saveMessage()传递普通消息,调用saveErrors传递错误消息

如何显示国际化消息?

         通过<html:messages>标签显示消息(可以显示普通消息和错误消息)

         通过<html:errors>显示消息(只能显示错误消息)

九、jstl标签库的配置

1  * jstl.jarstandard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar

         注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境

              是目前较为常用的环境

2  标签库的使用

         * 采用taglib指令引入

         <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%> 

         <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

3、自定义函数库:

         1、定义类和方法(方法必须是public static 

         2、编写自定义tld文件,并且将此文件放到WEB-INFWEB-INF任意子目录下

         3、在jsp中采用taglib指令引入自定义函数库

         4、采用 前缀+冒号+函数名 调用即可

 

分享到:
评论

相关推荐

    对struts1.x与struts2.x的区别的总结

    在这里,通过一个小例子稍微总结了下struts1和struts2的区别,希望这个能帮助到初学struts的朋友

    struts1.x 学习总结

    struts1.x 学习总结 struts1.x 学习总结 struts1.x 学习总结 struts1.x 学习总结

    struts的总结(struts1.x)

    增增减减只求精华!struts1.x的总结....... 想下的下吧。

    struts1,struts教程,struts1.x入门

    这几天正在看,里面有一本书,两份struts总结和配置的doc文件,对初学struts的人很有帮助。能够很快的入门并上手开发。

    j2ee学习struts2.x总结1

    NULL 博文链接:https://lxdyycg.iteye.com/blog/1461116

    Struts1.x笔记

    这是我看完传智播客Struts1视屏后对Struts1进行的总结,每次复习都是看这个,自认为还不错,希望对你有所帮助,如果您觉得还行的话,记得给好评哦!

    struts2.x一些技术细节资料总结

    自己总结的一些技术细节资料,很有看的价值,如果你正在用struts2进行开发,那你找到了秘笈

    SSH(Struts1+Spring+Hibernate)配置开发总结

    SSH(Struts1+Spring+Hibernate)配置开发总结,非常的详细,如果大家配置上有什么问题可以留言问我。

    Struts2轻松入门,Struts2总结

    Struts2轻松入门 Struts2总结 Struts2和Struts1.x对比学习

    Struts2入门教程(全新完整版)

    10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7....

    struts标签库总结

    提供struts1.x中标签的总结,包括标签中属性代表的含义等。这是我积累经验后总结的,希望和我一样热爱编程的朋友们能好好利用~

    struts知识点总结

    详细的讲解了struts1.X部分,由浅入深的分析了strtus的内容,对一些难懂的部分,外加了部分代码做参考讲解,看完后能对struts有一个更新的认识

    整合struts2和spring源代码(可以直接在tomcat中运行)

    Struts2与Spring的集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar,这个包是同Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象的...

    Spring 2.0 + Struts 1.2 + Hibernate 3.2 + DWR 2.0 的JavaEE应用示例

    总结,该例示注释非常详细,演示Spring托管Hibernate和Struts的Action, 以及Spring的事务声明(包括1.x与2.x的用法)与非事务声明的使用方式。 使用DWR可以方便的使用Spring托管的持久层功能。 目的:希望广大Java...

    Struts2+Spring+Hibernate知识点总结

    该资源总结了java中常见的三大开源框架的知识点,便于初学者学习。

    webx3框架指南PDF教程附学习Demo

    • Struts • Webwork • Tapestry • Spring MVC 以上框架都是非常优秀的。说实话,如果阿里巴巴网站在2001年开始,就有这么多可选择的话,无论选择哪一个都不会有问题。因为这些年来,所有的开源Web框架都在...

    spring chm文档

    13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 ...

    Spring API

    13.12.1. 建立dispatcher实现注解支持 13.12.2. 使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. 使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一...

    Spring中文帮助文档

    13.12.1. 建立dispatcher实现注解支持 13.12.2. 使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. 使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一...

Global site tag (gtag.js) - Google Analytics