JavaEE教案 (27)_第1页
JavaEE教案 (27)_第2页
JavaEE教案 (27)_第3页
JavaEE教案 (27)_第4页
JavaEE教案 (27)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重庆正大软件学院软件系MVC框架程序设计电子教案重庆正大软件职业技术学院教案(项目类)授课对象系 别软件系本次课学时4学时年级班次大二章节题目第7章 项目编码目的要求(含技能要求)理解进货管理模块查询功能的业务流程理解进货管理模块查询功能的程序流程理解SSH的框架组件及运行流程本节重点理解SSH的框架组件及运行流程本节难点理解进货管理模块查询功能的业务流程教学方法项目教学法教学用具机房、屏幕广播问题引入通过第六章的详细设计文档,从而引出本次课程。难点与重点讲解方法引导、分析、讲解、实作演示本次课小结课程小结教后礼记讨论、思考题、作业(含实训作业)完成本次课的课堂任务填写实验报告任务介绍(5分钟

2、)根据需求分析和设计并利用SSH框架实现进货管理模块查询功能。用户输入员工编号和员工名称并提交查询信息(如图7.7-1所示),经过后台程序处理,查询成功则显示查询的员工档案信息(如图7.7-2a所示),查询失败则返回系统异常界面(如图7.7-2b所示)。(注:员工名称能进行模糊查询)。图7.7-1 进货单查询页面图7.7-2a 进货单查询结果页面图7.7-2b 进货单查询异常页面任务解析(50-60分钟)1. 进货单表映射文件Stockin.hbm.xml编写2. 进货单实体映射类Stockin编写3. 前台进货单查询页面stockin.jsp编写4. 前台系统异常界面error.jsp编写5

3、. 后台业务控制器StockinAction类中进货单查询编写6. 进货单查询struts文件的配置7. 后台业务处理层接口IStockinService进货单查询编写8. 后台业务处理层实现类StockinService进货单查询编写9. 后台持久化层接口IStockinDao进货单查询编写10. 后台持久化层实现类StockinDao进货单查询编写11. 在Spirng配置文件applicationContext_beans.xml中的配置详细步骤1. 进货单表映射文件Stockin.hbm.xml编写根据简化进销存数据库设计编写进货单表映射文件Stockin.hbm.xml。进货单与员工

4、、客户和商品的关系都为多对一的关系,在hibernate表映射文件中使用many-to-one来表示。Stockin.hbm.xml的关键代码如下:<hibernate-mapping> <class name="com.zds.slms.domain.Stockin" table="stockin"><id name="id" type="java.lang.Integer"><column name="id" /><generator c

5、lass="identity" /></id><many-to-one name="merchandise" class="com.zds.slms.domain.Merchandise" fetch="select"><column name="merchandiseid" not-null="true"><comment>商品编号</comment></column></many-to-o

6、ne><many-to-one name="client" class="com.zds.slms.domain.Client" fetch="select"><column name="clientid" not-null="true"><comment>客户编号</comment></column></many-to-one><many-to-one name="employee" cla

7、ss="com.zds.slms.domain.Employee" fetch="select"><column name="employeeid" not-null="true" /></many-to-one><property name="code" type="string"><column name="code" length="11" not-null="true&q

8、uot;><comment>进货单编号</comment></column></property><property name="amount" type="int"><column name="amount" not-null="true"><comment>进货数量</comment></column></property><property name="price&qu

9、ot; type="float"><column name="price" precision="5" scale="2" not-null="true"><comment>进货单价</comment></column></property><property name="money" type="float"><column name="money"

10、precision="10" scale="2" not-null="true"><comment>进货总额</comment></column></property><property name="stockindate" type="string"><column name="stockindate" length="10" not-null="true">

11、;<comment>进货日期</comment></column></property></class></hibernate-mapping>2. 员工实体映射类Stockin编写,与表Stockin对应的实体类编写。关键代码如下:public class Stockin implements java.io.Serializable private Integer id;private Merchandise merchandise;private Client client;private Employee empl

