xmlns:
xsi=".w3.org/2001/XMLSchema-instance"
xmlns:
aop=".springframework.org/schema/aop"
xmlns:
context=".springframework.org/schema/context"
xmlns:
tx=".springframework.org/schema/tx"
xsi:
schemaLocation=".springframework.org/schema/beans.springframework.org/schema/beans/spring-beans-2.5.xsd
http:
//.springframework.org/schema/aophttp:
//.springframework.org/schema/aop/spring-aop-2.5.xsd
http:
//.springframework.org/schema/contexthttp:
//.springframework.org/schema/context/spring-context-2.5.xsd
http:
//.springframework.org/schema/txhttp:
//.springframework.org/schema/tx/spring-tx-2.5.xsd">
--抽象bean,是所有bean的父bean-->
--bean-->
以上代码是applicationContext-bean.xml文件中Session工厂的配置信息
宠物信息数据库表:
如表所示,这是宠物信息的表,id是系统自动生成,其余的分别为宠物,宠物类型,简介,添加该宠物的用户id,图片,年龄是否疫苗,疫苗时间,疫苗地点,是否领养,是否伤人等宠物信息。
接下来会对它如何连接到工程以及如何实现该功能做详细介绍。
其中图片在petaction中默认由本地,上传到服务器上的upload文件夹中,以便游客浏览以及管理员管理,id为系统自动+1生成,userid与user列表中的userid一致,typename与t_type列表中的typename一致,需要t_type预添加。
3.3宠物管理系统功能说明
根据对宠物管理系统业务流程的分析,用户登录后要能自己添加自己的宠物信息,包括宠物的,年龄,宠物的id,上传图片,是否疫苗,疫苗事件,疫苗地点,是否领养以及是否伤人等信息。
用户登录后可以浏览别的用户的宠物信息,而管理员可以对用户前台添加的信息进行修改与删除。
3.4主要的宠物信息管理的实现
3.4.1DAO层的实现
数据访问层,又称DAO层,在该层主要完成对象-关系映射的建立,通过这个映射,再通过访问业务对象即可实现对数据库的访问,使得开发中不必再用SQL语句编写复杂的数据库访问程序,这样就简化了对数据库的访问,提高了开发效率。
同时通过对象-关系映射的配置,可以建立业务对象之间的复杂关系,如一对多、多对一、一对一、多对多等关系。
这样就不再需要在数据库中建立表之间的复杂联系,使得业务对象之间的关系和数据库相分离,简化了数据库的建立和维护。
在这一层中主要使用Hibernate框架来实现。
Tpet以及Tpet.hbm.xml为hibernate自动生成文件,用于连接数据库。
3.4.2Service层的实现
Service为业务逻辑层,主要业务逻辑包括这些类分别实现了相应的接口,这些类在工作的过程中还需要依赖相应的DAO对象和JavaBean对象。
实际操作时,在Action过Service对DAO接口进行调用,使整个系统有良好的层次。
比如这边Petservices调用TPet,而PetserviceImpl继承Petservices,进行查询、添加、修改和删除操作。
Petservices代码:
import.oa.models.TPet;
import.oa.utils.PageInfo;
publicinterfacePetServices{
//查询
publicPageInfoqueryPet(intcurrentpage,intpageunit,
HttpServletRequestrequest,Stringurl,Stringcond);
//添加
publicBooleanaddPet(TPetpet);
//修改
publicBooleanupdatePet(TPetpet);
//ID查询
publicTPetgetPet(Integerid);
//删除
publicTPetdelPet(Integerid);
}
PetserviceImpl主要代码:
publicclassPetServicesImplextendsAbstractServicesimplementsPetServices{
//查询
publicPageInfoqueryPet(intcurrentpage,intpageunit,
HttpServletRequestrequest,Stringurl,Stringcond){
introwCount=this.getPetsCount(cond);
Listlist=this.getPets(currentpage,
pageunit,cond);
PageInfoPageInfo=newPageInfo(currentpage,pageunit,rowCount,url,
list);
returnPageInfo;
}
//获得
publicListgetPets(intcurrentpage,intpageunit,
Stringcond){
try{
Stringhql="fromTPetawhere1=1"+cond;
returnthis.query(hql,currentpage,pageunit);
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
//添加
publicBooleanaddPet(TPetpet){
save(pet);
returntrue;
}
以上为查询以及添加的代码,其余删除修改略。
3.4.3Action层的实现
Action用于处理视图层与业务层之间的衔接,当页面产生一个动作请求时候,通过Struts配置文件找到对应的Action中的接口,经过Action处理后返回结果并从Struts的配置文件中找到对应的跳转页面。
查询代码:
publicStringqueryPet()throwsException{
if(getSessionAttribute("querypageunit")==null){
setSessionAttribute("querypageunit",this.pageunit);
}
StringBuffercond=newStringBuffer();
if(null!
=searchname&&""!
=searchname.trim()){
cond.append("anda.petnamelike'%"+searchname.trim()+"%'");
}
intcurpage=Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));
intpageunit=Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(),"querypageunit"));
Stringurl="pet_queryPet?
a=a";
PageInfopageInfo=this.petServices.queryPet(curpage,
pageunit,ServletActionContext.getRequest(),url,cond.toString());
setRequestAttribute("pageinfo",pageInfo);
setRequestAttribute("searchname",this.searchname);
return"queryPet";
}
预添加以及添加代码:
publicStringpreaddPet()throwsException{
Listlist=typeServices.queryType();
setRequestAttribute("list",list);
return"preaddPet";
}
publicStringaddPet()throwsException{
TUseruser=(TUser)getSessionAttribute("user");
TPetpet=newTPet();
pet.setAge(age);
pet.setIsbiter(isbiter);
pet.setIsuser(isuser);
pet.setPetname(petname);
pet.setRemark(remark);
pet.setTypename(typename);
pet.setUserid(user.getUsername());
pet.setVacadrr(vacadrr);
pet.setVaccin(vaccin);
pet.setVaccin(vaccin);
pet.setVacdate(vacdate);
//将图片上传到工程下的upload文件夹中
StringtargetDirectory=ServletActionContext.getRequest()
.getRealPath("/upload");
StringtargetFileName=generateFileName(pictureFileName);
Filetarget=newFile(targetDirectory,targetFileName);
FileUtils.copyFile(picture,target);
pet.setPicture(targetFileName);
petServices.addPet(pet);
return"addPet";
}
预添加将后台管理员添加的宠物类型添加到宠物信息,添加功能中有图片上传。
查看代码:
publicStringviewPet()throwsException{
TPetpet=petServices.getPet(id);
setRequestAttribute("pet",pet);
return"viewPet";
}
其余修改删除代码等省略。
struts中宠物管理功能的实现:
/files/pet/list.jsp
pet_queryPet
pet_queryPet
pet_queryPet
/files/pet/add.jsp
/files/pet/update.jsp
/files/pet/view.jsp
3.4.4静态Jps页面的实现表现层
其余静态页面运用css模块统一风格,其中pet功能页面代码均在files/pet/文件夹中,添加宠物信息为add.jsp,查看宠物信息为view.jsp,查看宠物列表为list.jsp,修改宠物信息为update.jsp,由struts控制跳转,代码略。
结合Struts的表现层标签,JSP可完成全部的表现层功能一一数据收集、数据表示和客户端数据校验
四、实现效果
主界面,要求具有分类展现功能,产品再次一览无余。
要求:
据右侧边条将所有产品的简录的展示在此处,能从此处进product界面。
界面中间部分是图形界面要求生动且说明性强,充分展示产品的风格。
此外还要有登录和注册、帮助功能、返回功能等。
界面运行情况如下:
系统主界面
客户浏览时通过点击左边的边跳