课程设计实训教学示例项目——《网上银行账户管理系统》——前台客户信息的DAO组件及测试(第1部分)
基于Struts+Spring+JDBC架构课程设计实训教学示例项目——《网上银行账户管理系统》——系统概要设计说明书

J2EE课程设计实训教学示例项目《网上银行账户管理系统》系统概要设计说明书文档信息目录第一章引言 (5)1.1编写目的 (5)1.1.1概要设计说明书目的 (5)1.1.2预期读者 (5)1.2背景 (5)1.1.3待开发软件系统的名称 (5)1.1.4项目的任务提出者 (6)1.1.5项目的任务开发者 (6)1.3定义 (6)1.1.6本文档中涉及的专业词汇 (6)1.1.7名词说明 (6)第二章总体设计(系统架构设计) (7)2.1需求规定 (7)2.1.1输入输出要求 (7)2.1.2时间要求 (7)2.1.3灵活性要求 (7)2.2运行环境 (7)2.2.1设备 (7)2.2.2支撑软件 (8)2.3基本设计概念和处理流程 (8)2.3.1系统概述 (8)2.3.2 系统架构示图 (9)2.3.3各层中应用了相应的主流的J2EE框架技术 (11)2.3.4系统基于MVC设计 (12)2.4 系统结构(系统各个组件设计) (13)2.4.1体系结构包图(架构包图) (13)2.4.2组件设计图(系统中的各个组件) (13)2.4.3类图与接口设计(各个组件中的相关的类和接口) (13)第三章系统数据结构设计 (15)3.1数据库逻辑结构设计 (15)3.1.1实体关系(Entity-Relationship)图 (15)3.1.2数据库表的逻辑设计 (16)第四章系统出错处理设计 (21)4.1出错信息 (21)4.2补救措施 (21)4.3系统维护设计 (22)第一章引言1.1编写目的本文档作为网上银行的概要设计说明文档,用于与用户确定最终的目标,并成为协议文本的一部分,同时也是本系统设计人员的基础文档。
1.1.1概要设计说明书目的本概要设计说明书说明了网上银行系统设计的整体结构。
1.1.2预期读者本系统开发人员及维护人员。
1.2背景网上银行是开展各项金融业务的基础,是一切金融交易的门槛,不论什么样的金融交易,只要通过银行,都表现为资金从一个账户到另一个账户的转移,都会在账户记录中留下痕迹。
课程设计实训教学示例项目《网上银行账户管理系统》利用模板模式重构客户信息管理DAO组件及测试(第1部分)

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——利用模板模式重构前台客户信息管理的DAO 组件及测试(第1/3部分)1.1.1利用模板模式重构UserManageDAOJDBCImple类1、应用的技术背景由于在本DAO组件类中需要实现数据分页、二进制字段等方面的数据访问,而这些功能的实现在不同的数据库系统中所需要的SQL语句是不一样的。
为了使得本DAO能够达到可扩展性,因此应用模板模式重构UserManageDAOJDBCImple类。
(1)不同的数据库对标准的SQL支持不完全一致由于不同的数据库在对标准的SQL语句的支持方面是不同的,已经为了能够使得上层的“业务层”与数据库类型无关,因此应该要针对不同的数据库类型提供不同的DAO组件。
(2)不同的数据库又提供对标准的SQL语句的某些通用的支持但由于不同的数据库在对SQL语句的支持方面也有相同的部分,针对这样的应用场景,我们应该如何解决?2、每次翻页的时候只从数据库里检索页面大小的块区的数据(每次翻页的时候只从数据库里检索页面大小的块区的数据)(1)主要的优点:每次翻页都需要查询数据库,但查询出的记录数很少,网络传输数据量不大,如果使用连接池更可以略过最耗时的建立数据库连接过程。
而在数据库端有各种成熟的优化技术用于提高查询速度,比在应用服务器层做缓存有效多了。
(2)实现原理:只是检索页面大小的块区的数据,而非检索所有的数据(3)Oracle的Top-N分页技术select * from (select rownum r,表名.* from 表名) where r between 从那开始 and 到那结束;例:查询1~10条记录select * from (select rownum r,student.* from student) where r between 1 and 10;(4)MySQL的Top-N分页技术limit函数:第一个参数,从哪个元素开始(第一条记录为0);第二个元素,获取记录的条数。
课程设计实训教学示例项目——《网上银行账户管理系统》——在项目中应用观察者模式实现日志记录的功能操作

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——在项目中应用观察者模式实现日志记录的功能操作1.1.1添加操作日志记录的观察者类1、添加日志记录信息的VO类(1)BusinessActionLogInfoVO,包名称为com.px1987.webbank.model.vo2、添加观察者BusinessActionLogObserver类的接口BusinessActionLogInterface (1)接口所在的包名称为com.px1987.webbank.util(2)设计该接口package com.px1987.webbank.util;import com.px1987.webbank.model.*;public interface BusinessActionLogInterface {public void logBusinessActionInfo(BusinessActionLogInfoVO oneBusinessActionLogInfoVO);}3、设计观察者BusinessActionLogObserver类(1)添加BusinessActionLogObserver类该类实现java.util包中的Observer接口和前面的BusinessActionLogInterface接口,并且对业务行为进行观察。
该类名称为BusinessActionLogObserver、包为com.px1987.webbank.util。
目前该类的功能实现是基于JDK的Logger类实现日志功能。
(2)编程该类package com.px1987.webbank.util;import java.util.Observable;import java.util.Observer;import com.px1987.webbank.model.BusinessActionLogInfoVO;public class BusinessActionLogObserver implements Observer,BusinessActionLogInterface { public BusinessActionLogObserver() {}public void update(Observable o, Object arg) {BusinessActionLogInfoVO oneBusinessActionLogInfoVO=(BusinessActionLogInfoVO)arg;logBusinessActionInfo(oneBusinessActionLogInfoVO);}public void logBusinessActionInfo( BusinessActionLogInfoVOoneBusinessActionLogInfoVO) { }}4、为日志管理类提供一个工厂方法模式来创建各个日志记录类的对象实例(1)类名称为BusinessActionLogInfoFactory,包名称为com.px1987.webbank.factory(2)编程该BusinessActionLogInfoFactory类注意本工厂类中的产品对象实例的创建方法与标准的GOF中的工厂方法中的产品对象实例的创建方法不同,主要是由于该日志管理类作为观察者模式的观察者类。
课程设计实训项目——《网上银行账户管理系统》——构建基于J2EE Web Servlet组件技术的控制层(第1部分)

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建基于J2EE Web Servlet组件技术的控制层(第1/4部分)1.1.1与系统控制层设计有关的基本概念1、请求控制层的设计原则请求控制层包括代表驱动应用程序行为的用例管理器的所有控制器类。
该层代表从客户机到业务中间层的边界。
该层的主要职责是:(1)提供对系统业务层中的各个业务组件进行访问的统一入口(2)接收并分发用户请求(3)将用户的各个请求数据(表单或者超链接)转换为业务层中的各个业务实体数据对象(4)将错误消息或者文字进行格式化、转换(5)管理用户的session(6)安全认证、记录日志等通用处理2、保证线程安全的Servlet组件类尽可能少用全局变量。
1.1.2构建前台服务控制层中的页面跳转的Servlet组件1、添加PageForwordServlet组件(1)包名称为com.px1987.webbank.servlet并继承于HttpServlet类(2)设置其URL-pattern为/pageForwordAction.action(3)编程该PageForwordServlet组件中的各个控制方法package com.px1987.webbank.servlet;import java.io.IOException;import java.util.ArrayList;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.springframework.context.ApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils; import com.px1987.webbank.config.TargetPageNameConfig;import com.px1987.webbank.constant.WebBankAllConstants;import com.px1987.webbank.exception.WebBankException;import erInfoManageImpleFacade;import com.px1987.webbank.model.vo.AccountInfoVO;import com.px1987.webbank.model.vo.PageStateVO_Prototype;import erInfoVO;public class PageForwordServlet extends HttpServlet {private static final long serialVersionUID = 7096173379548544654L;String forwardShowWebAppError=null;String showWebAppErrorAndReturn=null;ApplicationContext applicationContext=null;public PageForwordServlet() {super();}public void destroy() {super.destroy();}public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//对下面的代码可以应用Command模式进行优化或者滥用反射自动匹配String action=request.getParameter("action");if(action.equals("forwardIndex")) //是跳转到首页{forwardIndex(request, response);}else if(action.equals("forwardUserLogin")) //是跳转到登陆页{forwardUserLogin(request, response);}else if(action.equals("forwardUserRegisterRule")) //是跳转到注册页{forwardUserRegisterRule(request, response);}else if(action.equals("findPassWord")) //是跳转到找回密码页{findPassWord(request, response);}else if(action.equals("forwardUpdateUserInfo")) //是跳转到修改信息页{forwardUpdateUserInfo(request, response);}else if(action.equals("forwardUpdateUserPassWord")) //是跳转到修改密码页{forwardUpdateUserPassWord(request, response);}else if(action.equals("forwardOnLineLogOut")) //是跳转到在线注销页{forwardOnLineLogOut(request, response);}else if(action.equals("forwardNewAccountInfo")) //是跳转到开户页或者跳转到存钱页{forwardNewAccountInfo(request, response);}else if(action.equals("forwardGetOutSomeMoney")) //是跳转到取钱页或者跳转到销户页{forwardGetOutSomeMoney(request, response);}else if(action.equals("forwardTransmitAccount")) //是跳转到转帐页{forwardTransmitAccount(request, response);}else if(action.equals("forwardShowMeAccountInfo")) //是跳转到显示我的帐户页{forwardShowMeAccountInfo(request, response);}else if(action.equals("forwardSystemManage")) //是跳转到后台系统管理页{forwardSystemManage(request, response);}else if(action.equals("forwardOnLineHelpIndex")) //是跳转到在线帮助页{forwardOnLineHelpIndex(request, response);}else if(action.equals("forwardShowOneOnLineUserInfo")) //是查看在线人员信息吗{forwardShowOneOnLineUserInfo(request, response);}//下面为后台管理的转发else if(action.equals("forwardAdminLeftMenu")){forwardAdminLeftMenu(request, response);}else if(action.equals("forwardAdminSwitchMenu")){forwardAdminSwitchMenu(request, response);}else if(action.equals("forwardAdminDefaultContent")){forwardAdminDefaultContent(request, response);}else if(action.equals("showNoLoginError")){showNoLoginError(request, response);}}//************************下面为各个实际的页面跳转的方法******************public void showNoLoginError(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String forwardAdminLeftMenu=TargetPageNameConfig.getProperty("showNoLoginError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardAdminLeftMenu);oneRequestDispatcher.forward(request, response);}public void forwardAdminLeftMenu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardAdminLeftMenu=TargetPageNameConfig.getProperty("forwardAdminLeftMenu");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardAdminLeftMenu);oneRequestDispatcher.forward(request, response);}public void forwardAdminSwitchMenu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardAdminSwitchMenu=TargetPageNameConfig.getProperty("forwardAdminSwitchMenu");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardAdminSwitchMenu);oneRequestDispatcher.forward(request, response);}public void forwardAdminDefaultContent(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardAdminDefaultContent=TargetPageNameConfig.getProperty("forwardAdminDefaultContent");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardAdminDefaultContent);oneRequestDispatcher.forward(request, response);}public void forwardShowOneOnLineUserInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;String registerUserID=request.getParameter("userID");String type_User_Admin=request.getParameter("userType");UserInfoVO oneUserInfoVO=null;try {// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade(); //没有将J2EE Web与Spring相互整合之前的实现方法applicationContext=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");oneUserInfoVO=oneUserInfoManageImpleFacade.doGetOneRegisterUserInfo(registerUserID);}catch (WebBankException e) {request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}oneUserInfoVO.setType_User_Admin(newInteger(Integer.parseInt(type_User_Admin)));request.setAttribute("oneUserInfoVO", oneUserInfoVO); //转到页面中显示输出其信息String forwardShowOneOnLineUserInfo=TargetPageNameConfig.getProperty("forwardShowOneOnLineUserInfo");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowOneOnLineUserInfo);oneRequestDispatcher.forward(request, response);}public void forwardIndex(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String forwardIndex=TargetPageNameConfig.getProperty("forwardIndex");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardIndex);oneRequestDispatcher.forward(request, response);}public void forwardUserLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String forwardUserLogin=TargetPageNameConfig.getProperty("forwardUserLogin");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardUserLogin);oneRequestDispatcher.forward(request, response);}public void forwardUserRegisterRule(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardUserRegisterRule=TargetPageNameConfig.getProperty("forwardUserRegisterRule");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardUserRegisterRule);oneRequestDispatcher.forward(request, response);}public void forwardUserRegister(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;String defaultStateName="北京";ArrayList allCityNameInOneState=null;try{// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade(); //没有将J2EE Web与Spring相互整合之前的实现方法applicationContext=WebApplicationContextUtils.getWebApplicationContext(thi s.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");allCityNameInOneState=oneUserInfoManageImpleFacade.doGetAllCityNameInOneSt ate(defaultStateName);}catch (WebBankException e) {request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}request.setAttribute("allCityNameInOneState", allCityNameInOneState);String forwardUserRegister=TargetPageNameConfig.getProperty("forwardUserRegister");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardUserRegister);oneRequestDispatcher.forward(request, response);}public void findPassWord(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String findPassWord=TargetPageNameConfig.getProperty("findPassWord");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(findPassWord);oneRequestDispatcher.forward(request, response);}public void forwardUpdateUserInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;String defaultStateName="北京";ArrayList<String> allCityNameInOneState=null;try{// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade(); //没有将J2EE Web与Spring相互整合之前的实现方法applicationContext=WebApplicationContextUtils.getWebApplicationContext(thi s.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");allCityNameInOneState=oneUserInfoManageImpleFacade.doGetAllCityNameInOneSt ate(defaultStateName);}catch (WebBankException e) {request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}request.setAttribute("allCityNameInOneState", allCityNameInOneState);String forwardUpdateUserInfo=TargetPageNameConfig.getProperty("forwardUpdateUserInfo");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardUpdateUserInfo);oneRequestDispatcher.forward(request, response);}public void forwardUpdateUserPassWord(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardUpdateUserPassWord=TargetPageNameConfig.getProperty("forwardUpdateUserPassWord");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardUpdateUserPassWord);oneRequestDispatcher.forward(request, response);}public void forwardOnLineLogOut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardOnLineLogOut=TargetPageNameConfig.getProperty("forwardOnLineLogOut");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardOnLineLogOut);oneRequestDispatcher.forward(request, response);}public void forwardNewAccountInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;HttpSession session=request.getSession();//获得保存在session中的用户信息(会话跟踪)UserInfoVO oneUserInfoVOInSession=(UserInfoVO)session.getAttribute("oneUserInfoVO");ArrayList<AccountInfoVO> onePageAccountInfoVOArrayList=null;PageStateVO_Prototype onePageStateVO_Prototype=null;try{onePageStateVO_Prototype=new PageStateVO_Prototype();//根据该用户的ID获得其各个帐户信息(但只取出第一页的数据)onePageStateVO_Prototype.setThisPageNumber(1);onePageStateVO_Prototype.setPageSize(WebBankAllConstants.webServiceManage_ pageSize);//没有将J2EE Web与Spring相互整合之前的实现方法// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade();applicationContext=WebApplicationContextUtils.getWebApplicationContext(thi s.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");onePageAccountInfoVOArrayList=oneUserInfoManageImpleFacade.doGetOnePageAcc ountInfoByUserID(onePageStateVO_Prototype,oneUserInfoVOInSession.getId());}catch(WebBankException e){request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}request.setAttribute("onePageAccountInfoVOArrayList",onePageAccountInfoVOA rrayList);request.setAttribute("onePageStateVO_Prototype",onePageStateVO_Prototype);request.setAttribute("currentPageNumber",newInteger(onePageStateVO_Prototype.getThisPageNumber()).toString());String forwardNewAccountInfo=TargetPageNameConfig.getProperty("forwardNewAccountInfo");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardNewAccountInfo);oneRequestDispatcher.forward(request, response);}public void forwardGetOutSomeMoney(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;HttpSession session=request.getSession();//获得保存在session中的用户信息(会话跟踪)UserInfoVO oneUserInfoVOInSession=(UserInfoVO)session.getAttribute("oneUserInfoVO");ArrayList<AccountInfoVO> onePageAccountInfoVOArrayList=null;PageStateVO_Prototype onePageStateVO_Prototype=null;try {onePageStateVO_Prototype=new PageStateVO_Prototype();//根据该用户的ID获得其各个帐户信息(但只取出第一页的数据)onePageStateVO_Prototype.setThisPageNumber(1);onePageStateVO_Prototype.setPageSize(WebBankAllConstants.webServiceManage_ pageSize);//没有将J2EE Web与Spring相互整合之前的实现方法// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade();applicationContext=WebApplicationContextUtils.getWebApplicationContext(thi s.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");onePageAccountInfoVOArrayList=oneUserInfoManageImpleFacade.doGetOnePageAcc ountInfoByUserID(onePageStateVO_Prototype,oneUserInfoVOInSession.getId());}catch(WebBankException e){request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}request.setAttribute("onePageAccountInfoVOArrayList",onePageAccountInfoVOA rrayList);request.setAttribute("onePageStateVO_Prototype",onePageStateVO_Prototype);request.setAttribute("currentPageNumber",newInteger(onePageStateVO_Prototype.getThisPageNumber()).toString());String forwardGetOutSomeMoney=TargetPageNameConfig.getProperty("forwardGetOutSomeMoney");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardGetOutSomeMoney);oneRequestDispatcher.forward(request, response);}public void forwardTransmitAccount(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;HttpSession session=request.getSession();//获得保存在session中的用户信息(会话跟踪)UserInfoVO oneUserInfoVOInSession=(UserInfoVO)session.getAttribute("oneUserInfoVO");ArrayList<AccountInfoVO> onePageAccountInfoVOArrayList=null;PageStateVO_Prototype onePageStateVO_Prototype=null;try {onePageStateVO_Prototype=new PageStateVO_Prototype();//根据该用户的ID获得其各个帐户信息(但只取出第一页的数据)onePageStateVO_Prototype.setThisPageNumber(1);onePageStateVO_Prototype.setPageSize(WebBankAllConstants.webServiceManage_ pageSize);//没有将J2EE Web与Spring相互整合之前的实现方法// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade();applicationContext=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");onePageAccountInfoVOArrayList=oneUserInfoManageImpleFacade.doGetOnePageAcc ountInfoByUserID(onePageStateVO_Prototype,oneUserInfoVOInSession.getId());}catch(WebBankException e){request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}request.setAttribute("onePageAccountInfoVOArrayList",onePageAccountInfoVOA rrayList);request.setAttribute("onePageStateVO_Prototype",onePageStateVO_Prototype);request.setAttribute("currentPageNumber",newInteger(onePageStateVO_Prototype.getThisPageNumber()).toString());String forwardTransmitAccount=TargetPageNameConfig.getProperty("forwardTransmitAccount");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardTransmitAccount);oneRequestDispatcher.forward(request, response);}public void forwardShowMeAccountInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfoManageImpleFacade oneUserInfoManageImpleFacade=null;HttpSession session=request.getSession();UserInfoVO oneUserInfoVOInSession=(UserInfoVO)session.getAttribute("oneUserInfoVO");ArrayList<AccountInfoVO> onePageAccountInfoVOArrayList=null;PageStateVO_Prototype onePageStateVO_Prototype=null;try {//根据该用户的ID获得其各个帐户信息onePageStateVO_Prototype=new PageStateVO_Prototype();//根据该用户的ID获得其各个帐户信息(但只取出第一页的数据)onePageStateVO_Prototype.setThisPageNumber(1);onePageStateVO_Prototype.setPageSize(WebBankAllConstants.webServiceManage_ pageSize);//没有将J2EE Web与Spring相互整合之前的实现方法// oneUserInfoManageImpleFacade=new UserInfoManageImpleFacade();applicationContext=WebApplicationContextUtils.getWebApplicationContext(thi s.getServletContext());oneUserInfoManageImpleFacade=(UserInfoManageImpleFacade)applicationContext .getBean("oneUserInfoManageImpleFacade");onePageAccountInfoVOArrayList=oneUserInfoManageImpleFacade.doGetOnePageAcc ountInfoByUserID(onePageStateVO_Prototype,oneUserInfoVOInSession.getId());}catch (WebBankException e) {request.setAttribute("errorText", e.getMessage());forwardShowWebAppError=TargetPageNameConfig.getProperty("forwardShowWebAppError");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowWebAppError);oneRequestDispatcher.forward(request, response);return;}request.setAttribute("onePageAccountInfoVOArrayList",onePageAccountInfoVOA rrayList);request.setAttribute("onePageStateVO_Prototype",onePageStateVO_Prototype);request.setAttribute("currentPageNumber",newInteger(onePageStateVO_Prototype.getThisPageNumber()).toString());String forwardShowMeAccountInfo=TargetPageNameConfig.getProperty("forwardShowMeAccountInfo");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardShowMeAccountInfo);oneRequestDispatcher.forward(request, response);}public void forwardSystemManage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forwardSystemManage=TargetPageNameConfig.getProperty("forwardSystemManage");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardSystemManage);oneRequestDispatcher.forward(request, response);}public void forwardOnLineHelpIndex(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { String forwardOnLineHelpIndex=TargetPageNameConfig.getProperty("forwardOnLineHelpIndex");RequestDispatcher oneRequestDispatcher=request.getRequestDispatcher(forwardOnLineHelpIndex);oneRequestDispatcher.forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String action=request.getParameter("action");if(action.equals("forwardUserRegister")){ //是跳转到注册页forwardUserRegister(request, response);}}public void init() throws ServletException {}}(4)部署该Servlet组件<servlet><servlet-name>PageForwordServlet</servlet-name><servlet-class>com.px1987.webbank.servlet.PageForwordServlet</servlet-class></servlet><servlet-mapping><servlet-name>PageForwordServlet</servlet-name><url-pattern>/pageForwordAction.action</url-pattern></servlet-mapping>。
J2EE课程设计实训教学示例项目——《网上银行账户管理系统》——银行帐户管理系统的需求和设计

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——银行帐户管理系统的需求和设计1.1.1银行帐户管理系统的需求和设计1 、银行帐户管理系统的主要的功能银行账户是开展各项金融业务的基础,是一切金融交易的门槛,不论什么样的金融交易,只要通过银行,都表现为资金从一个账户到另一个账户的转移,都会在账户记录中留下痕迹。
因此,必须加强银行账户系统的信息化建设,加大对账户资金流动的监控力度。
用户到银行办理业务主要有开户、存款、取款、查询、转账、改密码、销户等七项工作。
因此,系统的前台基本功能应该包含开户、存款、取款、查询、转账、改密码、销户等多项功能模块。
通过该银行账户管理系统的开发,使银行的账户管理工作系统化、规范化、自动化,从而达到提高账户管理效率的目的,使有关的工作人员可以轻松快捷地完成对账户管理的任务。
2、系统的基本要求本系统选题为银行账户管理系统,是模拟银行账户的管理开发的。
设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。
本系统的具体表现为:1)系统应符合银行账户管理的规定,满足银行相关人员日常使用的需要,并达到操作过程中的直观、方便、实用安全等要求;2)系统采用模块化程序设计方法,即便于系统功能的各种组合和修改,又便于系统以后的扩展和功能完善;3)系统应具备数据库维护功能,及时根据应用的需求进行数据的添加、删除、等操作。
3、基本功能描述(1)开户1)功能描述:用户向银行前台工作人员出示身份证,填写姓名、家庭住址、身份证号码,并且决定开始要存入的初始金额;银行工作人员给用户开出帐号以及给出密码和开户日期。
2)操作者:前台工作人员3)用户输入:输入用户姓名、初始金额、身份证号4)输出:帐号、密码、开户日期(2)存款1)功能描述:用户向银行前台工作人员提供帐号,并且决定要存入的金额;银行工作人员给用户帐号的余额和存款日期。
课程设计实训教学示例项目——《网上银行账户管理系统》——前台客户信息的DAO组件及测试(第1部分)

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——前台客户信息的DAO组件及测试(第2/2部分)1.1.1明确DAO组件的设计原则1、DAO接口的设计要点:(1)接口的语义应该仅限于反映对实体的持久化操作(CRUD)比如create、update、delete、findByXXX等。
在DAO接口中不能带有任何的业务语义(商业)。
如果不遵守这个原则,会造成业务逻辑与数据逻辑的混淆,不符合高内聚的最高原则。
(2)DAO实现类的编程要求独立的数据保持组件可以将应用程序与数据源名称、连接信息、DB管理方面的帐户等数据库相关内容隔离开。
因此,应该将这些内容放到某个XML的配置文件中。
(3)DAO(数据访问逻辑组件)的主要作用数据访问逻辑组件主要完成从数据库中检索数据和把实体数据保存回数据库中。
数据访问逻辑组件还包含实现数据相关操作所需的事务控制逻辑。
2、DAO类设计一般的方式(1)每个数据库表对应一个DAO组件-----遵守“单一职责”(2)一个DAO组件对应多个不同的数据库表(这些数据库表之间的数据有紧密关系)1.1.2提供与用户信息相关的DAO组件1、添加一个所有DAO组件的共同接口AllDAOBaseInterface(1)接口的名称为AllDAOBaseInterface,包名称为com.px1987.webbank.dao.inter(2)设计该AllDAOBaseInterfac接口package com.px1987.webbank.dao.inter;import java.sql.Connection;public interface AllDAOBaseInterfac {public void setCon(Connection con);}注意:该接口是为了能够在后面应用动态代理技术而提供的,以便能够注入数据库连接Connection对象。
课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第3部分)

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第3/6部分)1.1.1对前面的数据库连接ConnectDBBean组件应用单元测试1、单元测试(1)单元测试有关的概念(2)为什么要应用它?(3)如何应用它?-----应用JUnit框架2、添加一个测试项目----应该将测试项目和被测试的项目相互分离!(1)添加一个Java测试项目(2)项目的名称为TestWebBank(3)最后为下面的状态3、在测试项目中添加对应用项目的引用为了能够在测试项目中对被测试项目中的各个类进行使用,需要在测试项目中添加对应用项目的引用。
4、在测试项目中添加JUnit框架有关的系统包文件(1)在Eclipse中直接添加JUnit的系统包文件(2)选择JUnit4.0系统版本库(3)注意:JUnit4.X版提供了许多方便单元测试的各个功能!5、在测试项目中添加测试用例(TestCase)类(测试类)什么是测试用例?编程要点?(1)添加测试用例类(2)类名称为TestConnectDBBean添加类名称为TestConnectDBBean,包名称为com.px1987.webbank.daotest,被测试的类选择为com.px1987.webbank.dao.imple.ConnectDBBean。
(3)点击“Next”下一步按钮,将出现下面的状态。
(4)编程该测试用例类中的各个测试方法(5)最终的程序代码package com.px1987.webbank.daotest;import static org.junit.Assert.*;import java.sql.Connection;import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test;import com.px1987.webbank.config.ClassNameConfig; import com.px1987.webbank.dao.inter.ConnectDBInterface; import com.px1987.webbank.exception.WebBankException; import com.px1987.webbank.factory.ConnectDBFactory; public class TestConnectDBBean {ConnectDBInterface connectDBBean=null;String connectDBBeanClassName=null;@Beforepublic void setUp() throws Exception {connectDBBeanClassName=ClassNameConfig.getProperty("connectDBBean.classNam e");connectDBBean=newConnectDBFactory().newConnectDBBean(connectDBBeanClassName);}@Afterpublic void tearDown() throws Exception {connectDBBean=null;}@Testpublic void testCloseDBCon() throws WebBankException {connectDBBean.closeDBCon();boolean isDBConnectionClose=connectDBBean.isDBConnectionClose();Assert.assertTrue(isDBConnectionClose); //断言}@Testpublic void testGetConnection() throws WebBankException{Connection returnDBCon=connectDBBean.getConnection();Assert.assertNotNull(returnDBCon); //断言}}注意:由于采用的是JUnit4.0系统库,现在改变为“Java标注”的方式实现---其中的@Before、@After和@Test等符号。
课程设计实训教学示例项目——《网上银行账户管理系统》——构建控制层中的各种Listener组件类

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建控制层中的各种监听器Listener组件类1.1.1构建控制层中的各种Listener组件类1、添加WebBankListener组件类(1)类名称为WebBankListener,包名称为com.px1987.webbank.listener,并且实现HttpSessionListener, HttpSessionAttributeListener和ServletContextListener接口(2)编程该WebBankListener组件类package com.px1987.webbank.listener;import java.util.ArrayList;import java.util.List;import java.util.Timer;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;import com.px1987.webbank.config.ClassNameConfig;import com.px1987.webbank.exception.WebBankException;import com.px1987.webbank.factory.XMLInformationConfigFactory; import erInfoVO;import com.px1987.webbank.util.OnLineCounter;import com.px1987.webbank.util.WebBankScheduleTask;import com.px1987.webbank.util.XMLInformationConfig;public class WebBankListener implements HttpSessionListener, HttpSessionAttributeListener, ServletContextListener { private String saxXMLPathAndFileName=null;//当在线人员数比较多时,开销比较大!private static List onLineUserList=new ArrayList();private ServletContext oneServletContext=null;public void sessionCreated(HttpSessionEvent arg0) {//某用户访问,将增加访问计数总数OnLineCounter.addOneUser();}public void sessionDestroyed(HttpSessionEvent arg0) {//某用户离线,将减少访问计数总数OnLineCounter.reduceOneUser();}public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent){ //识别该用户是否已经登录if(httpSessionBindingEvent.getName().equals("oneUserInfoVO")){UserInfoVO nowLoginUserInfo=(UserInfoVO)httpSessionBindingEvent.getValue();onLineUserList.add(nowLoginUserInfo);/** 一旦该用户登陆成功,将减少“游客”的计数*/Integer onLineGuest=(Integer)oneServletContext.getAttribute("onLineGuest");int onLineGuestDigit=onLineGuest.intValue();oneServletContext.setAttribute("onLineGuest",newInteger((onLineGuestDigit-1)>=0?(onLineGuestDigit-1):0));}}public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent){if(httpSessionBindingEvent.getName().equals("oneUserInfoVO")){UserInfoVO nowLoginUserInfo=(UserInfoVO)httpSessionBindingEvent.getValue();onLineUserList.remove(nowLoginUserInfo); //除掉该登陆用户的信息}}public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {}public static List getOnLineUserList(){return onLineUserList;}public void contextDestroyed(ServletContextEvent arg0) {scheduletimer.cancel();}private Timer scheduletimer = null;public void contextInitialized(ServletContextEvent arg0) {oneServletContext=arg0.getServletContext();XMLInformationConfig xmlSaxInfoBeanID=null;saxXMLPathAndFileName=oneServletContext.getInitParameter("saxXMLPathAndFileName");String saxXMLFileName=oneServletContext.getRealPath("\\")+saxXMLPathAndFileName;try {String xmlInformationConfigImpleClassName=ClassNameConfig.getProperty("xmlInformationConfigImple.className");xmlSaxInfoBeanID=new XMLInformationConfigFactory().newXMLInformationConfigBean(xmlInformationConfigImpleClassName);}catch(WebBankException e) {e.printStackTrace();}try {xmlSaxInfoBeanID.xmlInit(saxXMLFileName);}catch (WebBankException e) {e.printStackTrace();System.out.println("在WebBankListener类中的contextInitialized方法出现了WebBankException异常!异常为:"+e.getMessage());}/*下面的代码实现将所解析出的xmlSaxInfoBeanID保存到ServletContext中,这样可以在其它组件中获得它*/arg0.getServletContext().setAttribute("xmlSaxInfoBeanID",xmlSaxInfoBeanID);scheduletimer=new Timer(true);scheduletimer.schedule(new WebBankScheduleTask(), 0, 60*60*1000);}public String getSaxXMLPathAndFileName() {return saxXMLPathAndFileName;}public void setSaxXMLPathAndFileName(String saxXMLPathAndFileName) { this.saxXMLPathAndFileName = saxXMLPathAndFileName;}}(3)部署程该WebBankListener组件类<listener><listener-class>com.px1987.webbank.listener.WebBankListener</listener-class> </listener>1.1.2为应用系统提供Web方式的计划任务调度1、添加WebBankScheduleTask类(1)包名称为com.px1987.webbank.util,类名称为WebBankScheduleTask,并继承于java.util.TimerTask类(2)编程该类package com.px1987.webbank.util;import java.util.*;public class WebBankScheduleTask extends TimerTask {private static boolean isRunning = false;private static final int C_SCHEDULE_HOUR = 15;//改变此时间为当前的时间,将可以控制任务启动的时间public WebBankScheduleTask() {}@Overridepublic void run() {Calendar cal = Calendar.getInstance();if (!isRunning){if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {isRunning = true;if(someTask()){// task ok}else {//task Error}isRunning = false;}}else {System.out.println("上一次任务执行还未结束");}}public boolean someTask() {// **********//在下面添加自定义的详细任务,以下只是示例************* System.out.println("开始执行指定任务");int i = 0;while (i++ < 10){System.out.println("已完成任务的" + i + "/" + 10);}System.out.println("指定任务执行结束");//************************************************************************** return true;}public static boolean isRunning() {return isRunning;}public static void setRunning(boolean isRunning) {WebBankScheduleTask.isRunning = isRunning;}}2、在上面的WebBankListener组件中添加下面的产生定时器的功能代码private Timer scheduletimer = null;public void contextDestroyed(ServletContextEvent arg0) {scheduletimer.cancel();}public void contextInitialized(ServletContextEvent arg0) {scheduletimer=new Timer(true);scheduletimer.schedule(new WebBankScheduleTask(), 0, 60*60*1000);}3、测试该计划任务调度当Web应用在启动时,通过WebBankListener组将自动地加载前面的定时器组件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——前台客户信息的DAO组件及测试(第2/2部分)3、添加一个工厂类,用来统一创建UserManageDAOInterface接口的对象实例(1)UserManageDAOFactory类,包名称为com.px1987.webbank.factory ,并且从java.util.Observable类继承(2)编程该类package com.px1987.webbank.factory;import java.util.Observable;import com.px1987.webbank.config.ClassNameConfig;import erManageDAOInterface;import com.px1987.webbank.exception.WebBankException;public class UserManageDAOFactory extends Observable {public UserManageDAOInterface newUserManageDAOBean(String userManageDAOJDBCImpleClassName) throws WebBankException{UserManageDAOInterface oneUserManageDAOJDBCImple=null;Class oneClass=null;try {oneClass = Class.forName(userManageDAOJDBCImpleClassName);}catch (ClassNotFoundException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBankException("不能正确地获得"+userManageDAOJDBCImpleClassName+"类");}try {oneUserManageDAOJDBCImple =(UserManageDAOInterface)oneClass.newInstance();}catch (InstantiationException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBankException("不能正确地创建"+userManageDAOJDBCImpleClassName+"类的对象实例");}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBankException("不能正确地创建"+userManageDAOJDBCImpleClassName+"类的对象实例");}return oneUserManageDAOJDBCImple;}}4、修改classNameConfig.xml以添加对UserManageDAOJDBCImple类的定义<className><classNameID>userManageDAOJDBCImple.className</classNameID> <classNamePath>erManageDAOJDBCImple</classNamePath></className>1.1.1对用户信息相关的DAO组件进行单元测试1、添加测试用例(1)添加测试用例(2)包名称为 com.px1987.webbank.daotest,类名称为TestUserManageDAOJDBCImple,被测试的类选择为erManageDAOJDBCImple (3)点击“下一步”按钮,然后选择所需要的测试方法(4)编程该测试用例类package com.px1987.webbank.daotest;import java.util.Iterator;import java.util.List;import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test;import com.px1987.webbank.config.ClassNameConfig;import com.px1987.webbank.constant.WebBankAllConstants;import erManageDAOInterface;import com.px1987.webbank.dao.po.PageStatePO_Prototype;import erInfoPO;import com.px1987.webbank.exception.WebBankException;import com.px1987.webbank.factory.GenerialFactory;import com.px1987.webbank.factory.GenericTypeMethodsFactory;import com.px1987.webbank.util.MD5JavaBean;public class TestUserManageDAOJDBCImple {private UserManageDAOInterface oneUserManageDAOJDBCImple=null;String userManageDAOJDBCImpleClassName=null;@Beforepublic void setUp() throws Exception {userManageDAOJDBCImpleClassName=ClassNameConfig.getProperty("userManageDAO JDBCImple.className");// oneUserManageDAOJDBCImple=newUserManageDAOFactory().newUserManageDAOBean(userManageDAOJDBCImpleClassName); //利用常规的工厂类oneUserManageDAOJDBCImple = (UserManageDAOInterface)new GenerialFactory().newSomeOneInstance(userManageDAOJDBCImpleClassName); //利用通用的工厂类oneUserManageDAOJDBCImple = new GenericTypeMethodsFactory().newSomeOneInstance(userManageDAOJDBCImpleClassName ); //利用泛型方法实现的通用工厂类}@Afterpublic void tearDown() throws Exception {oneUserManageDAOJDBCImple=null;}@Testpublic void testSelectOnePageUserInfoByUserType() throws WebBankException { PageStatePO_Prototype onePageStatePO_Prototype=new PageStatePO_Prototype();onePageStatePO_Prototype.setThisPageNumber(1); //设置为第1页onePageStatePO_Prototype.setPageSize(WebBankAllConstants.webServiceManage_ pageSize);UserInfoPO oneUserInfoPOMethodParam=new UserInfoPO();oneUserInfoPOMethodParam.setUserType(1); //代表前台工作人员类型oneUserInfoPOMethodParam.setUserSex(1); //代表前男性oneUserInfoPOMethodParam.setRegisterTime("2008-06-12");oneUserInfoPOMethodParam.setUserComeFrom("北京海淀");List<UserInfoPO> allRegisterUserInfos =oneUserManageDAOJDBCImple.selectOnePageUserInfoByUserType(onePageStatePO_P rototype,oneUserInfoPOMethodParam);Assert.assertNotNull(allRegisterUserInfos);Iterator allItem=allRegisterUserInfos.iterator();while(allItem.hasNext()){UserInfoPO oneRegisterUserInfoPO=(UserInfoPO)allItem.next();Assert.assertNotNull(oneRegisterUserInfoPO);String registerUserName=oneRegisterUserInfoPO.getUserName();Assert.assertNotNull(registerUserName);}}@Testpublic void testSelectOneUserInfoData() throws WebBankException{// String userName="1' or '1'='1"; //应该根据数据库表中实际的数据值来决定// String userName="' or'x'='x' or 'x'='"; //应该根据数据库表中实际的数据值来决定String userName="admin"; //应该根据数据库表中实际的数据值来决定String userPassWord=new MD5JavaBean().getkeyBeanofStr("admin");UserInfoPO returnOneUserInfoPO=oneUserManageDAOJDBCImple.selectOneUserInfoData(userName,userPassWord);Assert.assertNotNull(returnOneUserInfoPO);}@Testpublic void testSelectOneUserInfo() throws WebBankException { String registerUserID="1"; //应该根据数据库表中的实际数据来决定UserInfoPO returnOneUserInfoPO=oneUserManageDAOJDBCImple.selectOneUserInfo(registerUserID);//由于所给定的ID是数据库表中存在的一个用户,因此能够返回该对象Assert.assertNotNull(returnOneUserInfoPO);}@Testpublic void testDoGetMaxIDUserInfo() throws WebBankException { UserInfoPO returnOneUserInfoPO=oneUserManageDAOJDBCImple.doGetMaxIDUserInfo();Assert.assertNotNull(returnOneUserInfoPO);}@Testpublic void testSelectAllBaseUserInfo() throws WebBankException{}@Testpublic void testSelectAllRegisterUserNameInfo() throws WebBankException{ String userName="adm";List<String> returnAllRegisterUserNameInfos=oneUserManageDAOJDBCImple.selectAllRegisterUserNameInfo(userName);Assert.assertNotNull(returnAllRegisterUserNameInfos);Iterator allItem=returnAllRegisterUserNameInfos.iterator();while(allItem.hasNext()){String oneUserName=(String)allItem.next();Assert.assertNotNull(oneUserName);}}@Testpublic void testSelectAllUserInfo() throws WebBankException{ List<UserInfoPO>allRegisterUserInfos=oneUserManageDAOJDBCImple.selectAllUserInfo();Assert.assertNotNull(allRegisterUserInfos);Iterator allItem=allRegisterUserInfos.iterator();while(allItem.hasNext()){UserInfoPO oneRegisterUserInfoPO=(UserInfoPO)allItem.next();Assert.assertNotNull(oneRegisterUserInfoPO);String registerUserName=oneRegisterUserInfoPO.getUserName();Assert.assertNotNull(registerUserName);}}@Testpublic void testSelectUserInfo() throws WebBankException{String userName="admin"; //应该根据数据库表中实际的数据值来决定String passWordAsk="How are you";String passWordAnswer="superman";UserInfoPO returnOneUserInfoPO=oneUserManageDAOJDBCImple.selectOneUserInfo(userName,passWordAsk, passWordAnswer);Assert.assertNotNull(returnOneUserInfoPO);}@Testpublic void testSelectUserInfoByName() throws WebBankException{ String userName="admin"; //应该根据数据库表中的实际数据来决定List<UserInfoPO> allReturnedUserInfos=oneUserManageDAOJDBCImple.selectUserInfoByName(userName);Assert.assertNotNull(allReturnedUserInfos);Iterator allItem=allReturnedUserInfos.iterator();while(allItem.hasNext()){UserInfoPO oneUserInfoPO=(UserInfoPO)allItem.next();Assert.assertNotNull(oneUserInfoPO);String registerUserName=oneUserInfoPO.getUserName();Assert.assertNotNull(registerUserName);}}@Testpublic void testSelectSomeBaseUserInfo() throws WebBankException{}@Testpublic void testSelectSomeUserInfo() throws WebBankException{ String HQLQuery="select * from userInfo";List<UserInfoPO> allReturnedUserInfos=oneUserManageDAOJDBCImple.selectSomeUserInfo(HQLQuery);Assert.assertNotNull(allReturnedUserInfos);Iterator allItem=allReturnedUserInfos.iterator();while(allItem.hasNext()){UserInfoPO oneUserInfoPO=(UserInfoPO)allItem.next();Assert.assertNotNull(oneUserInfoPO);String registerUserName=oneUserInfoPO.getUserName();Assert.assertNotNull(registerUserName);}}@Testpublic void testSelectTotalRegisterUserCounter() throws WebBankException{ int returnTotalRegisterUserCounter=oneUserManageDAOJDBCImple.selectTotalRegisterUserCounter();Assert.assertTrue(returnTotalRegisterUserCounter>0);}@Testpublic void testSelectUserSomePropertyInfo() throws WebBankException{ }/*@Testpublic void testBatchDeleteUserInfo() throws WebBankException{ ArrayList deletedUserIDs=new ArrayList();//应该根据数据库表中的实际数据来决定String userIDOne="-226769039";String userIDTwo="-212445867";String userIDThree="-212415571";deletedUserIDs.add(userIDOne);deletedUserIDs.add(userIDTwo);deletedUserIDs.add(userIDThree);boolean returnBoolean=oneUserManageDAOJDBCImple.batchDeleteUserInfo(deletedUserIDs);Assert.assertTrue(returnBoolean);}@Testpublic void testBatchDeleteUserInfoAndAccount() throws WebBankException{ ArrayList deletedUserIDs=new ArrayList();//应该根据数据库表中的实际数据来决定String userIDOne="-226769039";String userIDTwo="-212445867";String userIDThree="-212415571";deletedUserIDs.add(userIDOne);deletedUserIDs.add(userIDTwo);deletedUserIDs.add(userIDThree);boolean returnBoolean=oneUserManageDAOJDBCImple.batchDeleteUserInfoAndAccount(deletedUserIDs);Assert.assertTrue(returnBoolean);}//该方法应该只执行一次@Testpublic void testDeleteOneUserInfo() throws WebBankException{ //应该根据数据库表中的实际数据来决定String registerUserID="-226769039";boolean returnBoolean=oneUserManageDAOJDBCImple.deleteOneUserInfo(registerUserID);Assert.assertTrue(returnBoolean);}该方法应该只执行一次@Testpublic void testDeleteOneUserInfoAndAccount() throws WebBankException{ // //应该根据数据库表中的实际数据来决定String registerUserID="-226769039";boolean returnBoolean=oneUserManageDAOJDBCImple.deleteOneUserInfoAndAccount(registerUserID);Assert.assertTrue(returnBoolean);}@Testpublic void testInsertOneUserInfo() throws WebBankException{ UserInfoPO oneUserInfoPO=new UserInfoPO();Date nowDate=new Date();oneUserInfoPO.setId(new Integer((int)nowDate.getTime()).toString());//不需要设置该值,可以由Hibernate自动来实现添加oneUserInfoPO.setUserName("张三");oneUserInfoPO.setUserPassWord(new MD5JavaBean().getkeyBeanofStr("1234"));oneUserInfoPO.setUserType(1);oneUserInfoPO.setAliaoName("网上张飞");oneUserInfoPO.setPassWordAsk("Who Are You?");oneUserInfoPO.setUserImage("../webResource/PersonImage/Chang.gif");oneUserInfoPO.setRegisterTime(new Date().toLocaleString());oneUserInfoPO.setPassWordAnswer("zhang");oneUserInfoPO.setUserMail("trainict@");oneUserInfoPO.setUserSex(1);oneUserInfoPO.setUserBirthDay("2007-01-25");oneUserInfoPO.setUserComeFrom("北京");oneUserInfoPO.addOneContactMethod("userQQCode","QQ1234567890");oneUserInfoPO.addOneContactMethod("userICQCode","ICQ1234567890");oneUserInfoPO.addOneContactMethod("userMSNCode","MSN1234567890");oneUserInfoPO.setUserResume("我是网络飞人");oneUserInfoPO.setUserSign("12345678900");oneUserInfoPO.setEmailVisible(1);oneUserInfoPO.setAcceptAdvise(1);oneUserInfoPO.setConfirmDate("2007-01-25");oneUserInfoPO.setValidateFlag(true);boolean actualReturn=oneUserManageDAOJDBCImple.insertOneUserInfo(oneUserInfoPO);Assert.assertTrue(actualReturn);}@Testpublic void testUpdateOneUserInfo() throws WebBankException{ UserInfoPO newOneRegisterUserInfoPO=new UserInfoPO();//应该根据数据库表中的实际的数据值来决定String registerUserId="3";//设置需要修改的某个用户的ID以定位其记录newOneRegisterUserInfoPO.setId(registerUserId);newOneRegisterUserInfoPO.setUserName("张三");//本测试的数据只是对原来的数据改变了此值newOneRegisterUserInfoPO.setUserPassWord(newMD5JavaBean().getkeyBeanofStr("12345678"));newOneRegisterUserInfoPO.setUserType(1);newOneRegisterUserInfoPO.setAliaoName("网上张飞");newOneRegisterUserInfoPO.setPassWordAsk("Who Are You?");newOneRegisterUserInfoPO.setUserImage("../webResource/PersonImage/Chang.gi f");newOneRegisterUserInfoPO.setRegisterTime(new Date().toLocaleString());newOneRegisterUserInfoPO.setPassWordAnswer("zhang");newOneRegisterUserInfoPO.setUserMail("trainict@");newOneRegisterUserInfoPO.setUserSex(1);newOneRegisterUserInfoPO.setUserBirthDay("2007-01-25");newOneRegisterUserInfoPO.setUserComeFrom("北京");newOneRegisterUserInfoPO.setUserResume("我是网络飞人");newOneRegisterUserInfoPO.setUserSign("12345678900");newOneRegisterUserInfoPO.setEmailVisible(1);newOneRegisterUserInfoPO.setAcceptAdvise(1);Map newContactMethod = new HashMap(); //可以在此改变用户的联系方式newContactMethod.put("userQQCode","QQ1234567890");newContactMethod.put("userICQCode","ICQ1234567890");newContactMethod.put("userMSNCode","MSN1234567890");newOneRegisterUserInfoPO.setContactMethod(newContactMethod);boolean actualReturn=oneUserManageDAOJDBCImple.updateOneUserInfo(newOneRegisterUserInfoPO);Assert.assertTrue(actualReturn);//本方法执行完成后可以查看数据库表中的数据状态是否发生了变化}@Testpublic void testUpdateOneUserPassWord() throws WebBankException { //应该根据数据库表中的实际的数据值来决定String newPassWord=new MD5JavaBean().getkeyBeanofStr("1234");String registerUserId="3";boolean actualReturn=oneUserManageDAOJDBCImple.updateOneUserPassWord(newPassWord,registerUserId);Assert.assertTrue(actualReturn);}*/}2、执行该测试用例(1)在数据库表中准备好测试用的数据(在MS SQLServer2000中)或者MySQL数据库中但要注意MySql服务器和数据库的字符集应该设置为gbk,否则将会出现乱码。