12、oyee;private String code;private int amount;private float price;private float money;private String stockindate;public Stockin() public Stockin(Merchandise merchandise, Client client, Employee employee,String code, int amount, float price, float money,String stockindate) this.merchandise = merchandis

13、e;this.client = client;this.employee = employee;this.code = code;this.amount = amount;this.price = price;this.money = money;this.stockindate = stockindate;/以下省略多个成员变量的get/set方法/进货日期的set方法public void setStockindate(String stockindate) if (null != stockindate && stockindate.length() >= 10)

14、stockindate = stockindate.substring(0, 10);this.stockindate = stockindate;3. 前台进货单查询页面stockin.jsp编写注意查询条件中struts标签的名称的处理,在相应的Action中定义类型为Stockin的对象stockin,并添加该对象相应的get和set方法,在工档案查询页面stockin.jsp查询条件的标签上使用对象名称加属性的方式将查询条件的值传递到后台,这种方式可以减少在Action当中变量的定义。其关键代码如下:<s:form action="stockinAction"

15、 method="post" theme="simple"><s:action name="stockinAction!preFindStockin" var="preFindStockin" /><p></p><table border="0" cellpadding="1" cellspacing="1" width="95%"><tr><td align=&q

16、uot;right" width="10%" nowrap="true">进货单编号</td><td width="20%"><s:textfield name="stockin.code" cssClass="TextInput"></s:textfield></td><td align="right" width="10%" nowrap="true"

17、>货物名称</td><td width="20%"><s:select list="#preFindStockin.merchandises"name="stockin.merchandise.id" listKey="id" listValue="name" emptyOption="true" theme="simple"></s:select></td><td align=&qu

18、ot;right" width="10%">供应商</td><td width="20%"><s:select list="#preFindStockin.clients" name="stockin.client.id" listKey="id" listValue="name" emptyOption="true" theme="simple"></s:select>&

19、lt;/td><td width="10%">&nbsp;</td></tr><tr><td align="right" width="10%" nowrap="true">进货日期</td><td width="20%"><sx:datetimepicker label="" name="stockin.stockindate" displayForm

20、at="yyyy-MM-dd" language="en-us" type="date"/> </td><td align="right" nowrap="true">经手人</td><td><s:select list="#preFindStockin.employees" name="stockin.employee.id" listKey="id" listValue=&

21、quot;name" emptyOption="true" theme="simple"></s:select> </td><td align="right">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></table><p></p><div style="margin-left: 30px

22、; margin-right: 0px"><table border="0" cellpadding="0" cellspacing="0" width="95%"><tr><td width="10%"><s:submit value="查找" cssClass="BtnAction" method="findStockin"></s:submit></

23、td><td width="10%"><input type="button" class="BtnAction" value="新增" onClick="replaceModulUrl('<%=basePath%>stockinAction!preSaveStockin.action');"></td><td width="10%"> <input type="button&q

24、uot; onClick="deleteRecords('stockinAction!deleteStockin.action')" value="删除" class="BtnAction" /></td><td width="10%"><input type="reset" value="重置" class="BtnAction"/></td><td width="60

25、%">&nbsp;</td></tr></table></div><p></p><div style="margin-left: 30px; margin-right: 0px"><table width="90%" border="1" cellpadding="0" cellspacing="0"><tr><td width="3%"

26、class="td_title">选择</td><td width="3%" class="td_title">修改</td><td width="10%" class="td_title">进货单编号</td><td width="19%" class="td_title">供应商</td><td width="9%" class=&quo

27、t;td_title">货物名称</td><td width="8%" class="td_title">货物数量</td><td width="13%" class="td_title">货物单价(元)</td><td width="13%" class="td_title">货物金额(元)</td><td width="12%" class=&qu

28、ot;td_title">进货日期</td><td width="10%" class="td_title">经手人</td></tr><s:iterator var="stockin" value="stockins"><tr><td align="center" class="td_border"><input name="stockinId" t

