SSH框架 CRUD及验证 ajax校验 完整实例一.docx

上传人:b****4 文档编号:6345300 上传时间:2023-05-09 格式:DOCX 页数:21 大小:102.53KB
下载 相关 举报
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第1页
第1页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第2页
第2页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第3页
第3页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第4页
第4页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第5页
第5页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第6页
第6页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第7页
第7页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第8页
第8页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第9页
第9页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第10页
第10页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第11页
第11页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第12页
第12页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第13页
第13页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第14页
第14页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第15页
第15页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第16页
第16页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第17页
第17页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第18页
第18页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第19页
第19页 / 共21页
SSH框架 CRUD及验证 ajax校验 完整实例一.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SSH框架 CRUD及验证 ajax校验 完整实例一.docx

《SSH框架 CRUD及验证 ajax校验 完整实例一.docx》由会员分享,可在线阅读,更多相关《SSH框架 CRUD及验证 ajax校验 完整实例一.docx(21页珍藏版)》请在冰点文库上搜索。

SSH框架 CRUD及验证 ajax校验 完整实例一.docx

SSH框架CRUD及验证ajax校验完整实例一

SSH框架下CRUD及验证完整实例

(一)

一准备工作

●目标和工具

在学习Java两个月之后,尝试使用学过的东西写一个最简单的页面,实现对一张数据库进行基本的CRUD操作和分页,顺便增加服务端验证和Ajax动态验证以及简单的验证码.

使用的工具和环境如下:

SSH框架(Struts2.1.6,Spring2.5,Hibernate3.2),Myeclipse8.0,Oracle10g数据库,JS类库prototype.js,json2.js.数据库连接池使用的是proxool,应用到的jar包如下图,其中dojo和dwr两个插件是后期添加功能时要用,本实例没有用到,在添加项目Hibernate和Spring支持的时候冲突的架包已经删除.

●项目的目录结构

源文件的目录结构如左图,其中pass文件夹放的是一些历史文件,和本例无关.项目按照mvc框惯例,分为action,dao,model,service,web五层.

jsp文件如右图所示放在了WebRoot/per文件夹下,连同js库文件,其中register.jsp是测试验证码使用的.

●项目对应的数据库表

PL/SQL工具下代码如下,其中命名空间,大小等信息因人而异.

--Createtable

createtablePERSON

IDNUMBER(10)notnull,

NAMEVARCHAR2(30),

AGENUMBER(10),

SEXVARCHAR2(10),

ADDRESSVARCHAR2(50)

tablespaceUSERS

pctfree10

initrans1

maxtrans255

storage

initial64K

minextents1

maxextentsunlimited

);

--Create/Recreateprimary,uniqueandforeignkeyconstraints

altertablePERSON

addprimarykey(ID)

usingindex

tablespaceUSERS

pctfree10

initrans2

maxtrans255

storage

initial64K

minextents1

maxextentsunlimited

);

二开发步骤

首先新建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"

"

PageBeanmodel层用于分页的Bean

packagecom.person.crm.model;

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;

}

/**

*计算当前页开始记录

*@parampageSize每页记录数

*@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);

publicListgetPersons();

publicListgetPersonsByName();

publicvoidupdate(Personp);

publicvoiddelete(Longid);

publicbooleanidExists(Longid);

}

PageUtilDao.java用于分页的接口,主要是定义finalintpagesize每页显示的信息条数

packagecom.person.crm.dao;

importjava.util.List;

publicinterfacePageUtilDao{

publicstaticfinalintpagesize=5;

/**

*分页查询

*@paramhql查询条件

*@paramoffset开始记录

*@paramlength一次查询几条记录

*@return

*/

@SuppressWarnings("unchecked")

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(){

Listpersons=getHibernateTemplate().find("fromPersonorderbyname");

returnpersons;

}

publicvoidupdate(Personp){

getHibernateTemplate().update(p);

}

@SuppressWarnings("unchecked")

publicbooleanidExists(Longid){

Stringhql="fromPersonaspwherep.id='"+id+"'";

Listlist=this.getHibernateTemplate().find(hql);

if(list!

=null&&list.size()>0){

//此id已经存在

returntrue;

}

returnfalse;//此id不存在

}

/**

*查询所有记录数

*@return总记录数

*/

publicintgetAllRowCount(Stringhql){

returnthis.getHibernateTemplate().find(hql).size();

}

/**

*分页查询

*

*@return分页查询所得到的记录数

*/

@SuppressWarnings("unchecked")

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);

//}

Listlist=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);

publicListlistPerson();

publicListlistPersonByName();

publicvoidupdatePerson(Personp);

publicvoiddeletePerson(Longid);

publicPersonget(Longid);

publicbooleanidExists(Longid);

/**

*分页查询

*@paramcurrentPage当前第几页

*@parampageSize每页大小

*@return封闭了分页信息(包括记录集list)的Bean

*/

publicPageBeanqueryForPage(intpageSize,intcurrentPage);

}

PersonManagerImpl.java业务层实现类

//在这个方法里处理事务

publicclassPersonManagerImplimplementsPersonManager{

privatePersonDaopersonDao;

publicvoidsetPersonDao(PersonDaopersonDao){

this.personDao=personDao;

}

publicPersonDaogetPersonDao(){

returnpersonDao;

}

//省略其他方法

/**

*分页查询

*/

@SuppressWarnings("unchecked")

publicPageBeanqueryForPage(intpageSize,intpage){

finalStringhql="fromPersonORDERBYidASC";

intallRow=personDao.getAllRowCount(hql);//总记录数

inttotalPage=PageBean.countTotalPage(pageSize,allRow);//总页数

intpageStartR=PageBean.countOffset(pageSize,page);//当前页开始记录

if(pageStartR<0){

pageStartR=0;

}

finalintoffset=pageStartR;//当前页开始记录

finalintlength=pageSize;//每页记录数

finalintcurrentPage=PageBean.countCurrentPage(page);

Listlist=(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;

privateLongid;

privatePersonperson;

privateBooleanflag;

//各种getter和setter省略

publicStringvalidateID(){

System.out.println(this.person.getId());

if(personManager.idExists(this.person.getId())){

setTip("系统中已有"+person.getId()+"这个ID,请重新选择一个!

");

setFlag(true);

}else{

setTip("您好!

"+person.getId()+",这个ID可用!

");

setFlag(false);

}

returnSUCCESS;

}

}

PersonList.java分页显示信息

publicclassPersonListextendsActionSupport{

privatePersonManagerpersonManager;

//第几页

privateintpage;

privatePageBeanpageBean;

//各种getter和setter

publicStringexecute()throwsException{

//分页的pageBean,

this.pageBean=personManager.queryForPage(PageUtilDao.pagesize,page);

returnSUCCESS;

}

}

PersonAction.java处理crud的action

publicclassPersonActionextendsActionSupport{

privatestaticfinallongserialVers

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2