共238个文件
jar:45个
jpg:39个
class:39个
5星 · 超过95%的资源 需积分: 10
225 浏览量 2012-09-24 20:15:32 上传 评论 1 收藏 12.82MB ZIP 举报
身份认证 购VIP最低享 7 折!
30元优惠券将在56.42.5后过期 去使用
【SSH实现的宠物商店项目详解】 SSH,全称为Spring、Struts和Hibernate,是Java Web开发中的经典三层架构,常用于构建企业级应用。在这个Java宠物商店项目中,这三个框架协同工作,为业务逻辑处理、用户界面展示以及数据持久化提供了高效而灵活的解决方案。 1. **Struts框架**: Struts是MVC(Model-View-Controller)设计模式的实现,主要负责控制层。在本项目中,Struts接收用户的HTTP请求,通过Action类处理业务逻辑,并将结果转发到相应的视图进行展示。它提供了一种结构化的处理方式,使得前端请求与后端业务解耦,易于维护和扩展。 2. **Spring框架**: Spring是Java企业级应用的核心框架,它不仅支持依赖注入(DI)和面向切面编程(AOP),还包含了丰富的企业级服务,如事务管理、数据访问等。在这个项目中,Spring作为容器管理所有Bean的生命周期,包括Struts的Action和Hibernate的SessionFactory。它还可以集成其他框架,如Hibernate,实现数据访问的事务管理。 3. **Hibernate框架**: Hibernate是Java中的一款对象关系映射(ORM)工具,它将数据库操作转换为对Java对象的操作,简化了数据持久化的过程。在宠物商店项目中,Hibernate负责将实体类(如Pet、Customer等)与数据库表对应,通过HQL(Hibernate Query Language)或SQL执行查询和更新操作,实现了数据库的透明访问。 4. **项目结构**: - `epet`:这是项目的主要目录,包含源代码、配置文件等。 - `src/main/java`:存放所有的Java源代码,包括业务模型(Model)、控制层(Controller)和视图表示层(View)的实现。 - `src/main/resources`:存放配置文件,如Spring的bean定义文件(如`applicationContext.xml`)、Struts的配置文件(如`struts-config.xml`)和Hibernate的映射文件(`.hbm.xml`)。 - `WEB-INF`:Web应用的私有目录,包含`web.xml`(Web应用的部署描述符)和其他库文件(JARs)。 5. **业务流程**: 用户通过浏览器发送请求,Struts拦截请求并调用对应的Action。Action在Spring容器中获取服务类,处理业务逻辑,如添加宠物、查询订单等。这些操作可能涉及数据库操作,此时Spring会调用Hibernate的相关方法,通过SessionFactory创建Session,执行CRUD操作。完成后,Struts将控制权交给JSP页面,展示结果。 6. **优势与挑战**: SSH框架组合使用,能有效降低开发复杂度,提高代码可维护性。但同时,需要开发者对这三个框架有深入理解,才能合理配置和优化。此外,由于组件间的交互较多,调试和性能优化可能会较为复杂。 这个Java宠物商店项目是一个典型的SSH实践,展示了如何利用这些框架构建一个完整的、功能丰富的Web应用。通过学习和实践,开发者可以提升在企业级Java应用开发中的技能和经验。
/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package web.action; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.actions.DispatchAction; import web.form.PetForm; import biz.PetDiaryBiz; import biz.PetInfoBiz; import biz.impl.PetInfoBizImpl; import entity.PageResult; import entity.PetDiary; import entity.PetInfo; import ajax.PetManager; /** * MyEclipse Struts Creation date: 08-11-2009 * * XDoclet definition: * * @struts.action path="/doLogin" name="loginDynaForm" * input="/form/loginDyna.jsp" scope="request" validate="true" * @struts.action-forward name="showBaby" path="/WEB-INF/jsp/pet/showBaby.jsp" * @struts.action-forward name="error" path="/WEB-INF/jsp/error.jsp" */ public class PetAction extends DispatchAction {/* * Generated Methods */// 全局变量 方便调用// private PetInfoBiz biz = new PetInfoBizImpl();// private PetDiaryBiz petDiaryBiz = new PetDiaryBizImpl();// 得到BIZ实例// private PetDiaryBiz petDiaryBiz = (PetDiaryBiz)// SpringUtil.getBean("petDiaryBiz");// private PetInfoBiz biz = (PetInfoBiz) SpringUtil.getBean("petInfoBiz");private PetDiaryBiz petDiaryBiz = null;private PetInfoBiz biz = null;// 增加set方法 为注入做准备public void setPetDiaryBiz(PetDiaryBiz petDiaryBiz) {this.petDiaryBiz = petDiaryBiz;}// 增加set方法 为注入做准备public void setBiz(PetInfoBiz biz) {this.biz = biz;}/** * 登陆 */public ActionForward doLogin(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {ActionForward af = null;// 获取表单参数PetForm loginDynaForm = (PetForm) form;// TODO// Auto-generated// method stubPetInfo condition = loginDynaForm.getItem();String checkedNum = loginDynaForm.getChecked();// 获取验证码中的随即数字String num = (String) request.getSession().getAttribute("vcode");if (null != num) {if (num.equals(checkedNum)) {// 调用业务逻辑方法PetInfo petInfo = new PetInfo();System.out.println("输出接收值1:" + condition);petInfo = biz.login(condition);if (null != petInfo) {int strength = petInfo.getPetStrength();// 获得宠物力量值int cute = petInfo.getPetCute();// 获得宠物能力值int love = petInfo.getPetLove();// 获得宠物爱心// 获得宠物状态this.doSeeion(strength, cute, love, request);// 将宠物数据保存到session中request.getSession(true).setAttribute("current_pet",petInfo);// 调用业务逻辑方法System.out.println("登陆宠物ID:n" + petInfo.getPetId() + "n");List<PetDiary> diaryList = petDiaryBiz.getLitByPetID(petInfo.getPetId());if (null != diaryList) {// 将宠物数据保存到session中request.getSession().setAttribute("diaryList",diaryList);System.out.println("登陆时加载日记:n" + diaryList + "n数量:"+ diaryList.size());af = mapping.findForward("showBaby");} else {request.setAttribute("error", "查询日记出错!");af = mapping.findForward("error");}} else {// 输入合法性验证// errors用于保存出错信息ActionMessages errors = new ActionMessages();// 根据业务逻辑进行判断,对出错的情况添加错误信息到errors中errors.add("login", new ActionMessage("error.validate.number"));/** * error.validate.number对应到资源文件中的属性名称 login 是出错信息名 * 在页面显示错误时可根据名称来引用出错信息 对同一个名称,可添加多个出错信息 * errors.add("login",new * ActionMessage("error.validate.number"));里面参数写的是配置文件中定义的信息名 * 而不能直接指定错误信息 如以下便是错误的new ActionMessage("宠物ID或密码错误,请重试!") * 如果不是需要单独指定错误信息,在页面里统一显示错误信息即可, * 则可以将错误信息添加到GLOBAL_MESSAGE名下 * errors.add(ActionMessages.GLOBAL_MESSAGE,new * ActionMessage("宠物ID或密码错误,请重试!")); * 可用cmd修改指定error.validate.number中的信息 * 如首先寻找到jdk中的配置文件native2ascii.exe 把它拖到cmd控制台中 或可直接在配置文件修改 * 是一个专门的组件 适用于处理中文 错误信息显示也可用JavaScript显示 如:errors.header = * <script alert("> errors.footer = ");</script> */// 判断errors中是否有错误信息if (!errors.isEmpty()) {super.saveErrors(request, errors);af = mapping.findForward("index");}}} else {// 输入合法性验证// errors用于保存出错信息ActionMessages errors = new ActionMessages();// 根据业务逻辑进行判断,对出错的情况添加错误信息到errors中errors.add("login", new ActionMessage("validate.number"));// 判断errors中是否有错误信息if (!errors.isEmpty()) {super.saveErrors(request, errors);af = mapping.findForward("index");}}}return af;}/** * 宠物喂食 * @throws IOException */public ActionForward doFeed(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws IOException {ActionForward af = null;// 获取表单参数PetForm comnForm = (PetForm) form;PetInfo petInfo = (PetInfo) request.getSession().getAttribute("current_pet");if (null != petInfo) {int petId = petInfo.getPetId();// 调用业务逻辑方法int result = biz.doFeed(petId);petInfo = biz.load(petId);int strength = petInfo.getPetStrength();// 获得宠物力量值int cute = petInfo.getPetCute();// 获得宠物能力值int love = petInfo.getPetLove();// 获得宠物爱心// 获得宠物状态this.doSeeion(strength, cute, love, request);request.getSession(true).setAttribute("current_pet", petInfo);//设置输出编码方式response.setCharacterEncoding("GBK");//打印输出结果response.getWriter().print(this.getScoreString(petId));if (result > 0) {if ("show".equals(comnForm.getParam())) {af = mapping.findForward("showBaby");} else {af = mapping.findForward("write");}} else {// 将错误数据存储到request中request.setAttribute("error", "玩游戏出错了!");// 将请求转发逻辑名为"error"的页面af = mapping.findForward("error");}}return null;}/** * 讲故事 * @throws IOException */public ActionForward doStory(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws IOException {ActionForward af = null;// 获取表单参数PetForm comnForm = (PetForm) form;// TODOPetInfo petInfo = (PetInfo) request.getSession().getAttribute("current_pet");if (null != petInfo) {int petId = petInfo.getPetId();// 调用业务逻辑方法int result = biz.doStory(petId);petInfo = biz.load(petId);int strength = petInfo.getPetStrength();// 获得宠物力量值int cute = petInfo.getPetCute();// 获得宠物能力值int love = petInfo.getPetLove();// 获得宠物爱心// 获得宠物状态this.doSeeion(strength, cute, love, request);request.getSession(true).setAttribute("current_pet", petInfo);//设置输出编码方式response.setCharacterEncoding("GBK");//打印输出结果response.getWriter().print(this.getScoreString(petId));if (result > 0) {if ("show".equals(comnForm.getParam())) {af = mapping.findForward("showBaby");} else {af = mapping.findForward("write");}} else {// 将错误数据存储到request中request.setAttribute("error", "玩游戏出错了!");//
相关知识
基于SSH技术的宠物救助系统的设计与实现
bootstrap5实现宠物商店网站 Cat
宠物商店 案例分析
今天我开始学习:PETSHOP3.0宠物商店(经典案例)
基于java+springboot的宠物商店、宠物管理系统设计与实现
宠物商店详细设计说明书
宠物商店加盟
基于SSH宠物医院管理系统的开发与设计
Java小程序——宠物商店
实例分析:宠物商店
网址: 宠物商店(SSH实现)资源 https://m.mcbbbk.com/newsview263137.html
上一篇: 《樱花庄的宠物女孩》高清在线观看 |
下一篇: 农业在线教育 |