29、ype="checkbox" title="选中后可进行删除操作" value='<s:property value="#stockin.id" />' id="stockinId"></td><td align="center" class="td_border"><a href='stockinAction!preUpdateStockin.action?stockin.id=<s:proper

30、t value="#stockin.id" />'><img src="image/edit.gif" border="0"></a></td><td class="td_border"><s:property value="#stockin.code" /></td><td class="td_border"><s:property value="#sto

31、" /></td><td class="td_border"><s:property value="#" /></td><td class="td_border"><s:property value="#stockin.amount" /></td><td class="td_border"><s:p

32、roperty value="#stockin.price" /></td><td class="td_border"><s:property value="#stockin.money" /></td><td class="td_border"><s:property value="#stockin.stockindate" /></td><td class="td_border"

33、;><s:property value="#" /></td></tr></s:iterator></table></div></s:form>4. 前台系统异常界面error.jsp编写系统异常界面error.jsp是发生异常以后转向的界面,所以只需要在struts配置文件当中配置全局转向,以后不管是哪个模块发生错误之后,都转向系统异常界面error.jsp。error.jsp页面的关键代码如下:<div align="cen

34、ter"><font color="red"> 系统异常请联系管理员!<spanonClick="history.back();" style="cursor: hand; COLOR: #0000a0;">点击返回</span><s:fielderror /> <s:actionerror /> <s:actionmessage /> </font></div>5. struts配置文件中错误页面的全局转向配置struts

35、配置文件中错误页面的全局转向配置请参见任务解析的相关内容。6. 后台业务控制器(action类)StockinAction中员工档案查询findStockin和preFindStockin编写首先创建ActionSupport的子类StockinAction。在StockinAction中定义类型为IStockinService的进货单业务处理接口stockinService,添加其get和set方法,其中stockinService的set方法用于spring的依赖注入。并定义Stockin对象用于接收前台页面提交的查询信息(也可以用于接收接收新增进货单信息和修改进货单信息),定义类型为Li

36、st<Stockin>的结果集Stockins用于将查询结果返回进货单查询渲染页面。EmployeeAction中员工查询的关键代码如下:public String findStockin() / 查询全部客户档案/clients = clientService.findClient(null);/ 查询全部员工档案/employees = employeeService.findEmployee(null);/ 查询全部商品档案/merchandises = merchandiseService.findMerchandise(null);stockins = stockinSe

37、rvice.findStockin(stockin);return "findStockin"然后在StockinAction类中添加成员变量clients、employees和merchandises列表对象,相应添加getter和setter方法分别保存从数据库获取的客户、员工和商品档案信息,用于初始化前台进货单查询页面的客户、员工和商品档案信息下拉列表。添加客户档案业务处理接口IClientService、IEmployeeService和IMerchandiseService对象,添加相应getter和setter方法。添加preFindStockin方法,初始化c

38、lients、employees和merchandises对象。关键代码如下:public String preFindStockin() / 查询全部客户档案clients = clientService.findClient(null);/ 查询全部员工档案employees = employeeService.findEmployee(null);/ 查询全部商品档案merchandises = merchandiseService.findMerchandise(null);return "preFindStockin"7. 员工档案查询struts文件的配置员工档

39、案查询struts文件的配置请参见任务解析的相关内容。8. 后台业务处理层接口IStockinService进货单查询编写首先创建IStockinService接口。在接口中添加进货单查询方法,关键代码如下:/ 进货单查询public List<Stockin> findStockin(Stockin stockin);9. 后台业务处理层实现类StockinService进货单查询编写首先创建StockinService类并实现IStockinService接口,在StockinService中定义类型为IStockinDao的进货单持久层接口stockinDao,并添加其get

40、和set方法,其中stockinDao的set方法用于spring的依赖注入。关键代码如下:public List<Stockin> findStockin (Stockin stockin) return stockinDao.findstockin(stockin);10. 后台持久化层接口IStockinDao进货单查询编写创建IStockinDao接口,在接口中添加进货单查询方法:/进货单查询public List<Stockin> findStockin(Stockin stockin);11. 后台持久化层实现类StockinDao进货单查询编写创建Stoc

