申明:总结参考视频《尚学堂Struts》
一、Locale
1、缺省Locale是由操作系统决定的,Locale是由语言和国家代码组成
2、国际化资源文件是由baseName+locale组成,如:MessageBundle_en_US.properties
baseName是任意合法的文件名
3、native2ascii命令的位置和用法
* 位置:JAVA_HOME/bin
* 使用native2ascii.exe o.properties MessagesBundle_zh_CN.properties
4、Struts国际化的实现
(1) 在struts-config.xml中加入<message-resources parameter="res.MessageResources" />其中parameter中的值为baseName。
(2) 在浏览器中设置语言,如果不存在浏览中对应的语言资源文件,则采用操作系统控制面板中默认的Locale。
Struts将Local放置于session中,设置Locale的原理为,判断session的Global.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脚本接收到的值为null,el表达式接收到的值为空串
* 如果表单中的值,没有输入,那么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注册)
Struts对ActionForm的自动搜集过程:
* 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value值
* 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性
根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型
可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。
三、ActionForward的使用
1、理解全局和局部ActionForward的概念
2、redirect的使用
3、struts-config.xml文件不允许动态修改
4、理解动态ActionForward,动态的ActionForward是可以运行期修改的
四、ActionMapping
1、struts-config.xml文件中,每个<action>标签对应一个ActionMapping实例
2、了解<action>标签中的forward和unknown属性的含义
3、了解采用jstl和struts标签保持页面数据
五、异常
1、编程式异常
* 截获异常
* 创建相应的异常消息
* 传递异常消息
* 转向相应的页面处理异常
2、声明式异常(自动处理的异常)
* 在struts-config.xml文件中配置<exeception/>标签
* 理解局部和全局exception
* 注意局部<exception/>标签需要配置到<forward/>标签的前面,详见dtd中的约束
<exeception/>标签中的属性说明:
* key:指异常信息对应的国际化消息文本,这个key值需要在国际化资源文件中定义
* type: 处理那种异常
* path: 定义一但出现异常,需要转向那个页面,如果不定义path,
默认情况下将使用<action>标签中input属性对应的页面
* scope:可以取值request和session,默认为request
* handler:异常的处理类,struts默认采用org.apache.struts.action.ExceptionHandler,
如果做个性化的异常处理可以继承此类覆写相应的方法
参见:ErrorCodeExceptionHandler.java和AppExceptionHandler.java
六、采用DispathAction
* 如果覆写DispathAction中的execute方法,必须显示的用super调用execute方法
* parameter参数值不能是execute或perform
* 了解<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.xml和validator_rules.xml文件,将此文件拷贝到WEB-INF下
2、validator服务器端验证
* 配置validation.xml文件
3、validator客户端验证(javascript)
) * 配置validation.xml文件
* 在jsp页面中包含< html:javascript>
* 对需要验证的表单定义onsubmit事件,其中事件名称为validate+ActionForm的名称,如:validateLoginForm
八、Struts国际化
1、struts国际化的配置
* 在struts-config.xml文件中加入:
<message-resources parameter="MessageResources" />
2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode
3、在jsp中采用<bean:message>标签来读取国际化消息文本
4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置
* 参见:ChangeLanguageAction.java
5、消息文本的国际化处理,共有三个步骤:
* 创建国际化消息
* 传递国际化消息
* 显示国际化消息
如何创建国际化消息?
理解ActionMessage和ActionMessages两个对象的区别
如何传递国际化消息?
* 调用saveMessage()传递普通消息,调用saveErrors传递错误消息
如何显示国际化消息?
通过<html:messages>标签显示消息(可以显示普通消息和错误消息)
通过<html:errors>显示消息(只能显示错误消息)
九、jstl标签库的配置
1、 * 将jstl.jar和standard.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-INF或WEB-INF任意子目录下
3、在jsp中采用taglib指令引入自定义函数库
4、采用 前缀+冒号+函数名 调用即可
分享到:
相关推荐
Struts1.x与Struts2.x是两种非常流行的Java Web应用程序框架,它们都由Apache软件基金会开发,旨在简化MVC(Model-View-Controller)架构的实现。然而,两者在设计哲学、功能特性以及实现方式上存在显著差异。以下是...
### Struts 1.x 总结 #### 一、Struts 框架概述 Struts 是一个基于 Java 的开源框架,它实现了 Model-View-Controller (MVC) 设计模式,帮助开发者构建可扩展、易于维护的 Web 应用程序。在 Struts 1.x 版本中,其...
Struts1.x 和 Hibernate 是两种在Java Web开发中广泛使用的开源框架,它们分别负责不同的职责。Struts1.x 是一个MVC(Model-View-Controller)框架,主要用于处理Web应用程序的业务逻辑和用户交互,而Hibernate则是...
总结,Struts1.x作为经典的Web开发框架,其丰富的功能和广泛的应用使得学习和掌握它成为提升Java Web开发技能的重要一步。通过本教程,你将对Struts1.x有深入的理解,并能将其应用于实际项目中,构建出高效、稳定的...
总结来说,Struts1.x 提供了一个结构化的Web应用开发框架,通过配置文件管理请求处理流程,使得开发者能够更专注于业务逻辑,而不是底层的HTTP请求处理。虽然现在Struts1.x 已经被更新的框架如Spring MVC所替代,但...
### Struts1.x 入门知识点详解 #### 一、Struts 概念与起源 Struts 是一款基于 Java 的开源 MVC(Model-View-Controller)框架,最初由 Apache Jakarta 项目开发。其目的是简化 Web 应用程序的开发过程,并提供一...
总结来说,Struts2在保留Struts1.x核心优势的基础上,通过引入拦截器、类型转换、AJAX支持等新特性,提升了开发效率,降低了维护成本,从而成为了更好的Web开发框架选择。虽然Struts1.x仍有一定的用户基础,但Struts...
总结,Struts1.x的验证框架为Java Web开发者提供了一套方便的数据验证机制,能够有效提升应用的安全性和用户体验。虽然在现代开发中,Struts1.x已经逐渐被Spring MVC等更现代的框架取代,但了解和理解其验证框架仍然...
总结起来,Struts2在设计模式、配置方式、数据绑定、异常处理、视图渲染、插件体系、国际化、测试友好和性能等方面都对Struts1.x进行了显著的改进。这些改进使得Struts2更适合现代Web开发的需求,也更便于团队协作和...
总结,Struts1.x作为早期流行的Java Web框架,它的设计思想和实现方式对后来的框架有着深远影响。虽然现在已经有了更先进的替代品,如Spring MVC,但理解Struts1.x的基本原理和使用方法,对于理解Web开发的演变历史...
总结来说,这个集成例子展示了如何利用Struts1.x处理用户请求,Spring管理业务逻辑和事务,以及JTA处理跨资源的事务一致性。通过学习和实践这个例子,开发者可以深入理解这三大技术的协同工作,为构建健壮、可扩展的...
总结来说,Struts1.x的异常处理机制包括全局异常配置和自定义Action异常处理两部分。通过合理利用这两种方式,开发者可以有效地控制和管理应用程序的异常,提供更健壮的错误处理,提高系统的稳定性和用户体验。在...
总结来说,基于Struts1.x的验证码实现是Web开发中的重要环节,它涉及到服务器端的生成、存储、验证,以及客户端的显示和用户交互。通过合理的验证码设计和实现,可以显著提高Web应用程序的安全性,保护用户的账户不...
这个"j2ee学习struts2.x总结1"的主题着重于初学者如何理解和掌握Struts2的基础知识,以及如何进行环境搭建。下面将详细讨论相关知识点。 1. **Struts2简介**: Struts2是Apache软件基金会的一个项目,它是Struts1...
总结来说,这个集成示例提供了一个完整的Java Web开发环境,展示了如何利用Struts1.x进行控制层操作,Spring进行业务层管理,Hibernate进行数据持久化,以及Ehcache进行性能优化。通过学习和实践这个例子,开发者...
### Struts1.x 标签详解 #### 一、引言 Struts 是 Apache Jakarta 的一个著名开源项目,旨在为构建基于 Java 的 Web 应用程序提供一个强大的框架。Struts 提供了大量的标签来帮助开发者简化开发过程。本文将详细...
总结来说,Spring MVC和Struts2.x各有优势,选择哪一个取决于项目需求、团队技术栈以及个人偏好。Spring MVC在灵活性、可扩展性和现代开发趋势方面表现出色,而Struts2.x则以其稳定性和成熟的社区支持赢得了一部分...
Struts是Java Web开发中的一个流行框架,分为Struts 1.x和Struts 2.0两个主要版本。这两个版本虽然都旨在简化MVC(模型-视图-控制器)架构的实现,但在设计和功能上有着显著的区别。下面将详细介绍这两个版本的核心...
Struts框架是Java Web开发中的一个经典框架,由Apache软件基金会维护,主要用于构建基于MVC...然而,由于Struts 1.x存在一些设计上的局限性,如性能问题和代码耦合度高等,现在许多项目倾向于选择更新、更灵活的框架。