ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:102.53KB ,
资源ID:11472647      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11472647.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SSH框架 CRUD及验证 ajax校验 完整实例一.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、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两个插件是后期添加功能时

2、要用,本实例没有用到,在添加项目Hibernate和Spring支持的时候冲突的架包已经删除. 项目的目录结构源文件的目录结构如左图,其中pass文件夹放的是一些历史文件,和本例无关.项目按照mvc框惯例,分为action, dao, model, service, web五层. jsp文件如右图所示放在了WebRoot/per文件夹下,连同js库文件,其中register.jsp是测试验证码使用的. 项目对应的数据库表PL/SQL工具下代码如下,其中命名空间,大小等信息因人而异.- Create tablecreatetable PERSON(IDNUMBER(10) notnull,NAM

3、EVARCHAR2(30), AGE NUMBER(10), SEX VARCHAR2(10), ADDRESS VARCHAR2(50)tablespace USERSpctfree10initrans1maxtrans255storage (initial64Kminextents1maxextentsunlimited );- Create/Recreate primary, unique and foreign key constraints altertable PERSONaddprimarykey (ID)usingindextablespace USERSpctfree10in

4、itrans2maxtrans255storage (initial64Kminextents1maxextentsunlimited );二开发步骤首先新建web项目crm,依次为项目添加SSH支持,接着用工具或命令在数据库中建立数据表PERSON,4个列ID,NAME,AGE,ADDRESS,其中ID为主键.接着在Myeclipse中打开database试图,为数据库新建一个连接或者使用已有的连接.接下来可以选择直接在database试图中选中PERSON表使用Hibernate反向工程自动生成实体Dao和映射表,也可以自己编写这些文件,相关代码如下. model层,包名com.perso

5、n.crm.modelPerson.java 数据表对应的实体类packagecom.person.crm.model;publicclass Person implementsjava.io.Serializable privatestaticfinallongserialVersionUID = -6013196370398044363L; private Long id; private String name; private Long age; private String sex; private String address; public Person() /* full co

6、nstructor */ public Person(String name, Long age, String sex, String address) this.name = name; this.age = age; this.sex = sex; this.address = address; /各个属性的getter和setter方法 Person.hbm.xml 映射表主键设置为列ID,生成方式assigned及由输入指定!DOCTYPEhibernate-mappingPUBLIC-/Hibernate/Hibernate Mapping DTD 3.0/ENPageBean m

7、odel层用于分页的Beanpackagecom.person.crm.model;importjava.util.List;/* * 分页BEAN */publicclassPageBean /要返回的某一页的记录列表 SuppressWarnings(unchecked) private List list; /总记录数 privateintallRow; /总页数 privateinttotalPage; /当前页 privateintcurrentPage; /每页记录数 privateintpageSize; /是否为第一页 privatebooleanisFirstPage; /是

8、否为最后一页 privatebooleanisLastPage; /是否有前一页 privatebooleanhasPreviousPage; /是否有下一页 privatebooleanhasNextPage; /各种getter和setter方法 /* * 初始化分页信息 */ publicvoidinit() this.isFirstPage = isFirstPage(); this.isLastPage = isLastPage(); this.hasPreviousPage = isHasNextPage(); this.hasNextPage = isHasNextPage();

9、 /* * 计算总页数,静态方法,供外部直接通过类名调用 * parampageSize每页记录数 * paramallRow总记录数 * return总页数 */ publicstaticintcountTotalPage(finalintpageSize,finalintallRow) inttotalPage = allRow % pageSize = 0 ? allRow/pageSize : allRow/pageSize+1; returntotalPage; /* * 计算当前页开始记录 * parampageSize每页记录数 * paramcurrentPage当前第几页 *

10、 return当前页开始记录号 */ publicstaticintcountOffset(finalintpageSize,finalintcurrentPage) finalint offset = pageSize * (currentPage-1); return offset; /* * 计算当前页,若为0,或者请求的URL中没有?page=,则用1代替 * param page 传入的参数(可能为空,即0,则返回1) * return当前页 */ publicstaticintcountCurrentPage(int page) finalintcurrentPage = (pag

11、e = 0 ? 1 : page); returncurrentPage; Dao层,包名com.person.crm.daoPersonDao.java Dao接口,提供了本例要实现的基本功能 CRUD,用户名校验package com.person.crm.dao;import java.util.List;import com.person.crm.model.Person;public interface PersonDao extends PageUtilDao public void add(Person p); public Person getPerson(Long id);

12、public ListgetPersons(); public ListgetPersonsByName(); public void update(Person p); public void delete(Long id); public booleanidExists(Long id); PageUtilDao.java 用于分页的接口,主要是定义final intpagesize每页显示的信息条数packagecom.person.crm.dao;importjava.util.List;publicinterfacePageUtilDao publicstaticfinalintpa

13、gesize = 5; /* * 分页查询 * paramhql查询条件 * param offset 开始记录 * param length 一次查询几条记录 * return */ SuppressWarnings(unchecked) public List queryForPage(final String hql, finalint offset, finalint length); /* * 查询所有结果数量 * hql查询条件语句 * return总记录数 */ publicintgetAllRowCount(String hql);PersonDaoHibernate.java

14、 接口的实现类publicclassPersonDaoHibernateextendsHibernateDaoSupportimplements PersonDao publicvoid add(Person p) getHibernateTemplate().save(p); publicvoid delete(Long id) Person p = (Person)getHibernateTemplate().get(Person.class, id); getHibernateTemplate().delete(p); public Person getPerson(Long id) r

15、eturn (Person)getHibernateTemplate().get(Person.class, id); publicListgetPersons() List persons = getHibernateTemplate().find(from Person order by id ASC); return persons; publicListgetPersonsByName() List persons = getHibernateTemplate().find(from Person order by name); return persons; publicvoid u

16、pdate(Person p) getHibernateTemplate().update(p); SuppressWarnings(unchecked) publicbooleanidExists(Long id) String hql=from Person as p where p.id=+id+; List list=this.getHibernateTemplate().find(hql); if(list!=null&list.size()0) /此id已经存在 returntrue; returnfalse; /此id不存在 /* * 查询所有记录数 * return总记录数 *

17、/ publicintgetAllRowCount(String hql) returnthis.getHibernateTemplate().find(hql).size(); /* * 分页查询 * * return分页查询所得到的记录数 */ SuppressWarnings(unchecked) public List queryForPage(final String hql, finalint offset, finalint length) List list = this.getHibernateTemplate().executeFind(newHibernateCallba

18、ck() public Object doInHibernate(Session session)throwsHibernateException, SQLException Query query = session.createQuery(hql);/ if(offset=0 & length 0) query.setFirstResult(offset); query.setMaxResults(length);/ List list = query.list(); for(Person p : list) System.out.println(ID:+p.getId()+-姓名:+p.

19、getName()+-年龄:+p.getAge()+-性别:+p.getSex()+-地址:+p.getAddress(); return list; ); return list; 业务层service 包名com.person.crm.servicePersonManager.java 业务层接口publicinterfacePersonManager publicvoidaddPerson(Person p); publicvoidgetPerson(Long id); public ListlistPerson(); public ListlistPersonByName(); pub

20、licvoidupdatePerson(Person p); publicvoiddeletePerson(Long id); public Person get(Long id); publicbooleanidExists(Long id); /* * 分页查询 * paramcurrentPage当前第几页 * parampageSize每页大小 * return封闭了分页信息(包括记录集list)的Bean */ publicPageBeanqueryForPage(intpageSize,intcurrentPage);PersonManagerImpl.java 业务层实现类/在这

21、个方法里处理事务publicclassPersonManagerImplimplementsPersonManager privatePersonDaopersonDao; publicvoidsetPersonDao(PersonDaopersonDao) this.personDao = personDao; publicPersonDaogetPersonDao() returnpersonDao; /省略其他方法 /* * 分页查询 */ SuppressWarnings(unchecked) publicPageBeanqueryForPage(intpageSize, int pa

22、ge) final String hql = from Person ORDER BY id ASC; intallRow = personDao.getAllRowCount(hql);/总记录数 inttotalPage = PageBean.countTotalPage(pageSize, allRow);/总页数 intpageStartR = PageBean.countOffset(pageSize, page);/当前页开始记录 if(pageStartR 0) pageStartR = 0; finalint offset = pageStartR;/当前页开始记录 final

23、int length = pageSize;/每页记录数 finalintcurrentPage = PageBean.countCurrentPage(page); List list = (List)personDao.queryForPage(hql, offset, length);/某一页的记录 /*将分页信息保存到BEAN中*/ PageBeanpageBean = newPageBean(); pageBean.setPageSize(pageSize); pageBean.setCurrentPage(currentPage); pageBean.setAllRow(allRo

24、w); pageBean.setTotalPage(totalPage); pageBean.setList(list); pageBean.init(); returnpageBean; web层包名com.person.crm.web一个用于生成验证码的类AuthImg.java 源码见附件 action层负责处理用户请求包名com.person.crm.actionValidateIDAction.java 验证用户名是否存在时要调用的actionpublicclassValidateIDActionextendsActionSupport private String tip; pri

25、vatePersonManagerpersonManager; private Long id; private Person person; private Boolean flag; /各种getter和setter省略 public String validateID() System.out.println(this.person.getId(); if(personManager.idExists(this.person.getId() setTip(系统中已有+person.getId()+这个ID,请重新选择一个!); setFlag(true); else setTip(您好!

26、+person.getId()+,这个ID可用!); setFlag(false); returnSUCCESS; PersonList.java 分页显示信息publicclassPersonListextendsActionSupport privatePersonManagerpersonManager; /第几页 privateintpage; privatePageBeanpageBean; /各种getter和setter public String execute() throws Exception /分页的pageBean, this.pageBean = personManager.queryForPage(PageUtilDao.pagesize, page); returnSUCCESS; PersonAction.java 处理crud的actionpublicclassPersonActionextendsActionSupport privatestaticfinallongserialVers

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1