SSH框架 CRUD及验证 ajax校验 完整实例一文档格式.docx
- 文档编号:8036102
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:21
- 大小:102.53KB
SSH框架 CRUD及验证 ajax校验 完整实例一文档格式.docx
《SSH框架 CRUD及验证 ajax校验 完整实例一文档格式.docx》由会员分享,可在线阅读,更多相关《SSH框架 CRUD及验证 ajax校验 完整实例一文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
initrans2
二开发步骤
首先新建web项目crm,依次为项目添加SSH支持,接着用工具或命令在数据库中建立数据表PERSON,4个列ID,NAME,AGE,ADDRESS,其中ID为主键.接着在Myeclipse中打开database试图,为数据库新建一个连接或者使用已有的连接.接下来可以选择直接在database试图中选中PERSON表使用Hibernate反向工程自动生成实体Dao和映射表,也可以自己编写这些文件,相关代码如下.
●model层,包名com.person.crm.model
Person.java数据表对应的实体类
packagecom.person.crm.model;
publicclassPersonimplementsjava.io.Serializable{
privatestaticfinallongserialVersionUID=-6013196370398044363L;
privateLongid;
privateStringname;
privateLongage;
privateStringsex;
privateStringaddress;
publicPerson(){
}
/**fullconstructor*/
publicPerson(Stringname,Longage,Stringsex,Stringaddress){
this.name=name;
this.age=age;
this.sex=sex;
this.address=address;
//各个属性的getter和setter方法
Person.hbm.xml映射表主键设置为列ID,生成方式assigned及由输入指定
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
!
DOCTYPEhibernate-mappingPUBLIC"
-//Hibernate/HibernateMappingDTD3.0//EN"
"
hibernate-mapping>
classname="
com.person.crm.model.Person"
schema="
SCOTT"
table="
PERSON"
idname="
id"
type="
java.lang.Long"
columnlength="
10"
name="
ID"
/>
generatorclass="
assigned"
/id>
propertygenerated="
never"
lazy="
false"
name"
java.lang.String"
30"
NAME"
/property>
age"
AGE"
sex"
SEX"
address"
50"
ADDRESS"
/class>
/hibernate-mapping>
PageBeanmodel层用于分页的Bean
importjava.util.List;
/**
*分页BEAN
*/
publicclassPageBean{
//要返回的某一页的记录列表
@SuppressWarnings("
unchecked"
privateListlist;
//总记录数
privateintallRow;
//总页数
privateinttotalPage;
//当前页
privateintcurrentPage;
//每页记录数
privateintpageSize;
//是否为第一页
privatebooleanisFirstPage;
//是否为最后一页
privatebooleanisLastPage;
//是否有前一页
privatebooleanhasPreviousPage;
//是否有下一页
privatebooleanhasNextPage;
//各种getter和setter方法
/**
*初始化分页信息
publicvoidinit(){
this.isFirstPage=isFirstPage();
this.isLastPage=isLastPage();
this.hasPreviousPage=isHasNextPage();
this.hasNextPage=isHasNextPage();
*计算总页数,静态方法,供外部直接通过类名调用
*@parampageSize每页记录数
*@paramallRow总记录数
*@return总页数
publicstaticintcountTotalPage(finalintpageSize,finalintallRow){
inttotalPage=allRow%pageSize==0?
allRow/pageSize:
allRow/pageSize+1;
returntotalPage;
*计算当前页开始记录
*@paramcurrentPage当前第几页
*@return当前页开始记录号
publicstaticintcountOffset(finalintpageSize,finalintcurrentPage){
finalintoffset=pageSize*(currentPage-1);
returnoffset;
*计算当前页,若为0,或者请求的URL中没有"
page="
则用1代替
*@parampage传入的参数(可能为空,即0,则返回1)
*@return当前页
publicstaticintcountCurrentPage(intpage){
finalintcurrentPage=(page==0?
1:
page);
returncurrentPage;
}
●Dao层,包名com.person.crm.dao
PersonDao.javaDao接口,提供了本例要实现的基本功能CRUD,用户名校验
packagecom.person.crm.dao;
importjava.util.List;
importcom.person.crm.model.Person;
publicinterfacePersonDaoextendsPageUtilDao{
publicvoidadd(Personp);
publicPersongetPerson(Longid);
publicList<
Person>
getPersons();
getPersonsByName();
publicvoidupdate(Personp);
publicvoiddelete(Longid);
publicbooleanidExists(Longid);
PageUtilDao.java用于分页的接口,主要是定义finalintpagesize每页显示的信息条数
packagecom.person.crm.dao;
publicinterfacePageUtilDao{
publicstaticfinalintpagesize=5;
*分页查询
*@paramhql查询条件
*@paramoffset开始记录
*@paramlength一次查询几条记录
*@return
publicListqueryForPage(finalStringhql,finalintoffset,finalintlength);
*查询所有结果数量
*@hql查询条件语句
*@return总记录数
publicintgetAllRowCount(Stringhql);
PersonDaoHibernate.java接口的实现类
publicclassPersonDaoHibernateextendsHibernateDaoSupportimplements
PersonDao{
publicvoidadd(Personp){
getHibernateTemplate().save(p);
publicvoiddelete(Longid){
Personp=(Person)getHibernateTemplate().get(Person.class,id);
getHibernateTemplate().delete(p);
publicPersongetPerson(Longid){
return(Person)getHibernateTemplate().get(Person.class,id);
publicListgetPersons(){
Listpersons=getHibernateTemplate().find("
fromPersonorderbyidASC"
);
returnpersons;
publicListgetPersonsByName(){
fromPersonorderbyname"
publicvoidupdate(Personp){
getHibernateTemplate().update(p);
publicbooleanidExists(Longid){
Stringhql="
fromPersonaspwherep.id='
+id+"
'
;
List<
list=this.getHibernateTemplate().find(hql);
if(list!
=null&
&
list.size()>
0){
//此id已经存在
returntrue;
}
returnfalse;
//此id不存在
*查询所有记录数
publicintgetAllRowCount(Stringhql){
returnthis.getHibernateTemplate().find(hql).size();
*
*@return分页查询所得到的记录数
publicListqueryForPage(finalStringhql,finalintoffset,finalintlength){
Listlist=this.getHibernateTemplate().executeFind(newHibernateCallback(){
publicObjectdoInHibernate(Sessionsession)throwsHibernateException,SQLException{
Queryquery=session.createQuery(hql);
//if(offset>
=0&
length>
0){
query.setFirstResult(offset);
query.setMaxResults(length);
//}
List<
list=query.list();
for(Personp:
list){
System.out.println("
ID:
+p.getId()+"
--姓名:
+p.getName()+"
--年龄:
+p.getAge()+"
--性别:
+p.getSex()+"
--地址:
+p.getAddress());
}
returnlist;
}
});
returnlist;
●业务层service包名com.person.crm.service
PersonManager.java业务层接口
publicinterfacePersonManager{
publicvoidaddPerson(Personp);
publicvoidgetPerson(Longid);
listPerson();
listPersonByName();
publicvoidupdatePerson(Personp);
publicvoiddeletePerson(Longid);
publicPersonget(Longid);
publicbooleanidExists(Longid);
*@parampageSize每页大小
*@return封闭了分页信息(包括记录集list)的Bean
publicPageBeanqueryForPage(intpageSize,intcurrentPage);
PersonManagerImpl.java业务层实现类
//在这个方法里处理事务
publicclassPersonManagerImplimplementsPersonManager{
privatePersonDaopersonDao;
publicvoidsetPersonDao(PersonDaopersonDao){
this.personDao=personDao;
publicPersonDaogetPersonDao(){
returnpersonDao;
//省略其他方法
publicPageBeanqueryForPage(intpageSize,intpage){
finalStringhql="
fromPersonORDERBYidASC"
intallRow=personDao.getAllRowCount(hql);
//总记录数
inttotalPage=PageBean.countTotalPage(pageSize,allRow);
//总页数
intpageStartR=PageBean.countOffset(pageSize,page);
//当前页开始记录
if(pageStartR<
pageStartR=0;
finalintoffset=pageStartR;
finalintlength=pageSize;
//每页记录数
finalintcurrentPage=PageBean.countCurrentPage(page);
list=(List<
)personDao.queryForPage(hql,offset,length);
//某一页的记录
/*将分页信息保存到BEAN中*/
PageBeanpageBean=newPageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
returnpageBean;
●web层包名com.person.crm.web一个用于生成验证码的类
AuthImg.java源码见附件
●action层负责处理用户请求包名com.person.crm.action
ValidateIDAction.java验证用户名是否存在时要调用的action
publicclassValidateIDActionextendsActionSupport{
privateStringtip;
privatePersonManagerpersonManager;
privatePersonperson;
privateBooleanflag;
//各种getter和setter省略
publicStringvalidateID(){
System.out.println(this.person.getId());
if(personManager.idExists(this.person.getId())){
setTip("
系统中已有"
+person.getId()+"
这个ID,请重新选择一个!
setFlag(true);
}else{
您好!
这个ID可用!
setFlag(false);
returnSUCCESS;
PersonList.java分页显示信息
publicclassPersonListextendsActionSupport{
//第几页
privateintpage;
privatePageBeanpageBean;
//各种getter和setter
publicStringexecute()throwsException{
//分页的pageBean,
this.pageBean=personManager.queryForPage(PageUtilDao.pagesize,page);
PersonAction.java处理crud的action
publicclassPersonActionextendsActionSupport{
privatestaticfinallongserialVers
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSH框架 CRUD及验证 ajax校验 完整实例一 SSH 框架 CRUD 验证 ajax 校验 完整 实例