41、kinDao类并继承HibernateDaoSupport并实现IStockinDao接口,在其中添加进货单查询代码:/进货单查询public List<Stockin> findStockin(Stockin stockin) / 对象查询条件DetachedCriteria criteria = DetachedCriteria.forClass(Stockin.class);if (null != stockin) if (null!=stockin.getId() && String.valueOf(stockin.getId().trim().length

42、() >0) criteria.add(Restrictions.eq("id", stockin.getId();if (null!=stockin.getCode() && String.valueOf(stockin.getCode().trim().length() >0) criteria.add(Restrictions.eq("code", stockin.getCode();if (null!=stockin.getMerchandise() && String.valueOf(stockin.

43、getMerchandise().trim().length() >0) && (null!=stockin.getMerchandise().getId() && String.valueOf(stockin.getMerchandise().getId().trim().length() >0)criteria.add(Restrictions.eq("merchandise.id", stockin.getMerchandise().getId();if (null!=stockin.getEmployee() &&

44、amp; String.valueOf(stockin.getEmployee().trim().length() >0) && (null!=stockin.getMerchandise().getId() && String.valueOf(stockin.getMerchandise().getId().trim().length() >0)criteria.add(Restrictions.eq("employee.id", stockin.getEmployee().getId();if (null!=stockin.g

45、etStockindate() && String.valueOf(stockin.getStockindate().trim().length() >0) criteria.add(Restrictions.eq("stockindate",stockin.getStockindate();if (null!=stockin.getClient() && String.valueOf(stockin.getClient().trim().length() >0) && (null!=stockin.getMerc

46、handise().getId() && String.valueOf(stockin.getMerchandise().getId().trim().length() >0)criteria.add(Restrictions.eq("client.id", stockin.getClient().getId();return this.getHibernateTemplate().findByCriteria(criteria);12. 在Spirng配置文件applicationContext_beans.xml中进行员工档案查询的配置配置内容参见

47、任务解析部分相关内容。根据任务提出问题(45-55分钟)l 进货单管理查询功能的业务流程?l 进货单管理查询功能的程序流程?l 进货单管理查询功能的UI设计?l 进货单管理查询功能的控制层设计?l 进货单管理查询功能的模型层设计?l 进货单管理查询功能的相关配置?问题解析(45-55分钟)1. 进货单管理查询功能的业务流程?进货单管理查询功能的业务流程如图7.7-3所示。图7.7-3 进货单查询功能业务流程2. 进货单管理查询功能的程序流程?进货单管理查询功能的程序流程如图7.7-4所示。图7.7-4 进货单查询功能的程序流程3. 进货单管理查询功能的UI设计?UI页面文件列表及存放地址,如表

48、7.7-2所示。表7.7-2 查询功能的UI页面文件列表及存放地址序号项目描述存放路径1.stockin.jsp查询页面WebRoot (或WebContent)modulsarchive2.error.jsp异常、失败页面 WebRoot (或WebContent)UI页面原型:查询页面如图7.7-5所示。图7.7-5 员工查询页面原型4. 进货单管理查询功能的控制层设计?进货单查询功能的控制层设计内容如表7.7-3。表7.7-3进货单查询功能的控制层设计类名存放地址方法名描述StockinAction.javacom.zds.slms.actionfindStockin进货单查询5. 进货

49、单管理查询功能的模型层设计?进货单查询功能的模型层设计内容如表7.7-4。表7.7-4 进货单查询功能的模型层设计类名存放地址方法名描述StockinService.javacom.zds.slms.servicefindStockin进货单查询StockinDao.javacom.zds.slms.daofindStockin进货单查询6. 进货单管理查询功能的相关配置?进货单查询功能的相关配置内容如表7.7-5。表7.7-5进货单查询功能的相关配置项目描述路径工程下src/applicationContext_beans.xml内容<!- 进货单配置 -><bean name="stockinDao" class="com.zds.slms.dao.StockinDao"><property

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论