员工的录入和查询(带
条件查询)
今天做的是员工信息录入和服务器端的验证,目标是使用jQuery更熟悉,掌握分页设计,更好理解Hibernate的一些以前未用过的类中的一些方法。
一. 员工的录入,并进行验证
1.显示员工的录入页面
1.用jQuery 的validator
为表单做前台验证
2.对登录名的Ajax 校验
3.使用jQuery 的blockUI
插件提示Ajax 操作
4.录入员工信息
2.服务器端的简单验证
1.使用struts的validator框架
2.以email为例,email非空,且符合email格式
3.员工录入服务器端的复杂验证
1.数据库,EmployeeAction中,得到登录名
2.对登录名的可用性进行验证,验证登录名在数据库中是否存在
3.这时可以采用struts的声明式异常
4.使用py4j 解决把汉字转为对应的拼音: 佟刚--> tg, 张孝祥--> zxx, 黎活明--> lhm
二.员工的查询
1.显示员工信息:AJAX分页
使用displaytag 分页显示员工信息,记
录不超过百万条。简单,使用。比如OA。
1.在tomcat的webapps目录下展示其实例。
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 阅读(340)
评论(0) 编辑 收藏