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

 

                               员工的录入和查询(带 条件查询)

  今天做的是员工信息录入和服务器端的验证,目标是使用jQuery更熟悉,掌握分页设计,更好理解Hibernate的一些以前未用过的类中的一些方法。

 一. 员工的录入,并进行验证

1.显示员工的录入页面

1.jQuery validator 为表单做前台验证

2.对登录名的Ajax 校验

3.使用jQuery blockUI 插件提示Ajax 操作

4.录入员工信息

2.服务器端的简单验证

 1.使用strutsvalidator框架

 2.email为例,email非空,且符合email格式

3.员工录入服务器端的复杂验证

 1.数据库,EmployeeAction中,得到登录名

 2.对登录名的可用性进行验证,验证登录名在数据库中是否存在

 3.这时可以采用struts的声明式异常

4.使用py4j 解决把汉字转为对应的拼音: 佟刚--> tg, 张孝祥--> zxx, 黎活明--> lhm

 二.员工的查询

1.显示员工信息:AJAX分页

使用displaytag 分页显示员工信息,记 录不超过百万条。简单,使用。比如OA

1.在tomcatwebapps目录下展示其实例。

2. OpenSessionInView

1使用OpenSessionInView

 Hibernate中某一个类的引用属性(也 包括集合属性)采取懒加载策略,则可能出现懒加载异常,但没有对其懒加载属性进行初始化,此时关闭Session,然后再来获取属性,就会异常

声明使用spring的声明式事务:

<aop:config>

 <aop:pointcut expression="execution(* cn.itcast.ems.service.*.*(..))" id="emsTxPointcut"/>

 <aop:advisor advice-ref="emsTxAdvice" pointcut-ref="emsTxPointcut"/>

</aop:config>

OpenSessionInView可以解决这个问题,因为OpenSessionInView的使用流程是:

 request à open session 并开始transaction –>controller à view(jsp)à

2.如何使用:

web.xml配置:

3.缺点:

如果流程中的某一步被阻塞, 而这期间的 connection 却一直被占用不被释放. 例如输出页面时, 一方面可能是页面内容大, response.write的时间长; 另一方面可能是网速慢, 服务器与用户间传输时间久. 当大量这样的情况出现时,就有连接池连接不足, 造成页面假死现 象. 所以在内容多流量大的网站需慎用.

3.翻页相关的类:

1.Page: 与具体 ORM 实现无关的分页参数及查询结果封装

       2. PropertyFilter: 与具体 ORM 实现无关的属性过滤条件封装类, 主要记录页面中简单的搜索过滤条件

       3. HibernateDao: 扩展 SimpleHibernateDao, 功能包括分页查询, 按属性过滤条件列表:

              1.不带任何查询条件时, 需要使用的方法:

                     --countCriteriaResult

                     --setPageParameter

                     --findPage(Page<T> page, Criterion...criterions)

HibernateWebUtils

分页:

不带查询的分页

employee-list-1.do --> Action --> Service --> DAO   

2.查询条件的翻页:使用jQuery 的一个thickbox 插件完成查询页面的弹出

 1.jQuery的分页插件

 2.在获取第一页的内容以后,如何 把查询条件带到第二页

     --把封装了查询条件的List放到session域中,下一次从session中取。

       --把查询条件放在隐藏域中

3.携带查询条件

 使用jQuery提供的serialize()方法携带查询条件(行不通)

   var url = this.href + “&” + $(“:hidden”).serialize();

    window.location.href=url;

 注意:上述方法在第一次不能起作用: 即不能再第一次把隐藏域中的参数带过去, 因为在第一次点击该链接时, href 的属性值已经固定了, 不能再发生变化,

而第二次点击时, 因为第一次已经改变了该属性的值, 所以好用

所以必须在第一次点击该链接之前让 this.href = this.href + "&" + $(":hidden").serialize(); 起作用

解决方案:

$("#criteria").attr("href", $("#criteria").attr("href") + "&" + $(":hidden").serialize());

今天就到这儿,明天continue!

posted on 2010-03-06 23:50 d66380022 阅读(331) 评论(0)  编辑  收藏