1.首先简要介绍一下出现的问题的环境
jdk1.6+strut2.0.11.1+Spring2.5+hibernate3.2.6.ga
使用了SpringOpenEntityManagerInViewFilter作为lazyloading.
2.问题出现的步骤和相关代码
主要问题:在action的某个方法中执行完添加数据的操作(insert)后返回success后跳转到添加页面后莫名其妙的又执行了一个update操作,把我插入数据库的数据给修改了.
代码如下
进入添加页面前的action方法
public String contractorsaSignup() throws Except ...
consequence
结果, 后果;【数】后承;【逻】结论
重要(性); 重大意义
consider the consequences
考虑后果
a person of consequence
举足轻重的人
philosophy
n.
哲学
哲理
人生观
tolerant
adj.
忍受的; 宽大的, 宽容的
apparently
显然;似乎
sole 3
仅有的;独一无二的;唯一的
proof 加入生词本
n.
证明; 证据;【律】(口头或书面)证词; 物证
考验; 验证
试管
【刷】校样, 印样
(酒的)标准酒精 ...
concise
adj.
简洁的;简明的
focussed
Adjective
being in focus or brought into focus(被关注的)
concern
vt.
涉及, 关系到
n.
(利害)关系, 关心, 关注, 关注, 所关心的事
Inventory
库存
arbitrary
任意的类型
arises 出现
funnel
insidious
(形) 隐伏的, 狡猾的, 阴险的
sufficient
充足的。
explicitly
(副) 明白地; 明确地
折腾了几天struts2框架,发现其对校验的支持不是很好,主要体现在如下几点
1.灵活性差
只有theme为xhtml和css_xhtml的时才能够启用纯客户端的js验证.
一般用户对页面UI表示都有一定的要求,当theme为xhtml或css_xhtml的时候会导致页面的排版和用户的UI要求不一致,而且几乎无法解决该问题.并且struts2纯js客户端的错误信息是利用动态添加一个tr来显示的.这就导致如果我想把错误和表单显示在同一行,利用struts2的客户端验证就很难做到.
2.默认支持的校验类型比较少.
struts2默认只支持比较少的几种验证类型例如
* required valida ...
由于以前做的项目都是采用后发制人式的思维,碰到需要什么了再写什么代码.
比如说一个CRUD,一般都是先写出一个简单的框框,碰到需要分页了就加入分页组件,碰到需要校验了就加入校验的支持.
这样的写法虽然说看起来比较敏捷,但是如果几个项目下来还是采用这样的方法,就感觉写程序的效率上有一个瓶颈,速度上去不,速度快了bug又很多.
于是这次struts2实践为了避免或者说减少以上问题.
1.采用project做项目计划以及wbs,把系统分解成不同的模块.
2.利用测试驱动的方式编写代码,定号一个service的接口后,直接先开始写service的测试用例,确定service所实现的功能.至少保证这些功 ...
主要的思路是后端数据查询api+action+tag的方式实现分页功能.
1.后端数据查询api
提供封装分页信息的类PageInfo(保存pageIndex,pageSize,totalRecord,querycondition等等的信息)
提供接收分页信息类的数据查询接口,该接口能根据分页信息类返回正确的分页结果)
xxxDaoTemplate.find(PageInfo pageInfo,.........)
2.action层
设计一个action接口(PagerAwareAction?)提供操作有getPager,setPager
提供一个默认实现了PagerAwareAction的 ...
前一段时间一直都在看struts2的文档,上周终于看完并且总结完毕了。准备开始实践了。
初步计划如下
1.利用以前用.net做过的一个项目作为原始需求,这样能更关注于struts2各种功能的实践。
2.框架为spring2+struts2+Jpa(Hibernate)+sitemesh
选择以上框架的理由如下
spring框架提供了良好的配置式的事务和其他java周边(例如hibernate,mail,quartz等等的集成).
Jpa是sun持久化方案的一个接口到时候便于替换持久层的实现。
用习惯了.net中的masterpage的强大功能,打算试试看sitemesh是不是很好用。
3.整个 ...
1.泛型的概念.
泛型英文名为(Generic Type),从字面上就是通用化,一般化了的类型.
类似于类是对象的一种抽象,泛型可以说就是对类进行抽象.
2.泛型的语法
类型参数的形式化
在java5中利用<E>这样的语法来定义形式化类型参数.
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
以上代码中E就代表了一个形式化类型参数
类型参数的实际化
List<Integer> myIntList = new Linked ...
简要处理流程
HttpRequest-->ActionContextCleanUp(如果使用到sitemesh)->FilterDispatcher.doFilter(调用ActionMapper)->ActionMapper.getMapping(是否需要调用action处理页面请求)-->Dispatcher.serviceAction(调用ActionProxy包装的Action代理执行action)-->ActionInvocation.invoke(调用所有的before拦截器然后调用action本身的执行方法)-->如果有preresultlistener那么执行beforeRes ...
1.Handling File Uploads
采用FileUploadInterceptor实现文件上传操作.
定义struts.properties文件中的如下属性来实现一下参数的配置
struts.multipart.parser定义解析用户上传文件的库.
struts.multipart.saveDir定义用户上传文件保存的路径.
struts.multipart.maxSize指定上传文件的最大值设置.
2.HibernateAndSpringEnabledExecuteAndWaitInterceptor
该例子是对ExecuteAndWaitInterceptor的一个扩展 ...







评论排行榜