随笔-54  评论-0  文章-2  trackbacks-0

今天内容密度相当大,而且还有点细,知识点比较多。今天是冯老师的最后一天课程,与老冯的将近一个月的接触,老冯讲课有特点:幽默,上课时时不时幽一下,很提神的;声音比较大,以至于老冯有句极像口头禅的“小点声,不然隔壁又找来了”;最重要的是上课的代码每天都有超强的注释,比较有特点的是超强的 readme.txt ,深的同学喜爱;讲课特别敬业,这儿的老师都是特别敬业的。听说老冯呕心沥血,自己做了个项目,年后会公布在网上,到时真的研究研究,相当期待。老师最后给我们了个邮箱,以后有问题,仍然可询问下。

把今天讲的内容总结下,今天讲了昨天留的作业(Struts做的客户信息系统)Struts1.x的验证机制,表单重复提交,同步令牌机制,上传的实现,转换器,国际化内容,由于内容多,只记不会的

1.处理表单重复提交

解决方法:

1. 生成一个唯一的编号,该编号在添加信息的页面存放在隐藏域中

该代码执行后自动添加在customer.jsp页面中添加如下信息 session中保存一份

代码如下:注意:在execute方法中{

//Actionexecute方法开始加上

this.saveToken(request);

//在调用service层增删改查前加从request中获取隐藏域的值

// Stirng gxxxValue=request.getParameter("org.apache.struts.taglib.html.TOKEN");

// 在从session中取出 String keyValue=session.getAttribute("key");

// 如果两个值相等 gxxxValue=keyValue,数据提交

boolean flag=this.isTokenValid(request);

if(flag){

//应该从session中清除session.removeAttribute(key)

this.resetToken(request);

/ /插入数据库的方法以下面一句为例

customerService.saveCustomer(c);

}else{

System.out.println("表单重复提交了");

}

注意:原理:

* request中获取隐藏域的值

Stirng gxxxValue=request.getParameter("org.apache.struts.taglib.html.TOKEN");

* 在从session中取出 String keyValue=session.getAttribute("key");

* 如果两个值相等 gxxxValue=keyValue,数据提交

当数据提交后要从sessioon中删除key sessioon.removeAttribute("key")

2.转换器:

 

当我们在开发时,会遇到数据库中的数据类型和ActionForm中的类型不一致的情况,为减少转换的麻烦,Struts给我们了转换器,她能自动转化很多类型,但遇到如果遇到Date类型就不能转换

 

 

这时要定义转换器

如何定义一个转化器:

1.定义一个类 String2DateConvert implements Converter

重写接口中的方法

2.注册转化器(一定在使用前注册) struts中常用的转换器Struts自己给注册了

实际是把信息放置到一个Map中,原理:

* key是转化数据类型的名称

* 转化器的对象

converters.put(clazz, converter);

converters.put(java.util.Date, new String2Dateconverter());

下面是代码:在Action类中(注意不是在方法体中),加:

static{

/**

* register(new String2DateConvert(), java.util.Date.class);

* 第一个参数是转化器的实例

* 第二个参数要转化的数据类型(本类中用的String-java.util.Date)

*/

ConvertUtils.register(new String2DateConvert(), java.util.Date.class);

}

剩下的就是用Struts自己的,代码:

BeanUtils.copyProperties(与数据库交道的form, 与页面交道的form);

最后

建议:开发中ActionForm中的所有属性定义为String, 不管什么样的数值我都接收,接收到之后在进行检验

3.国际化:

struts中的国际化:

* 定义资源文件

命名规则基名_语言_国家.properties

定义支持中文和英文的资源包

* resource.properties(默认)

* resource_zh_CN.properties

* resource_en_US.properties

把资源包放置到当前web应用的src下,经构建后保存到/WEB-INF/classes目留下

中文要进行编码转化

native2ascii -encoding gb2312源文件目标文件.properites

* struts中如何使用

* struts-config.xml文件中引入 parameter="resource"的值基名

<message-resources parameter="resource"></message-resources>

* jsp页面中如何使用

引入bean标签库

<%@ taglib uri=http://struts.apache.org/tags-bean prefix="bean"%>

<bean:message key="username"/> key 是资源文件中=前面的值

* 如有多个资源文件

* struts-config.xml文件中引入 parameter="resource"的值基名

增加属性key 加以区分

<message-resources

parameter="resource1" key="backup"></message-resources>

*jsp页面中如何使用

<bean:message key="username" bundle="backup"/>

今天就至此了,明天是佟刚老师讲AJAX ,每天都有收获,是我最开心的事情,

好好休息,静待明天的来到!

posted on 2010-01-17 21:15 d66380022 阅读(471) 评论(0)  编辑  收藏