




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于struts+spring+ibatis+jquery的员工培养方案一、引言1、Java开发规范详见Java软件开发规范2、struts、spring、ibatis、jquery简介Struts2主要来源于webwork框架,与Struts1相比,在数据传递方面,Struts2提供了更加强大OGNL标签功能,使其能够通过在action中定义变量来直接与jsp页面中的数据进行相互传值,省去了Struts1中的formbean;而在跳转控制方面,Struts2简化了配置文件的信息量,使页面和action之间的交换更加的简洁和直观,便于开发人员的管理。Spring功能非常的强大,比如它的控制反转/依赖注入机制,省去了我们自己书写工厂模式的工作,实现类对我们将要用到控制类、业务逻辑类、数据访问类、以及JNDI或者JDBC数据源的托管;Spring对AOP支持使我们在用户权限控制、事务处理方面节省了很多工作量;iBatis则是一种轻量级的OR Mapping框架,与Hibernate相比,iBatis提供了半自动化对象关系 映射的实现,开发人员需要编写具体的sql语句,为系统设计提供了更大的自由空间,为sql语句优化提供了便利。jQuery 是一个JavaScript 库,它有助于大大简化 JavaScrip 以及 Ajax 编程,它的目的就是保证代码简洁易读并可重用。开发人员再也不必编写大堆重复的循环代码和 DOM 脚本库调用了。使用 jQuery,开发人员可以把握问题的要点,并使用尽可能最少的代码实现想要的功能二、培训内容1、框架引入首先拿到空的框架frame,放到指定的位置解压,打开MyEclipse,点击“file”,页面显示如下:点击“import”,弹出import窗口选择“Existing Projects into Workspace”,点击Next,点击“Browse”,选择解压后的文件目录依次点击“确定”,“finish”如果出现错误,在项目上右击选择properties属性,弹出以下文本框在Text file encoding的other中选择”UTF-8”,点击“OK”即可。编译后目录结构如下:下面判断该空框架是否可以运行,点击MyEclipse上面的,弹出在project中选择frame,点击“ADD”,选择tomcat 6.X,点击finish,点击确定,在servers的tomcat 6.x中会多出frame项目,在tomcat 6.x上右击选择Debug Server或者Run Server运行模式。打开浏览器,在地址栏中输入http:/localhost:8080/frame弹出查询页面则表示配置成功。2、该框架是以sql server数据为例的,修改系统数据库连接打开com.yonggang.pxgl.springconfig下的 修改上面的数据库地址、名称、登录名、和密码信息即可3、开发前说明开发时,包的命名要和功能菜单相关,比如说开发编码管理,先定义包bmgl,然后在bmgl下分别建4个包,action、dao、service、pojo。action用于存放struts2的Action类,dao用于存放数据库访问接口及实现类,pojo用于存放java bean对象,service用于存放业务逻辑处理的接口及实现类。一般开发步骤:第一步新建POJO类第二步新建DAO接口及实现方法第三步新增SERVICE接口及实现方法第四步新增Action类,action类必须继承BaseAction第五步配置spring,在applicationContext-dao.xml、applicationContext-services.xml、applicationContext-action.xml中分别注入dao、service和action第六步新增struts的xml文件,定义相关配置,例如struts-bmgl.xml,并将struts-bmgl.xml引入到struts.xml中去第七步新增ibatis的xml文件,并引入到sqlMapConfig.xml中去第八步新增jsp文件4、 编码管理功能的开发1) 新建POJO类,在com.yonggang.frame.bmgl.pojo上右击,点击“new”、“class”弹出新增页面,在name中输入POJO类名称“Bmgl”点击finish,该类文件创建成功,下面就是在该类文件中定义对象,对象名称最好与数据库表中的写法一致选中类名称,在类名称上右击,依次选中“Source”、“Generate Getters and Setters”弹出以下窗口点击”Select All”,全部选中,然后点击“OK”, 生成对应的set 、get方法,部分代码如下:2) 新建dao接口,在com.yonggang.frame.bmgl.dao上面右击,点击new、“Interface”弹出接口新增页面,在Name中输入接口名称BmglDAO点击“Extenden interfaces”右边的“ADD”弹出选择窗口,在文本框中输入ICountRecords,下面窗口自动加载显示该接口选择该接口文件,点击OK,文件被加载到新增页面,点击finish,该接口文件创建成功,下面就是在该接口文件中定义相应的方法 查询方法定义,写法如下: public Pagination queryBmxx(Bmgl bmgl, int pageIndex, int pageSize)throws Exception;写完后系统会报错,因为对应的文件未被引入,同时按“SHIFT”+”CTRL”+”O”,会自动引入相关文件,系统就不会再报错,如果引入文件存在多个相同文件,需要自己根据需要进行选择。Bmgl表示要传递的参数,pageIndex表示传递页码数,pageSize表示每页显示记录条数 新增保存方法定义如下:public void saveBmxx(Bmgl bmgl) throws Exception;Bmgl表示要传递的参数 加载修改数据方法定义如下:public Bmgl loadBmxx(String bm_pk) throws Exception;Bmgl表示查询返回bmgl对象,bm_pk表示传递的参数 保存修改信息方法如下:public void updateBmxx(Bmgl bmgl) throws Exception;Bmgl表示要传递的参数 作废编码信息方法如下:public void deleteBmxx(String bm_pk) throws Exception;bm_pk表示传递的参数对于主从表的,只要重新定义明细表的操作方法即可,方法与上面写法一致,下一步就是在接口文件中编写接口方法。3) 新建dao实现类,完成与数据库的交换,在com.yonggang.frame.bmgl.dao上面右击,点击new、“class”弹出新增页面在“name”中输入”BmglDAOImpl”,实现类要继承BaseDAO同时要实现接口BmglDAO中抽象的方法。点击“Superclass:”对应的”Browse.”弹出“Superclass Selection”页面,在“choose a type”中输入“basedao”,页面如下:选中“BaseDAO”,点击“OK”,返回新增页面点击“InterFaces:”对应的”Add.”按钮,弹出“Implemented Interfaces Selection”页面,在“Choose interfaces:”中输入刚刚创建的“BmglDAO”选中“BmglDAO”,点击“OK”,返回新增页面点击finish,创建该类文件,代码如下:package com.yonggang.frame.bmgl.dao;import com.yonggang.frame.bmgl.pojo.Bmgl;import com.yonggang.frame.page.BaseDAO;import com.yonggang.frame.page.Pagination;public class BmglDAOImpl extends BaseDAO implements BmglDAO Overridepublic Pagination queryBmxx(Bmgl bmgl, int pageIndex, int pageSize)throws Exception / TODO Auto-generated method stubreturn null;Overridepublic void saveBmxx(Bmgl bmgl) throws Exception / TODO Auto-generated method stubOverridepublic Bmgl loadBmxx(String bm_pk) throws Exception / TODO Auto-generated method stubreturn null;Overridepublic void updateBmxx(Bmgl bmgl) throws Exception / TODO Auto-generated method stubOverridepublic void deleteBmxx(String bm_pk) throws Exception / TODO Auto-generated method stubdao实现类用来完成与数据库的交换的插入方法:insert(A,B);修改方法:update(A,B);删除方法:delete(A,B);返回对象:(Object)queryForObject(A,B);返回List:queryForList(A,B);查询带分页的:queryForPagination(A,B,C,D);其中“A”为ibatis配置文件中的ID值,“B”为参数,“C”为页码,“D”为每页显示条数。修改后的代码如下:package com.yonggang.frame.bmgl.dao;import com.yonggang.frame.bmgl.pojo.Bmgl;import com.yonggang.frame.page.BaseDAO;import com.yonggang.frame.page.Pagination;public class BmglDAOImpl extends BaseDAO implements BmglDAO public Pagination queryBmxx(Bmgl bmgl, int pageIndex, int pageSize)throws Exception return queryForPagination(queryBmxx, bmgl, pageIndex, pageSize);public void saveBmxx(Bmgl bmgl) throws Exception insert(saveBmxx, bmgl);public Bmgl loadBmxx(String bm_pk) throws Exception return (Bmgl) queryForObject(loadBmxx, bm_pk);public void updateBmxx(Bmgl bmgl) throws Exception update(updateBmxx, bmgl);public void deleteBmxx(String bm_pk) throws Exception delete(deleteBmxx, bm_pk);4) 新建service接口,在com.yonggang.frame.bmgl.service上右击,新增接口,同新增dao接口一样,但不需要继承其它接口点击finish,创建成功,编写代码如下:package com.yonggang.frame.bmgl.service;import com.yonggang.frame.bmgl.pojo.Bmgl;import com.yonggang.frame.page.Pagination;public interface BmglService /* * 查询编码信息 */public Pagination queryBmxx(Bmgl bmgl, int pageIndex, int pageSize)throws Exception;/* * 新增保存 */public void saveBmxx(Bmgl bmgl) throws Exception;/* * 加载编码要修改的信息 */public Bmgl loadBmxx(String bm_pk) throws Exception;/* * 保存修改的编码信息 */public void updateBmxx(Bmgl bmgl) throws Exception;/* * 根据主键作废该记录 */public void deleteBmxx(String bm_pk) throws Exception;Service接口中的方法一般与DAO中的方法是一致的,当涉及到多张表时,在service层即可显示与dao层的不一致性了,service层用来处理业务逻辑的,dao层可以统一封装,省略相应代码编写,但是为了能让大家更好的理解分层的概念,dao层在该培训文档中未省略。5) 新建service实现类,在com.yonggang.frame.bmgl.service上右击,新增类文件,在Name中输入类文件名“BmglServiceImpl”点击“InterFaces:”对应的”Add.”按钮,弹出“Implemented Interfaces Selection”页面,在“Choose interfaces:”中输入刚刚创建的“BmglService”接口选中“Matching items”中的“BmglService”,点击“OK”,返回新增页面点击finish,类文件创建成功,下一步就将DAO接口注入到“BmglServiceImpl”实现类中,在“BmglServiceImpl”中定义private BmglDAO bmglDAO;定义之后系统会报错,原因是该类文件未被引入,同时按“SHIFT”+”CTRL”+”O”,会自动引入相关文件,系统就不会再报错,如果引入文件存在多个相同文件,需要自己根据需要进行选择在bmglDAO上右击选择source-Generate Getters and Setters,截图如下:点击OK,系统自动生成bmglDAO的get和set方法,代码如下:package com.yonggang.frame.bmgl.service;import com.yonggang.frame.bmgl.dao.BmglDAO;import com.yonggang.frame.bmgl.pojo.Bmgl;import com.yonggang.frame.page.Pagination;public class BmglServiceImpl implements BmglService private BmglDAO bmglDAO;public BmglDAO getBmglDAO() return bmglDAO;public void setBmglDAO(BmglDAO bmglDAO) this.bmglDAO = bmglDAO;Overridepublic Pagination queryBmxx(Bmgl bmgl, int pageIndex, int pageSize)throws Exception / TODO Auto-generated method stubreturn null;Overridepublic void saveBmxx(Bmgl bmgl) throws Exception / TODO Auto-generated method stubOverridepublic Bmgl loadBmxx(String bm_pk) throws Exception / TODO Auto-generated method stubreturn null;Overridepublic void updateBmxx(Bmgl bmgl) throws Exception / TODO Auto-generated method stubOverridepublic void deleteBmxx(String bm_pk) throws Exception / TODO Auto-generated method stub如果感觉代码不规范,比较乱,可以同时按“SHIFT”+”CTRL”+”F”,系统会自动对代码进行排列。下一步就是修改逻辑处理层代码,使其与DAO层代码交互,在queryBmxx方法中,修改返回语句,输入”bmglDAO”,必须与前面定义的名字一致,注意大小写,然后输入“.”找到对应的方法,其它方法修改也参照查询方法,修改后的代码如下:package com.yonggang.frame.bmgl.service;import com.yonggang.frame.bmgl.dao.BmglDAO;import com.yonggang.frame.bmgl.pojo.Bmgl;import com.yonggang.frame.page.Pagination;public class BmglServiceImpl implements BmglService private BmglDAO bmglDAO;public BmglDAO getBmglDAO() return bmglDAO;public void setBmglDAO(BmglDAO bmglDAO) this.bmglDAO = bmglDAO;Overridepublic Pagination queryBmxx(Bmgl bmgl, int pageIndex, int pageSize)throws Exception / TODO Auto-generated method stubreturn bmglDAO.queryBmxx(bmgl, pageIndex, pageSize);Overridepublic void saveBmxx(Bmgl bmgl) throws Exception bmglDAO.saveBmxx(bmgl);Overridepublic Bmgl loadBmxx(String bm_pk) throws Exception / TODO Auto-generated method stubreturn bmglDAO.loadBmxx(bm_pk);Overridepublic void updateBmxx(Bmgl bmgl) throws Exception bmglDAO.updateBmxx(bmgl);Overridepublic void deleteBmxx(String bm_pk) throws Exception bmglDAO.deleteBmxx(bm_pk);6) 新建Action类, 在com.yonggang.frame.bmgl.action上右击,选择“NEW”、“Class”点击“Class”,弹出新增页面,在“Name”中输入”BmglAction”点击“Superclass”对应的“Browse.”,弹出“Superclass Selection”选择页面,在“Choose a type”中输入“BaseAction”选择框架自带的“BaseAction”,点击“OK”,返回新增页面点击“finish”,编码管理action创建成功代码如下:在“BmglAction”中注入编码管理service接口及实体对象private BmglService bmglService;private Bmgl bmgl;默认系统会报错,只需把“BmglService”和“Bmgl”的文件引入即可,同时按“SHIFT”+”CTRL”+”O”,文件自动引入,右击生产对应的get、set方法代码如下:package com.yonggang.frame.bmgl.action;import com.yonggang.frame.bmgl.pojo.Bmgl;import com.yonggang.frame.bmgl.service.BmglService;import com.yonggang.frame.page.BaseAction;public class BmglAtion extends BaseAction private BmglService bmglService;private Bmgl bmgl; private Pagination pagination;public Bmgl getBmgl() return bmgl;public void setBmgl(Bmgl bmgl) this.bmgl = bmgl;public BmglService getBmglService() return bmglService;public void setBmglService(BmglService bmglService) this.bmglService = bmglService;public Pagination getPagination() return pagination;public void setPagination(Pagination pagination) this.pagination = pagination;7) 配置spring文件 打开applicationContext-dao.xml,声明bmglDAO的bean对象,指向其实现类其中parent=baseDAO属性为固定写法,继承baseDAO,注意大小写 打开applicationContext-services.xml,声明bmglService的bean对象,指向其实现类 ref元素是用在property中,来设置需要引用的容器管理的其它Bean,这里指向applicationContext-dao.xml中新建的bean的ID,property元素用来指定需要容器注入的属性,bmglDAO属性需要容器注入此处是设值注入,因此BmglServiceImpl类必须拥有setBmglDAO方法,这也就是为什么在BmglServiceImpl中定义private BmglDAO bmglDAO并生成get和set方法的原因。按住“CTRL”,在 name=bmglDAO的DAO上点击,如果能点到对应setBmglDAO方法上去,则表示配置成功 打开applicationContext-action.xml声明bmglAction的bean对象,指向其实现类ref这里指向applicationContext-services.xml中新建的bean的ID,property元素用来指定需要容器注入的属性,bmglService属性需要容器注入此处是设值注入,因此bmglAction类必须拥有setBmglService方法,Spring默认创建出的对象都是单实例的,加上scope=prototype,让spring每次请求创建一个对象验证配置是否成功也可以按住“CTRL”,再点击name=“bmglService”的service,点击进入对应的set方法则表示配置成功8) 配置struts文件新建struts-bmgl.xml,打开com.yonggang.frame.strutsconfig包,随便点击一个XML文件,右击复制再在com.yonggang.frame.strutsconfig包上右击黏贴将文件名字改为“struts-bmgl.xml”,点击“OK”,编码管理的struts xml文件创建成功,双击打开,文件只保留以下文件 但是,包的名字必须重新定义,这边我把name定义为“bmgl”,然后点击保存9) 打开struts.xml,将新建的struts-bmgl.xml文件引入到该文件中去 代码放在和中间,然后点击保存10)打开com.yonggang.frame.ibatisconfig包,随便点击一个XML文件,右击复制,黏贴将文件名改为“Bmgl.xml”,双击打开“Bmgl.xml”,代码只保留: sqlMap的namespace要重新定义,这边我定义为“bmgl”,然后定义相应的查询、插入、加载、更新、作废方法,代码如下: select bm_pk,flmc,tmmc,cjr,cjsj,row_number() over(order by cjsj desc)as rownum_from PUB_BMBwhere yxbz=1flmc like%+#flmc#+%tmmc like%+#tmmc#+%INSERT INTO PUB_BMB(BM_PK,FLMC,TMMC,CJR,CJSJ,YXBZ)VALUES($bm_pk$,$flmc$,$tmmc$,$cjr$,getdate(),1)select bm_pk,flmc,tmmc,cjr,cjsj,row_number() over(order by cjsj desc)as rownum_from PUB_BMBwhere yxbz=1 and bm_pk=$bm_pk$update PUB_BMB set flmc=$flmc$,tmmc=$tmmc$, xgr=$xgr$,xgsj=getdate()where bm_pk=$bm_pk$update PUB_BMB set yxbz=0, xgr=$xgr$,xgsj=getdate() where bm_pk=$bm_pk$其中允许你指定别名,这样你就可以通过你指定的短名字来代替冗长的名字了,resultClass为查询的结果集,这里就是指在中定义的bmgl,ibatis的Id值为dao实现类中的值是一致的,如:插入方法:insert(A,B);修改方法:update(A,B);删除方法:delete(A,B);返回对象:(Object)queryForObject(A,B);返回List:queryForList(A,B);查询带分页的:queryForPagination(A,B,C,D);其中“A”为ibatis配置文件中的ID值,这样就自动执行ibatis中对应的方法11) 打开com.yonggang.frame.ibatisconfig下的sqlMapConfig.xml,将bmgl.xml文件引入到sqlMapConfig.xml中去 引入的文件放在和 之间至此所有的后台配置都已经配好了,12) 如果该项目未加载到tomcat中,则在tomcat上右击,如果加载了,则省略该步骤选择“Add Deployment.”,弹出以下窗口在“project”的下拉列表中选择“frame”,点击“finish”,项目加载之后,在tomcat上右击,选择“debug server”或“run server”运行,如果没报错,则表示配置成功,如果运行出错,主要检查spring、ibatis、struts的XML文件,是否存在命名重复。13) 在WebRoot下新建bmgl文件,在“WebRoot”上右击“NEW”、“Folder”在”Folder name”中输入“bmgl”,点击“finish”,结构如下:14) 在“WebRoot/bmgl”上右击,点击“new”、“jsp(advanced templates)” 将”MyJsp.jsp”改为“bmgl_list.jsp”,用来完成对编码管理的查询,然后点击”finish”打开“bmgl_list.jsp”,将pageEncoding=ISO-8859-1改为 pageEncoding=UTF-8,将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年蚌埠市公开选调公务员5名考试参考题库及答案解析
- 2025广东广州市天河区凤凰中学秋季学期急聘初中道德与法治教师1人考试参考题库及答案解析
- 2025山东青岛市农业农村局所属部分事业单位紧缺急需专业人才招聘考试参考题库及答案解析
- 2024年咨询工程师通关考试题库(必刷)附答案详解
- 2025年高校教师资格证之《高等教育法规》题库高频重点提升试题附答案详解【完整版】
- 2025湖南邵阳洞口县消防救援大队招聘消防技术服务队人员考试参考题库及答案解析
- 托管食品安全培训记录内容课件
- 2025北京市昌平区城市管理指挥中心招聘接诉即办工作人员15人考试参考题库及答案解析
- 托管班安全培训内容课件
- 园林绿化作业人员考试彩蛋押题含完整答案详解(名校卷)
- 《民航客舱设备操作与管理》课件-项目四 飞机舱门及撤离滑梯
- DL-T 1476-2023 电力安全工器具预防性试验规程
- 2023年10月自考02207电气传动与可编程控制器PLC试题及答案含解析
- 网络自动化运维教程-课程标准
- 项目及其策划方案
- 《食品质量检验分析技术》
- 百家争鸣详解课件
- 肠内营养并发症预防与处理指南
- 宠物医疗行业招商策划
- 中医药与人工智能融合应用
- UL484美国房间空调器安全检验规范
评论
0/150
提交评论