构建BBS论坛系统项目用户信息管理模块业务层组件的实现示例
J2EE Web组件课程设计——BBS论坛系统项目完整实现实例(业务层BBSInfo相关的功能类)
目录
1.1 BBS 论坛系统项目完整实现实例(业务层 BBSInfo 相关的功能类) ....................2 1.1.1 添加各个 BBS 信息相关的实体 ............................................................................2 1.1.2 在项目中添加相关的接口及实现类 ....................................................................20 1.1.3 编程 BBSInfoManageImple 实现类相关的功能实现代码 .................................23
private String sendInfoTime;
private String content;
杨教授工作室,版权所有3 ,盗版必究, 3/36 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
private int mailto; private String abstractText; private String lastUpdateTime; private int bbsIconID; private int bbsTypeID; private int bbsTitleID; private int userID; private int bbsID; public BBSInfoVO() { } public String getAbstractText() {
杨教授工作室,版权所有1 ,盗版必究, 1/36 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
BBS论坛系统项目服务层实现
7、业务层中的各个业务类的接口 (1)UserInfoManageInterface (2)BBSInfoManageInterface
(3)业务接口中的方法定义要点 输入输出参数都采用VO类 方法名一般为doXXXX 每个方法都应该定义有异常抛出,将DAO的异常进行“ 上传”
8、业务接口的各个实现类 如果项目中不应用Spring IoC,可以增加对应的工厂类
12 、 、合理地分离表现、业务和数据访问服务的职责 J2EE平台中的持久层实现技术 ( ( 11 ) )控制层中的 JDBC:“原子”类型的 Action程序只负责接受请求,调用具体 API ( 的 2Service )J2EE 组件,进行处理后转发 EJB 中的EntityBean(实体Bean) 重量级的O/R Mapping技术 ( ( 32 ) ) Hibernate DAO程序类只需要封装最基本的增删改查等服务 框架 轻量级的 如果在DAO O/R和 Mapping Action程序中存在过多的业务逻辑的处 技术,但以类关系配置为重点 ( 理,业务的改变当然会造成动一处而牵全身的后果。 4)Apache iBATIS 轻量级的O/R Mapping技术,但以SQL语句配置为重点 3 、在业务层设计常存在的一个问题 ——业务逻辑层不是数 ( 5)Sun JDO(Java Data Object) 据访问服务的“转发器” JDBC只是面向关系数据库(RDBMS)JDO更通用,提供 到任何数据底层的存储功能,如关系数据库、文件、 XML ( 1)为什么要分为Controllor、Service和DAO 等,使得应用可移植性更强。 适应三层中所面对的各自的需求变化,为维护、扩 展方便
4、明确系统业务服务层中一般需要哪些组件类 (1)业务实体类(VO类) (2)业务功能接口 (3)业务功能接口的实现类 (4)Util工具类 5、实现项目中的Util工具类 (1)验证码功能 (2)对文章信息中的特殊字符进行转换处理
BBS论坛系统项目前台用户管理模块中的DAO组件的实现示例
1.1BBS论坛系统项目前台用户管理模块中的DAO组件的实现示例1.1.1前台用户管理模块中的DAO组件的实现过程1、在项目中添加一个HibernateUtil类(1)类名称为HibernateUtil,包名称为com.px1987.webbbs.hibernatedao(2)编程该类2、针对UserManageDAOInterface的DAO接口提供一个实现类(1)类名称为UserManageDAOHibernateImple,包名称为com.px1987.webbbs.hibernatedao、并且继承Observable类(2)编程该实现类3、关于事务的应用问题在开发以数据库为平台的系统中,单用户操作的系统越来越少了,基本上都是多用户操作,并发访问数据库。
在这种情况下,要想保证业务的正常进行,保证数据库的一致性是关键。
比如银行的转账系统,处理不当的话,会造成一个用户的资金减少了,另一个用户的资金却没有增加。
保证数据库的一致性需要对多用户并发访问数据库进行合理的调度,调度的基本单位是事务。
我们知道,事务是用户对数据库的操作序列,事务具有原子性,一致性,隔离性和持续性。
我们可以认为在并发访问的环境下,在同一时刻有多个事务在运行。
调度的基本原则是一个事务应该感觉不到其他事务的存在,它按照正常的业务逻辑进行处理。
并发操作造成的不一致性表现主要有以下3种,我们在编程的时候需要特别注意:(1)丢失修改2个事务同时读入同一个数据并进行修改,如果不加限制,就会出现一个事务的提交破坏另一事务的提交的情况。
比如2个终端同时进行机票的销售工作,每个事务同时都读取到目前剩余的票数,然后各自进行减去一,这样由于提交有先后,造成2个终端销售出去2张机票,结果数据库中只是减去了一张。
(2)不可重复读一个事务读入一批数据,在再次读同样的一批数据之前,有别的事务对这些数据进行了修改,结果第一个事务再次读入它们的时候,出现了和第一次读的时候不一致的情况。
基于Java的BBS论坛系统的设计与实现
基于Java的BBS论坛系统的设计与实现一、概述随着信息技术的飞速发展和互联网的广泛普及,网络交流已成为人们获取信息、分享经验和知识、进行互动沟通的重要渠道。
论坛(Bulletin Board System,简称BBS)作为一种古老而有效的网络交流方式,经过多年的发展和演变,已经成为互联网的重要组成部分。
基于Java的BBS论坛系统正是为了满足现代网络交流需求,提供一个稳定、高效、可扩展的在线交流平台。
Java作为一种成熟、稳定、跨平台的编程语言,具有丰富的生态系统和广泛的应用场景。
使用Java开发BBS论坛系统,不仅能够确保系统的可移植性和可扩展性,还能够利用Java社区提供的丰富资源和支持,快速实现论坛系统的核心功能,如用户管理、帖子发布、回复评论、主题分类、权限控制等。
基于Java的BBS论坛系统的设计与实现,将重点关注系统的需求分析、架构设计、功能实现、性能优化等方面。
在系统需求分析阶段,将深入剖析用户需求,明确系统的功能和特点在架构设计阶段,将合理规划系统的整体结构,确保系统的稳定性和可扩展性在功能实现阶段,将使用Java语言和相关技术实现论坛系统的各项功能在性能优化阶段,将通过各种技术手段提升系统的性能和用户体验。
本文旨在详细介绍基于Java的BBS论坛系统的设计与实现过程,包括系统的需求分析、架构设计、功能实现、性能优化等方面,以期为相关领域的开发人员提供参考和借鉴。
同时,本文还将探讨未来论坛系统的发展趋势和挑战,展望未来的发展方向。
1. 背景介绍:简述BBS论坛系统的起源、发展和现状,以及其在互联网社区中的作用。
随着互联网的飞速发展和普及,网络社区成为了人们获取信息、交流意见、分享经验的重要场所。
Bulletin Board System(简称BBS)论坛系统以其独特的交互性和开放性,成为了网络社区中最为活跃和重要的组成部分之一。
BBS论坛系统起源于20世纪80年代的电子布告栏系统(Electronic Bulletin Board),主要用于发布和讨论计算机相关的信息。
J2EE课程设计实训项目《BBS论坛系统》——业务层用户信息管理组件功能实现及对应的单元测试用例(第1部分)
基于J2EE Struts框架的课程设计实训项目——《BBS论坛系统》——业务层中的用户信息管理组件的功能实现及对应的单元测试用例(第1/2部分)1.1.1构建用户信息管理业务层相关的组件1、添加UserInfoManageInterface接口(1)在项目中添加UserInfoManageInterface接口(2)设计该UserInfoManageInterface接口package com.px1987.webbbs.model;import java.util.ArrayList;import java.util.Map;import com.px1987.webbbs.dao.AdminUserInfoPO;import erInfoPO;import com.px1987.webbbs.exception.WebBBSException;public interface UserInfoManageInterface{public boolean doBatchDeleteUserInfo(ArrayList deletedUserIDs) throws WebBBSException;public boolean doUserLogin(UserInfoVO oneUserInfoVO) throws WebBBSException;public boolean doUserRegister(UserInfoVO oneUserInfoVO) throws WebBBSException;public boolean doUpdateOneUserInfo(UserInfoVO oneUserInfoVO) throws WebBBSException;public boolean doUpdateOneRegisterUserPassWord(UserInfoVO oneUserInfoVO,String newPassWord) throws WebBBSException;public boolean doUpdateOneAdminUserPassWord(UserInfoVO oneUserInfoVO,String newPassWord) throws WebBBSException;public boolean doCheckUserNameExist(String userName,Integer type_User_Admin) throws WebBBSException;public String doGetOneRegisterUserPassWord(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException;public String doGetOneAdminUserPassWord(UserInfoVO oneAdminUserInfoVO) throws WebBBSException;public UserInfoVO doGetOneRegisterUserInfo(String registerUserID) throws WebBBSException;public UserInfoVO doGetMaxIDUserInfo() throws WebBBSException;public UserInfoVO doGetOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException;public UserInfoVO doGetOneRegisterUserInfoByName(String userNme) throws WebBBSException;public UserInfoVO doGetOneAdminUserInfo(String adminUserID) throwsWebBBSException;public UserInfoVO doGetOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException;public UserInfoVO doGetOneUserInfo(String userName,String userPassWord, Integer type_User_Admin) throws WebBBSException;public ArrayList<String> doGetAllUserNameInfo(String userName,Integer type_User_Admin ) throws WebBBSException;public int doGetTotalRegisterUserCounter() throws WebBBSException;public boolean doDeleteOneRegisterUserInfo(String registerUserID) throws WebBBSException;public boolean doDeleteOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException;public boolean doDeleteOneAdminUserInfo(String adminUserID) throws WebBBSException;public boolean doDeleteOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException;public ArrayList<UserInfoVO> doGetAllRegisterUserInfo() throws WebBBSException;public ArrayList<UserInfoVO> doGetSomeRegisterUserInfo(Map registerUserInfos,int userType) throws WebBBSException;public ArrayList<UserInfoVO> doGetOnePageRegisterUserInfo(PageStateVO_PrototypeonePageStateVO_Prototype,int userType,Map registerUserInfos) throws WebBBSException;public ArrayList<UserInfoVO> doGetOnePageAllUserInfo(PageStateVO_Prototype onePageStateVO_Prototype) throws WebBBSException;public ArrayList<UserInfoVO> doGetAllAdminUserInfo() throws WebBBSException;public ArrayList<UserInfoVO> doGetSomeAdminUserInfo(Map adminUserInfos) throws WebBBSException;}2、为该接口提供实现类UserInfoManageImple继承于java.util.Observable类,并编程该实现类package com.px1987.webbbs.model;import ng.reflect.InvocationTargetException; import java.util.ArrayList;import java.util.Iterator;import java.util.Map;import java.util.Observable;import mons.beanutils.BeanUtils; import com.px1987.webbbs.config.ClassNameConfig;import com.px1987.webbbs.constant.WebBankAllConstants;import com.px1987.webbbs.dao.AdminUserInfoPO;import com.px1987.webbbs.dao.AdminUserManageDAOInterface;import erInfoPO;import erManageDAOInterface;import com.px1987.webbbs.exception.WebBBSException;import com.px1987.webbbs.util.LogInfoFactory;public class UserInfoManageImple extends Observable implements UserInfoManageInterface{private UserManageDAOInterface userInfoManageDAOImpleBean = null;private AdminUserManageDAOInterface adminUserInfoManageDAOImpleBean= null;public void setAdminUserInfoManageDAOImpleBean(AdminUserManageDAOInterface adminUserInfoManageDAOImpleBean) { this.adminUserInfoManageDAOImpleBean = adminUserInfoManageDAOImpleBean;}public void setUserInfoManageDAOImpleBean(UserManageDAOInterface userInfoManageDAOImpleBean) {erInfoManageDAOImpleBean = userInfoManageDAOImpleBean;}public UserInfoManageImple(){//本构造方法在应用Spring IOC获得目标DAO组件对象时应用}/*String adminManageDAOJDBCImpleClassName=null;String userManageDAOJDBCImpleClassName=null;public UserInfoManageImple() throws WebBBSException {//本构造方法在应用可配置化的工厂模式时获得目标DAO组件对象时应用userManageDAOJDBCImpleClassName=ClassNameConfig.getProperty("userManageDAOJDBCImple.className");userInfoManageDAOImpleBean=UserManageDAOFactory.newUserManageDAOBean(userManageDAOJDBCImpleClassName);adminManageDAOJDBCImpleClassName=ClassNameConfig.getProperty("adminManageDAOJDBCImple.className");adminUserInfoManageDAOImpleBean=AdminUserManageDAOFactory.newAdminManageDAOBean(adminManageDAOJDBCImpleClassName);}*/public boolean doBatchDeleteUserInfo(ArrayList deletedUserIDs) throws WebBBSException{return false;}public boolean doCheckUserNameExist(String userName, Integer type_User_Admin) throws WebBBSException {boolean OKOrNot=false;switch(type_User_Admin.intValue()){case 1:UserInfoPO oneUserInfoPO=userInfoManageDAOImpleBean.selectOneUserInfoByName(userName);if(oneUserInfoPO==null){OKOrNot=false;}else{OKOrNot=true;}break;case 2:AdminUserInfoPO oneAdminUserInfoPO=adminUserInfoManageDAOImpleBean.selectOneAdminUserInfoByName(userName);if(oneAdminUserInfoPO==null){OKOrNot=false;}else{OKOrNot=true;}break;default:OKOrNot=false;}return OKOrNot;}public boolean doDeleteOneAdminUserInfo(String adminUserID) throws WebBBSException {boolean OKOrNot=false;OKOrNot=adminUserInfoManageDAOImpleBean.deleteOneAdminUserInfo(adminUserID);return OKOrNot;}public boolean doDeleteOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException {String adminUserID=oneAdminUserInfoVO.getId();return doDeleteOneAdminUserInfo(adminUserID);}public boolean doDeleteOneRegisterUserInfo(String registerUserID)throws WebBBSException {boolean OKOrNot=false;OKOrNot=userInfoManageDAOImpleBean.deleteOneUserInfo(registerUserID);return OKOrNot;}public boolean doDeleteOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException {String registerUserID=oneRegisterUserInfoVO.getId();return doDeleteOneRegisterUserInfo(registerUserID);}public ArrayList<UserInfoVO> doGetAllAdminUserInfo() throws WebBBSException{ ArrayList allAdminUserInfoPO=adminUserInfoManageDAOImpleBean.selectAllAdminUserInfo();ArrayList allAdminUserInfoVO=new ArrayList();Iterator allPOItem=allAdminUserInfoPO.iterator();while(allPOItem.hasNext()){AdminUserInfoPO oneAdminUserInfoPO=(AdminUserInfoPO)allPOItem.next();UserInfoVO oneUserInfoVO=new UserInfoVO();try {BeanUtils.copyProperties(oneUserInfoVO, oneAdminUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetAllAdminUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetAllAdminUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}}return allAdminUserInfoVO;}public ArrayList<UserInfoVO> doGetAllRegisterUserInfo() throws WebBBSException{ArrayList allRegisterUserInfoPO=userInfoManageDAOImpleBean.selectAllUserInfo();ArrayList allRegisterUserInfoVO=new ArrayList();Iterator allPOItem=allRegisterUserInfoPO.iterator();while(allPOItem.hasNext()){UserInfoPO oneUserInfoPO=(UserInfoPO)allPOItem.next();UserInfoVO oneUserInfoVO=new UserInfoVO();try {BeanUtils.copyProperties(oneUserInfoVO, oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetAllRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetAllRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}allRegisterUserInfoVO.add(oneUserInfoVO);}return allRegisterUserInfoVO;}public ArrayList<String> doGetAllUserNameInfo(String userName,Integer type_User_Admin) throws WebBBSException {boolean OKOrNot=false;ArrayList allUserNameArrayList=null;// userInfoManageDAOImpleBean=new UserManageDAOJDBCImple();switch(type_User_Admin.intValue()){case 1:allUserNameArrayList=userInfoManageDAOImpleBean.selectAllRegisterUserNameInfo(userName);break;case 2:allUserNameArrayList=adminUserInfoManageDAOImpleBean.selectAllAdminUserNameInfo(userName);break;default:allUserNameArrayList=null;}return allUserNameArrayList;}public UserInfoVO doGetOneAdminUserInfo(String adminUserID)throws WebBBSException{UserInfoVO oneAdminUserInfoVO=new UserInfoVO();AdminUserInfoPO oneAdminUserInfoPO=adminUserInfoManageDAOImpleBean.selectOneAdminUserInfo(adminUserID);try { //利用Bean拷贝BeanUtils.copyProperties(oneAdminUserInfoVO, oneAdminUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneAdminUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneAdminUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}return oneAdminUserInfoVO;}public UserInfoVO doGetOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException{String adminUserID=oneAdminUserInfoVO.getId();return doGetOneAdminUserInfo(adminUserID);}public String doGetOneAdminUserPassWord(UserInfoVO oneAdminUserInfoVO) throws WebBBSException {String adminUserName=oneAdminUserInfoVO.getUserName();AdminUserInfoPO oneAdminUserInfoPO=adminUserInfoManageDAOImpleBean.selectOneAdminUserInfoByName(adminUserName);return oneAdminUserInfoPO.getUserPassWord();}public UserInfoVO doGetOneRegisterUserInfoByName(String userNme) throws WebBBSException{UserInfoVO oneUserInfoVO=null;UserInfoPO oneUserInfoPO=null;// userInfoManageDAOImpleBean=new UserManageDAOJDBCImple();oneUserInfoVO=new UserInfoVO();oneUserInfoPO=userInfoManageDAOImpleBean.selectOneUserInfoByName(userNme);oneUserInfoVO.setUserName(oneUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneUserInfoPO.getRegisterTime());oneUserInfoVO.setUserID(oneUserInfoPO.getId());oneUserInfoVO.setUserResume(oneUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(1));oneUserInfoVO.setUserSex(oneUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneUserInfoPO.getUserComeFrom());oneUserInfoVO.setContactMethod(oneUserInfoPO.getContactMethod());oneUserInfoVO.setUserSign(oneUserInfoPO.getUserSign());oneUserInfoVO.setEmailVisible(oneUserInfoPO.getEmailVisible());oneUserInfoVO.setAcceptAdvise(oneUserInfoPO.getAcceptAdvise());try { //利用Bean拷贝类实现简单地拷贝BeanUtils.copyProperties(oneUserInfoVO,oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneRegisterUserInfoByName方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneRegisterUserInfoByName方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}return oneUserInfoVO;}public UserInfoVO doGetOneRegisterUserInfo(String registerUserID) throws WebBBSException{UserInfoVO oneUserInfoVO=null;UserInfoPO oneUserInfoPO=null;// userInfoManageDAOImpleBean=new UserManageDAOJDBCImple();oneUserInfoVO=new UserInfoVO();oneUserInfoPO=userInfoManageDAOImpleBean.selectOneUserInfo(registerUserID);oneUserInfoVO.setUserName(oneUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneUserInfoPO.getRegisterTime());oneUserInfoVO.setId(oneUserInfoPO.getId());oneUserInfoVO.setUserResume(oneUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(1));oneUserInfoVO.setUserSex(oneUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneUserInfoPO.getUserComeFrom());oneUserInfoVO.setContactMethod(oneUserInfoPO.getContactMethod());oneUserInfoVO.setUserSign(oneUserInfoPO.getUserSign());oneUserInfoVO.setEmailVisible(oneUserInfoPO.getEmailVisible());oneUserInfoVO.setAcceptAdvise(oneUserInfoPO.getAcceptAdvise());try { //利用Bean拷贝类实现简单地拷贝BeanUtils.copyProperties(oneUserInfoVO,oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}return oneUserInfoVO;}public UserInfoVO doGetOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO)throws WebBBSException {String userNme=oneRegisterUserInfoVO.getUserName();return doGetOneRegisterUserInfoByName(userNme);}public String doGetOneRegisterUserPassWord(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException {String userNme=oneRegisterUserInfoVO.getUserName();UserInfoVO oneUserInfoVO=doGetOneRegisterUserInfoByName(userNme);return oneUserInfoVO.getUserPassWord();}public UserInfoVO doGetOneUserInfo(String userName, String userPassWord, Integer type_User_Admin)throws WebBBSException {UserInfoVO oneUserInfoVO=null;// userInfoManageDAOImpleBean=new UserManageDAOJDBCImple();oneUserInfoVO=new UserInfoVO();switch(type_User_Admin.intValue()){case 1:UserInfoPO oneUserInfoPO=userInfoManageDAOImpleBean.selectOneUserInfoData(userName, userPassWord);oneUserInfoVO.setUserName(oneUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneUserInfoPO.getRegisterTime());oneUserInfoVO.setId(oneUserInfoPO.getId());oneUserInfoVO.setUserResume(oneUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(1));oneUserInfoVO.setUserSex(oneUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneUserInfoPO.getUserComeFrom());oneUserInfoVO.setContactMethod(oneUserInfoPO.getContactMethod());oneUserInfoVO.setUserSign(oneUserInfoPO.getUserSign());oneUserInfoVO.setEmailVisible(oneUserInfoPO.getEmailVisible());oneUserInfoVO.setAcceptAdvise(oneUserInfoPO.getAcceptAdvise());try { //利用Bean拷贝类实现简单地拷贝BeanUtils.copyProperties(oneUserInfoVO,oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}break;case 2:AdminUserInfoPO oneAdminUserInfoPO=adminUserInfoManageDAOImpleBean.selectOneAdminUserInfoData(userName, userPassWord);oneUserInfoVO.setUserName(oneAdminUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneAdminUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneAdminUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneAdminUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneAdminUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneAdminUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneAdminUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneAdminUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneAdminUserInfoPO.getRegisterTime());oneUserInfoVO.setId(oneAdminUserInfoPO.getId());oneUserInfoVO.setUserResume(oneAdminUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(2));oneUserInfoVO.setUserSex(oneAdminUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneAdminUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneAdminUserInfoPO.getUserComeFrom());oneUserInfoVO.setWorkUnit(oneAdminUserInfoPO.getWorkUnit());oneUserInfoVO.setStudyHistory(oneAdminUserInfoPO.getStudyHistory());oneUserInfoVO.setStudySchool(oneAdminUserInfoPO.getStudySchool());oneUserInfoVO.setIdCardNo(oneAdminUserInfoPO.getIdCardNo());try { //利用Bean拷贝类实现简单地拷贝BeanUtils.copyProperties(oneUserInfoVO,oneAdminUserInfoPO);}catch (IllegalAccessException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOneUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}break;}return oneUserInfoVO;}public ArrayList<UserInfoVO> doGetSomeAdminUserInfo(Map adminUserInfos) throws WebBBSException{ArrayList someAdminUserInfoPOs=null;someAdminUserInfoPOs=adminUserInfoManageDAOImpleBean.selectSomeAdminUserIn fo(adminUserInfos);ArrayList allAdminUserInfoVO=new ArrayList();Iterator allPOItem=someAdminUserInfoPOs.iterator();while(allPOItem.hasNext()){AdminUserInfoPO oneAdminUserInfoPO=(AdminUserInfoPO)allPOItem.next();UserInfoVO oneUserInfoVO=new UserInfoVO();try {BeanUtils.copyProperties(oneUserInfoVO, oneAdminUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetSomeAdminUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetSomeAdminUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}allAdminUserInfoVO.add(oneUserInfoVO);}return allAdminUserInfoVO;}public ArrayList<UserInfoVO> doGetOnePageAllUserInfo(PageStateVO_Prototype onePageStateVO_Prototype) throws WebBBSException{ArrayList onePageAllUserInfoPOs=null;onePageAllUserInfoPOs=userInfoManageDAOImpleBean.selectOnePageAllUserInfo(onePageStateVO_Prototype);ArrayList onePageAllUserInfoVO=new ArrayList();Iterator allPOItem=onePageAllUserInfoPOs.iterator();while(allPOItem.hasNext()){UserInfoPO oneUserInfoPO=(UserInfoPO)allPOItem.next();UserInfoVO oneUserInfoVO=new UserInfoVO();try {BeanUtils.copyProperties(oneUserInfoVO, oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOnePageAllUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetOnePageAllUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}onePageAllUserInfoVO.add(oneUserInfoVO);}return onePageAllUserInfoVO;}public ArrayList<UserInfoVO> doGetOnePageRegisterUserInfo(PageStateVO_Prototype onePageStateVO_Prototype,int userType,Map registerUserInfos) throws WebBBSException{ ArrayList onePageRegisterUserInfoPOs=null;switch(userType){case erType_PlainRegisterUser:onePageRegisterUserInfoPOs=userInfoManageDAOImpleBean.selectOnePageRegisterUserInfo(onePageStateVO_Prototype,registerUserInfos);break;case erType_VIPRegisterUser:onePageRegisterUserInfoPOs=userInfoManageDAOImpleBean.selectOnePageVIPUserInfo(onePageStateVO_Prototype,registerUserInfos);break;}ArrayList onePageRegisterUserInfoVO=new ArrayList();Iterator allPOItem=onePageRegisterUserInfoPOs.iterator();while(allPOItem.hasNext()){UserInfoPO oneUserInfoPO=(UserInfoPO)allPOItem.next();UserInfoVO oneUserInfoVO=new UserInfoVO();try {BeanUtils.copyProperties(oneUserInfoVO, oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetSomeRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetSomeRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}onePageRegisterUserInfoVO.add(oneUserInfoVO);}return onePageRegisterUserInfoVO;}public ArrayList<UserInfoVO> doGetSomeRegisterUserInfo(Map registerUserInfos,int userType)throws WebBBSException{ArrayList someRegisterUserInfoPOs=null;switch(userType){case erType_PlainRegisterUser:someRegisterUserInfoPOs=userInfoManageDAOImpleBean.selectSomeRegisterUserInfo(registerUserInfos);break;case erType_VIPRegisterUser:someRegisterUserInfoPOs=userInfoManageDAOImpleBean.selectSomeVIPUserInfo(registerUserInfos);break;}ArrayList allRegisterUserInfoVO=new ArrayList();Iterator allPOItem=someRegisterUserInfoPOs.iterator();while(allPOItem.hasNext()){UserInfoPO oneUserInfoPO=(UserInfoPO)allPOItem.next();UserInfoVO oneUserInfoVO=new UserInfoVO();try {BeanUtils.copyProperties(oneUserInfoVO, oneUserInfoPO);}catch (IllegalAccessException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetSomeRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了IllegalAccessException异常");}catch (InvocationTargetException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e);throw new WebBBSException("在UserInfoManageImple类的doGetSomeRegisterUserInfo方法中利用BeanUtils类进行对象拷贝时出现了InvocationTargetException异常");}allRegisterUserInfoVO.add(oneUserInfoVO);}return allRegisterUserInfoVO;}public boolean doUpdateOneAdminUserPassWord(UserInfoVO oneUserInfoVO,String newPassWord) throws WebBBSException {String adminUserID=oneUserInfoVO.getId();return adminUserInfoManageDAOImpleBean.updateOneAdminUserPassWord(adminUserID, newPassWord);}public boolean doUpdateOneRegisterUserPassWord(UserInfoVO oneUserInfoVO,。
UML实例BBS管理系统
BBS管理系统一、需求分析1.1系统开发旳目旳:进入二十一世纪,在互联网高速发展旳今天。
已经成为人们迅速获取、公布和传递信息旳一种重要传播方式。
在人们政治、经济、生活等各个方面都发挥着重要旳作用。
这次我所设计旳UML建模课程正是互联网与社会生活之间旳紧密关系旳体现。
目前人们已经离不开了网络,网络已经成为人与人之间交流旳一种形式,它可以把事情旳复杂化转为简朴化。
目前旳计算机技术迅速向着网络化旳、集成化方向发展。
老式旳单机版应用软件正在逐渐退出舞台,取而代之旳是支持网络、支持多种数据信息(多媒体)旳新一代网络版应用软件,而目前网络版软件中似乎存在着两种不一样旳趋势,一种是称为客户端——服务器旳C/S构造应用系统,此类软件具有构造严谨,运行效率高,服务器端压力小,安全性好等长处,被广泛运用于局域网中。
另一种,就是称为浏览器——服务器旳B/S构造应用系统,它旳特点是在客户端直接采用了功能强大旳浏览器软件作为界面,其长处在于软件开发效率高,客户端不受操作平台旳限制、也不受地区旳限制,网络传播量少,即合用于局域网,更合用于英特网,并且投资小、见效快,顾客可以不必进行服务器方面旳投资,而是去租用,甚至是免费使用ISP旳服务器资源,因而受到越来越多中小型单位旳青睐。
BBS论坛系统已经是互联网站一种极为常见旳互动交流服务。
在BBS论坛中可以向网友提供多种各样旳分类专题和讨论区服务,已经注册旳顾客可以在此刊登自己旳某些观感、交流某些技术、经验乃至人生旳感悟与忧欢,亦可以做为网友们之间旳交流渠道。
在网站中亦可在此对网友们提出旳问题做出评论或者发刊登自己新旳帖子。
通过BBS论坛旳方式,可以增强个人与个人,团体与团体,个人与团体之间旳紧密交流联络,在英特网上实现信息旳传递,提高办事效率。
因此论坛建设在英特网应用上旳地位显而易见,它已成为现代人沟通和获取信息旳重要构成部分,从而倍受人们旳重视。
该系统以英特网为平台,前台可使任何人注册、登陆在论坛上进行发贴及讨论,版主或者前台管理者也可以进行一部分管理。
J2EE课程设计实训项目《BBS论坛系统》——针对项目中系统管理员信息的数据访问组件及单元测试(第2部分)
基于J2EE Struts框架的课程设计实训项目——《BBS论坛系统》——针对系统后台管理员信息的数据访问组件及对应的单元测试(第2/2部分)1.1.1对AdminUserManageDAOJDBCImple类进行单元测试1、添加测试用例(1)添加测试用例(2)设置类名称为TestAdminUserManageDAOJDBCImple、包名称为com.px1987.webbbs.daotest,并对com.px1987.webbbs.dao.AdminUserManageDAOJDBCImple类进行测试(3)选择各个被测试的方法2、编程该测试用例package com.px1987.webbbs.daotest;import junit.framework.TestCase;import com.px1987.webbbs.config.ClassNameConfig;import com.px1987.webbbs.dao.*;import com.px1987.webbbs.exception.*;import com.px1987.webbbs.util.AdminUserManageDAOFactory; import java.util.*;public class TestAdminUserManageDAOJDBCImple extends TestCase { private AdminUserManageDAOInterface adminUserManageDAOJDBCImple = null;String adminManageDAOJDBCImpleClassName=null;protected void setUp() throws Exception{super.setUp();adminManageDAOJDBCImpleClassName=ClassNameConfig.getProperty("adminManageDAOJDBCImple.className");adminUserManageDAOJDBCImple=new AdminUserManageDAOFactory().newAdminManageDAOBean(adminManageDAOJDBCImpleClassName);}protected void tearDown() throws Exception{adminUserManageDAOJDBCImple = null;super.tearDown();}public void testSelectOneAdminUserInfoData() throws WebBBSException{ String userName="admin";String userPassWord="admin";AdminUserInfoPO returnOneAdminUserInfoPO=adminUserManageDAOJDBCImple.selectOneAdminUserInfoData(userName,userPassWord);//由于所给定的ID是数据库表中存在的一个用户,因此能够返回该对象this.assertNotNull(returnOneAdminUserInfoPO);}public void testSelectAllAdminUserInfo() throws WebBBSException{ ArrayList allAdminUserInfos=adminUserManageDAOJDBCImple.selectAllAdminUserInfo();this.assertNotNull(allAdminUserInfos);Iterator allItem=allAdminUserInfos.iterator();while(allItem.hasNext()){AdminUserInfoPO oneAdminUserInfoPO=(AdminUserInfoPO)allItem.next();this.assertNotNull(oneAdminUserInfoPO);String adminUserName=oneAdminUserInfoPO.getUserName();this.assertNotNull(adminUserName);}}public void testSelectAllAdminUserNameInfo() throws WebBBSException{ String userName="adm";ArrayList returnAllAdminUserNameInfos=adminUserManageDAOJDBCImple.selectAllAdminUserNameInfo(userName);this.assertNotNull(returnAllAdminUserNameInfos);Iterator allAdminNameItem=returnAllAdminUserNameInfos.iterator();while(allAdminNameItem.hasNext()){String oneAdminUserName=(String)allAdminNameItem.next();this.assertNotNull(oneAdminUserName);}}public void testSelectOneAdminUserInfo() throws WebBBSException{ //应该根据数据库表中的实际数据来决定String adminUserID="402880681071d7ed011071d7f20d0001";AdminUserInfoPO returnOneAdminUserInfoPO=adminUserManageDAOJDBCImple.selectOneAdminUserInfo(adminUserID);//由于所给定的ID是数据库表中存在的一个用户,因此能够返回该对象assertNotNull(returnOneAdminUserInfoPO);}public void testSelectOneAdminUserInfoByName() throws WebBBSException{ String userName="admin"; //应该根据数据库表中的实际数据来决定AdminUserInfoPO returnOneAdminUserInfoPO=adminUserManageDAOJDBCImple.selectOneAdminUserInfoByName(userName);//由于所给定的userName是数据库表中存在的一个用户,因此能够返回该对象assertNotNull(returnOneAdminUserInfoPO);}public void testSelectSomeAdminUserInfo() throws WebBBSException{ String HQLQuery="select * from AdminUserInfo";ArrayList allAdminUserInfos=adminUserManageDAOJDBCImple.selectSomeAdminUserInfo(HQLQuery);assertNotNull(allAdminUserInfos);Iterator allIAdminUserInfoPOItem=allAdminUserInfos.iterator();while(allIAdminUserInfoPOItem.hasNext()){AdminUserInfoPO oneAdminUserInfoPO=(AdminUserInfoPO)allIAdminUserInfoPOItem.next();assertNotNull(oneAdminUserInfoPO);String adminUserName=oneAdminUserInfoPO.getUserName();assertNotNull(adminUserName);}}/*public void testBatchDeleteAdminUserInfo() throws WebBBSException{ ArrayList deletedUserIDs=new ArrayList();String userIDOne="-226769039"; //应该根据数据库表中的实际数据来决定String userIDTwo="-212445867";String userIDThree="-212415571";deletedUserIDs.add(userIDOne);deletedUserIDs.add(userIDTwo);deletedUserIDs.add(userIDThree);boolean returnBoolean=adminUserManageDAOJDBCImple.batchDeleteAdminUserInfo(deletedUserIDs);this.assertTrue(returnBoolean);}public void testDeleteOneAdminUserInfo() throws WebBBSException{/**该方法应该只执行一次,下面的adminUserID 应该根据数据库表中的实际数据来决定*/String adminUserID="ff80808113c78be70113c78bea720001";boolean returnBoolean=adminUserManageDAOJDBCImple.deleteOneAdminUserInfo(adminUserID);this.assertTrue(returnBoolean);}public void testInsertOneAdminUserInfo() throws WebBBSException{ AdminUserInfoPO oneAdminUserInfoPO=new AdminUserInfoPO();Date nowDate=new Date();//不需要设置该值,可以由Hibernate自动来实现添加oneAdminUserInfoPO.setId(new Integer((int)nowDate.getTime()).toString());oneAdminUserInfoPO.setUserName("张三");oneAdminUserInfoPO.setUserPassWord("1234");oneAdminUserInfoPO.setUserType(1);oneAdminUserInfoPO.setAliaoName("网上张飞");oneAdminUserInfoPO.setPassWordAsk("Who Are You?");oneAdminUserInfoPO.setUserImage("../webResource/PersonImage/Chang.gif");oneAdminUserInfoPO.setRegisterTime(new java.util.Date().toLocaleString());oneAdminUserInfoPO.setPassWordAnswer("zhang");oneAdminUserInfoPO.setUserMail("trainict@");oneAdminUserInfoPO.setUserSex(1);oneAdminUserInfoPO.setUserBirthDay("2007-01-25");oneAdminUserInfoPO.setUserComeFrom("北京");oneAdminUserInfoPO.setUserResume("我是网络飞人");oneAdminUserInfoPO.setWorkUnit("中科院计算所");oneAdminUserInfoPO.setStudyHistory("大学毕业");oneAdminUserInfoPO.setStudySchool("XXX大学");oneAdminUserInfoPO.setIdCardNo("12345678901234567");boolean actualReturn=adminUserManageDAOJDBCImple.insertOneAdminUserInfo(oneAdminUserInfoPO);this.assertTrue(actualReturn);}public void testUpdateOneAdminUserInfo() throws WebBBSException{ //应该根据数据库表中的实际数据来决定String adminUserID="ff80808110d7c5a00110d7c5a6640002";AdminUserInfoPO oneAdminUserInfoPO=new AdminUserInfoPO();//不需要设置该值,可以由Hibernate自动来实现添加oneAdminUserInfoPO.setId(adminUserID);oneAdminUserInfoPO.setUserName("张三");//本测试项目改变为此数据项目oneAdminUserInfoPO.setUserPassWord("12345678");oneAdminUserInfoPO.setUserType(1);oneAdminUserInfoPO.setAliaoName("网上张飞");oneAdminUserInfoPO.setPassWordAsk("Who Are You?"); oneAdminUserInfoPO.setUserImage("../webResource/PersonImage/Chang.gif");oneAdminUserInfoPO.setRegisterTime(new Date().toLocaleString());oneAdminUserInfoPO.setPassWordAnswer("zhang");oneAdminUserInfoPO.setUserMail("trainict@");oneAdminUserInfoPO.setUserSex(1);oneAdminUserInfoPO.setUserBirthDay("2007-01-25");oneAdminUserInfoPO.setUserComeFrom("北京");oneAdminUserInfoPO.setUserResume("我是网络飞人");oneAdminUserInfoPO.setWorkUnit("中科院计算所");oneAdminUserInfoPO.setStudyHistory("大学毕业");oneAdminUserInfoPO.setStudySchool("XXX大学");oneAdminUserInfoPO.setIdCardNo("12345678901234567");boolean actualReturn=adminUserManageDAOJDBCImple.updateOneAdminUserInfo(oneAdminUserInfoPO);this.assertTrue(actualReturn);}public void testUpdateOneAdminUserPassWord() throws WebBBSException{ String newPassWord="1234";//应该根据数据库表中的实际的数据值来决定String registerUserId="ff80808110d7c5a00110d7c5a6640002";boolean actualReturn=adminUserManageDAOJDBCImple.updateOneAdminUserPassWord(newPassWord, registerUserId);this.assertTrue(actualReturn);}*/}3、执行该测试用例(1)在classNameConfig.properties文件中添加下面的属性adminManageDAOJDBCImple.className=com.px1987.webbbs.dao.AdminUserManageDAOJDBCImple(2)启动测试用例(3)产生出下面的执行结果。
构建BBS论坛系统项目中控制层模块内的各个Action组件的应用示例
1.1构建BBS论坛系统项目中控制层模块内的各个Action组件的应用示例1.1.1添加实现用户信息管理的Action类1、用户信息管理的Action类UserManagerAction(1)设置其配置参数1)/userManagerAction2)org.apache.struts.actions.DispatchAction3)erManagerAction4)userInfoActionForm5)/showValidatorError.do(2)在parameter中输入action(3)最后将产生出下面的状态2、编程该Action类1.1.2添加实现BBS信息管理的Action类1、用户信息管理的Action类BBSManagerAction(1)设置其配置参数1)/bbsManagerAction2)org.apache.struts.actions.DispatchAction3)com.px1987.webbbs.action.BBSManagerAction4)bbsInfoActionForm5)/showValidatorError.do(2)在parameter中输入action(3)最后将产生出下面的状态2、编程该Action类3、添加与该Action类相关的Forward1.1.3添加实现BBS信息分页管理的Action类1、用户信息管理的Action类BBSPageGuideAction(1)设置其配置参数1)/bbsPageGuideAction2)org.apache.struts.actions.DispatchAction3)com.px1987.webbbs.action.BBSPageGuideAction(2)在parameter中输入action(3)最后将产生出下面的状态2、编程该Action类1.1.4添加实现BBS信息查询管理的Action类1、添加一个实现页面跳转的 Action类BBSSearchInfoAction (1)新建一个Action类(2)设置其配置参数1)/bbsSearchInfoAction2)org.apache.struts.actions.DispatchAction3)com.px1987.webbbs.action.BBSSearchInfoAction4)bbsSearchInfoActionForm5)/showValidatorError.do(3)在parameter中输入action(4)最后将产生出下面的状态2、编程该Action类1.1.5页面跳转的 Action类PageForwordAction1、添加一个实现页面跳转的 Action类PageForwordAction (1)新建一个Action类1)Path为/pageForwordAction2)基类:org.apache.struts.actions.DispatchAction3)类型:com.px1987.webbbs.action.PageForwordAction4)/WebBBS/WebRoot/WEB-INF/struts-config_pageForward.xml(2)并在parameter中输入action(3)并为它添加各个 Forward目标(4)也就是下面的状态<actionparameter="action"path="/pageForwordAction"type="com.px1987.webbbs.action.PageForwordAction" ><forward name="showRegisterForm" path="goShowRegisterForm" /> <!-- 直接采用Tiles中的定义名称作为 path的目标 --><forward name="showWebAppError" path="goShowWebAppError" /><forward name="doSystemManage" path="goSystemManage" /><forward name="showAllBBSClassInfo" path="goShowAllBBSClassInfo" /><forward name="showIndexContent" path="goWebBBSIndex" /><forward name="showUpdateUserInfo" path="goShowUpdateUserInfo" /> <forward name="showUpdateAdminUserInfo" path="goShowUpdateAdminUserInfo"/><forward name="showOnLineUserInfo" path="goShowOnLineUserInfo" /><forward name="doGetUserPassWord" path="goGetUserPassWord" /><forward name="doSendBBSInfo" path="goSendBBSInfo" /><forward name="doReplyBBSInfo" path="goReplyBBSInfo" /><forward name="showAllHotBBSInfo" path="goShowAllHotBBSInfo" /><forward name="showAllBBSInClass" path="goShowAllBBSInClass" /><forward name="showOneBBSInfo" path="goShowOneBBSInfo" /><forward name="showLoginUserAllBBSInfo" path="goShowLoginUserAllBBSInfo" /><forward name="showAllBBSInfoByReplyUserInfo" path="goShowAllBBSInfoByReplyUserInfo" /><forward name="showNewBBSInfo" path="goShowNewBBSInfo" /><forward name="showPrevelInfo" path="goShowPrevelInfo" /><forward name="showTitleLeaderInfo" path="goShowTitleLeaderInfo" /></action>2、编程该Action类。
BBS论坛系统
数据库表及关系建立
1.用户基本资料表 2.用户详细信息表 3.论坛文章表 4.论坛版块表 5.回帖信息表
用户基本资料表
用户详细信息表
论坛文章表
论坛版块表
回帖信息表
封装的Bean
usersBean.java userdetaiBean.java forumBean.java boardBean.java replyBean.java DB.java page.java
系统功能结构_前台功能结构
用户访问论坛首页面后,可进行查看版面 下根贴信息、查看自己发表的帖子、查看 根贴信息、用户注册等功能。用户在此 BBS论坛中通过注册成为该网站的真正用 户并成功登录系统后,可进行发表帖子、 回复帖子、查看自己发表的帖子等操作。 前台功能结构图如图下所示。
系统功能结构_后台功能结构
若用户的权限为管理员,则可进入后台, 可进行回帖的管理、版块管理和用户管理 等操作。后台功能结构图如ER图概念化地构建实体间关系的模型,这使得它 们区别于数据库模型图。ER图的理念是:项目所 有参与者能理解ER图。ER图由不同实体类型、 关系、特性和类型构成。实体是诸如用户的实际 对象,有时更抽象,但必须有业务意义。特性用 于描述实体,关系用于实体之间 (1)实体:现实世界中的事物; (2)属性:事物的特性; (3)联系:现实世界中事物间的关系。实体集的 关系有一对一、一对多、多对多的联系。
J2EE Web组件技术的课程设计实训项目《BBS论坛系统》——构建系统业务层中的用户信息管理的业务功能组件
基于J2EE Web组件技术的课程设计实训项目——《BBS论坛系统》——构建系统业务层中的用户信息管理的业务功能组件1.1.1实现系统业务层与用户信息管理相关的各个业务功能组件1、业务实体UserInfoBaseVO(1)业务实体UserInfoBaseVO,包名称为com.px1987.webbbs.model,并且实现java.io.Serializable接口(2)添加下面的属性private String userName;private String userPassWord;private Integer userType;private String aliaoName;private String passWordAsk;private String userImage;private String passWordAnswer;private String userMail;private String registerTime;private int userID;private String userResume;private Integer type_User_Admin; //该成员主要是区分用户的类型-----注册用户(=1)还是管理员(=2)(3)并为它们提供get/set方法(4)最后为下面的内容package com.px1987.webbbs.model;import java.io.Serializable;public class UserInfoBaseVO implements Serializable {private String userName;private String userPassWord;private Integer userType;private String aliaoName;private String passWordAsk;private String userImage;private String passWordAnswer;private String userMail;private String registerTime;private int userID;private String userResume;//该成员主要是区分用户的类型-----注册用户(=1)还是管理员(=2)private Integer type_User_Admin;public UserInfoBaseVO() {}public String getAliaoName() {return aliaoName;}public void setAliaoName(String aliaoName) {this.aliaoName = aliaoName;}public String getPassWordAnswer() {return passWordAnswer;}public void setPassWordAnswer(String passWordAnswer) { this.passWordAnswer = passWordAnswer;}public String getPassWordAsk() {return passWordAsk;}public void setPassWordAsk(String passWordAsk) {this.passWordAsk = passWordAsk;}public String getRegisterTime() {return registerTime;}public void setRegisterTime(String registerTime) { this.registerTime = registerTime;}public Integer getType_User_Admin() {return type_User_Admin;}public void setType_User_Admin(Integer type_User_Admin) { this.type_User_Admin = type_User_Admin;}public int getUserID() {return userID;}public void setUserID(int userID) {erID = userID;}public String getUserImage() {return userImage;}public void setUserImage(String userImage) {erImage = userImage;}public String getUserMail() {return userMail;}public void setUserMail(String userMail) {erMail = userMail;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getUserPassWord() {return userPassWord;}public void setUserPassWord(String userPassWord) {erPassWord = userPassWord;}public String getUserResume() {return userResume;}public void setUserResume(String userResume) {erResume = userResume;}public Integer getUserType() {return userType;}public void setUserType(Integer userType) {erType = userType;}}2、业务实体UserInfoBaseVO 的子类UserInfoVO(1)业务实体UserInfoVO,包名称为com.px1987.webbbs.model,并且继承UserInfoBaseVO 类,同时也实现java.io.Serializable接口(2)添加下面的属性//下面的属性来自于UserInfoBasePO类private int userSex;private String userBirthDay;private String userComeFrom;// 下面的属性来自于UserInfoPO类private Map contactMethod = new HashMap(); // 下面的属性主要是对注册用户的联系方式进行分离private String userICQCode;private String userMSNCode;private String userQQCode;private String userSign;private int emailVisible;private int acceptAdvise;// 下面的属性来自于AdminUserInfoPO类private String workUnit;private String studyHistory;private String studySchool;private String idCardNo;private int type_User_Admin; //该成员主要是区分用户的类型-----注册用户(=1)还是管理员(=2)// 下面的属性来自于AdminUserInfoPO类private String workUnit;private String studyHistory;private String studySchool;private String idCardNo;(3)并为它们提供get/set方法(4)最后为下面的状态内容package com.px1987.webbbs.model;import java.io.Serializable;import java.util.*;public class UserInfoVO extends UserInfoBaseVO implements Serializable { //下面的属性来自于UserInfoBasePO类private int userSex;private String userBirthDay;private String userComeFrom;// 下面的属性来自于UserInfoPO类private Map contactMethod = new HashMap();// 下面的属性主要是对注册用户的联系方式进行分离private String userICQCode;private String userMSNCode;private String userQQCode;private String userSign;private int emailVisible;private int acceptAdvise;// 下面的属性来自于AdminUserInfoPO类private String workUnit;private String studyHistory;private String studySchool;private String idCardNo;public UserInfoVO(){super();userSex=1;userBirthDay="";userComeFrom="";userSign="";emailVisible=1;acceptAdvise=1;userICQCode="";userMSNCode="";userQQCode="";workUnit="";studyHistory="";studySchool="";idCardNo="";}public int getAcceptAdvise() {return acceptAdvise;}public void setAcceptAdvise(int acceptAdvise) { this.acceptAdvise = acceptAdvise;}public Map getContactMethod() {return contactMethod;}public void setContactMethod(Map contactMethod) { this.contactMethod = contactMethod;}public int getEmailVisible() {return emailVisible;}public void setEmailVisible(int emailVisible) { this.emailVisible = emailVisible;}public String getIdCardNo() {return idCardNo;}public void setIdCardNo(String idCardNo) { this.idCardNo = idCardNo;}public String getStudyHistory() {return studyHistory;}public void setStudyHistory(String studyHistory) { this.studyHistory = studyHistory;}public String getStudySchool() {return studySchool;}public void setStudySchool(String studySchool) { this.studySchool = studySchool;}public String getUserBirthDay() {return userBirthDay;}public void setUserBirthDay(String userBirthDay) { erBirthDay = userBirthDay;}public String getUserComeFrom() {return userComeFrom;}public void setUserComeFrom(String userComeFrom) { erComeFrom = userComeFrom;}public String getUserICQCode() {return (String)contactMethod.get("userICQCode");}/** 下面的各个方法为“帮助方法”*/public void setUserICQCode(String userICQCode) {contactMethod.put("userICQCode", userICQCode);}public String getUserMSNCode() {return (String)contactMethod.get("userMSNCode");}public void setUserMSNCode(String userMSNCode) {contactMethod.put("userMSNCode", userMSNCode);}public String getUserQQCode() {return (String)contactMethod.get("userQQCode");}public void setUserQQCode(String userQQCode) {contactMethod.put("userQQCode", userQQCode);}public void addOneContactMethod(String oneContactMethodKey,String oneContactMethodValue) { //该方法为“帮助方法”contactMethod.put(oneContactMethodKey,oneContactMethodValue);}public String getOneContactMethod(String oneContactMethodKey){return (String)contactMethod.get(oneContactMethodKey);}public int getUserSex() {return userSex;}public void setUserSex(int userSex) {erSex = userSex;}public String getUserSign() {return userSign;}public void setUserSign(String userSign) {erSign = userSign;}public String getWorkUnit() {return workUnit;}public void setWorkUnit(String workUnit) {this.workUnit = workUnit;}}2、添加与用户信息处理相关的业务接口(1)接口UserInfoManageInterface,包名称为com.px1987.webbbs.model(2)设计该接口中的内容package com.px1987.webbbs.model;import com.px1987.webbbs.exception.*;import java.util.*;public interface UserInfoManageInterface{public boolean doUserLogin(UserInfoVO oneUserInfoVO) throws WebBBSException;public boolean doUserRegister(UserInfoVO oneUserInfoVO) throws WebBBSException;public boolean doUpdateOneUserInfo(UserInfoVO oneUserInfoVO) throws WebBBSException;public boolean doUpdateOneRegisterUserPassWord(UserInfoVO oneUserInfoVO,String newPassWord) throws WebBBSException;public boolean doUpdateOneAdminUserPassWord(UserInfoVO oneUserInfoVO,String newPassWord) throws WebBBSException;public boolean doCheckUserNameExist(String userName,Integer type_User_Admin) throws WebBBSException;public String doGetOneRegisterUserPassWord(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException;public String doGetOneAdminUserPassWord(UserInfoVO oneAdminUserInfoVO) throws WebBBSException;public UserInfoVO doGetOneRegisterUserInfo(String registerUserID) throws WebBBSException;public UserInfoVO doGetOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException;public UserInfoVO doGetOneAdminUserInfo(String adminUserID) throws WebBBSException;public UserInfoVO doGetOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException;public UserInfoBaseVO doGetOneUserInfo(String userName,String userPassWord, Integer type_User_Admin) throws WebBBSException;public ArrayList doGetAllUserNameInfo(String userName) throws WebBBSException;public boolean doDeleteOneRegisterUserInfo(String registerUserID) throws WebBBSException;public boolean doDeleteOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException;public boolean doDeleteOneAdminUserInfo(String adminUserID) throws WebBBSException;public boolean doDeleteOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException;public ArrayList doGetAllRegisterUserInfo() throws WebBBSException;public ArrayList doGetSomeRegisterUserInfo(Map registerUserInfos) throws WebBBSException;public ArrayList doGetAllAdminUserInfo() throws WebBBSException;public ArrayList doGetSomeAdminUserInfo(Map adminUserInfos) throws WebBBSException;}3、添加接口UserInfoManageInterface的实现类(1)接口UserInfoManageInterface的实现类UserInfoManageImple,包名称为com.px1987.webbbs.model(2)编程该业务组件类package com.px1987.webbbs.model;import java.util.*;import com.px1987.webbbs.exception.WebBBSException;import erInfoPO;import com.px1987.webbbs.dao.AdminUserInfoPO;import erManageDAOInterface;import erManageDAOJDBCImple;public class UserInfoManageImple implements UserInfoManageInterface { UserManageDAOInterface oneUserManageDAOJDBCImple=null;public void setOneUserManageDAOJDBCImple(UserManageDAOInterface oneUserManageDAOJDBCImple) {this.oneUserManageDAOJDBCImple = oneUserManageDAOJDBCImple;}public UserInfoManageImple() {}public boolean doCheckUserNameExist(String userName, Integer type_User_Admin) throws WebBBSException {return false;}public boolean doDeleteOneAdminUserInfo(String adminUserID)throws WebBBSException {return false;}public boolean doDeleteOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException {return false;}public boolean doDeleteOneRegisterUserInfo(String registerUserID)throws WebBBSException {return false;public boolean doDeleteOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException {return false;}public ArrayList doGetAllAdminUserInfo() throws WebBBSException { return null;}public ArrayList doGetAllRegisterUserInfo() throws WebBBSException { return null;}public ArrayList doGetAllUserNameInfo(String userName)throws WebBBSException {return null;}public UserInfoVO doGetOneAdminUserInfo(String adminUserID)throws WebBBSException {return null;}public UserInfoVO doGetOneAdminUserInfo(UserInfoVO oneAdminUserInfoVO) throws WebBBSException {return null;}public String doGetOneAdminUserPassWord(UserInfoVO oneAdminUserInfoVO) throws WebBBSException {return null;}public UserInfoVO doGetOneRegisterUserInfo(String registerUserID) throws WebBBSException {return null;public UserInfoVO doGetOneRegisterUserInfo(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException {return null;}public String doGetOneRegisterUserPassWord(UserInfoVO oneRegisterUserInfoVO) throws WebBBSException {return null;}public UserInfoVO doGetMaxIDUserInfo() throws WebBBSException{// UserManageDAOInterface oneUserManageDAOJDBCImple=null;UserInfoVO oneUserInfoVO=null;UserInfoPO oneUserInfoPO=null;// oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();oneUserInfoVO=new UserInfoVO();oneUserInfoPO=oneUserManageDAOJDBCImple.selectMaxIDUserInfo();oneUserInfoVO.setUserName(oneUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneUserInfoPO.getRegisterTime());oneUserInfoVO.setUserID(oneUserInfoPO.getId());oneUserInfoVO.setUserResume(oneUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(1));oneUserInfoVO.setUserSex(oneUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneUserInfoPO.getUserComeFrom());oneUserInfoVO.setContactMethod(oneUserInfoPO.getContactMethod());oneUserInfoVO.setUserSign(oneUserInfoPO.getUserSign());oneUserInfoVO.setEmailVisible(oneUserInfoPO.getEmailVisible());oneUserInfoVO.setAcceptAdvise(oneUserInfoPO.getAcceptAdvise());return oneUserInfoVO;}public UserInfoVO doGetOneUserInfo(String userName, String userPassWord, Integer type_User_Admin) throws WebBBSException {// UserManageDAOInterface oneUserManageDAOJDBCImple=null;UserInfoVO oneUserInfoVO=null;// oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();oneUserInfoVO=new UserInfoVO();switch(type_User_Admin.intValue()){case 1:UserInfoPO oneUserInfoPO=oneUserManageDAOJDBCImple.SelectOneUserInfoData(userName, userPassWord);oneUserInfoVO.setUserName(oneUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneUserInfoPO.getRegisterTime());oneUserInfoVO.setUserID(oneUserInfoPO.getId());oneUserInfoVO.setUserResume(oneUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(1));oneUserInfoVO.setUserSex(oneUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneUserInfoPO.getUserComeFrom());oneUserInfoVO.setContactMethod(oneUserInfoPO.getContactMethod());oneUserInfoVO.setUserSign(oneUserInfoPO.getUserSign());oneUserInfoVO.setEmailVisible(oneUserInfoPO.getEmailVisible());oneUserInfoVO.setAcceptAdvise(oneUserInfoPO.getAcceptAdvise());break;case 2:AdminUserInfoPO oneAdminUserInfoPO= oneUserManageDAOJDBCImple.SelectOneAdminUserInfoData(userName, userPassWord);oneUserInfoVO.setUserName(oneAdminUserInfoPO.getUserName());oneUserInfoVO.setUserPassWord(oneAdminUserInfoPO.getUserPassWord());oneUserInfoVO.setUserType(oneAdminUserInfoPO.getUserType());oneUserInfoVO.setAliaoName(oneAdminUserInfoPO.getAliaoName());oneUserInfoVO.setPassWordAsk(oneAdminUserInfoPO.getPassWordAsk());oneUserInfoVO.setUserImage(oneAdminUserInfoPO.getUserImage());oneUserInfoVO.setPassWordAnswer(oneAdminUserInfoPO.getPassWordAnswer());oneUserInfoVO.setUserMail(oneAdminUserInfoPO.getUserMail());oneUserInfoVO.setRegisterTime(oneAdminUserInfoPO.getRegisterTime());oneUserInfoVO.setUserID(oneAdminUserInfoPO.getId());oneUserInfoVO.setUserResume(oneAdminUserInfoPO.getUserResume());oneUserInfoVO.setType_User_Admin(new Integer(2));oneUserInfoVO.setUserSex(oneAdminUserInfoPO.getUserSex());oneUserInfoVO.setUserBirthDay(oneAdminUserInfoPO.getUserBirthDay());oneUserInfoVO.setUserComeFrom(oneAdminUserInfoPO.getUserComeFrom());oneUserInfoVO.setWorkUnit(oneAdminUserInfoPO.getWorkUnit());oneUserInfoVO.setStudyHistory(oneAdminUserInfoPO.getStudyHistory());oneUserInfoVO.setStudySchool(oneAdminUserInfoPO.getStudySchool());oneUserInfoVO.setIdCardNo(oneAdminUserInfoPO.getIdCardNo());break;}return oneUserInfoVO;}public ArrayList doGetSomeAdminUserInfo(Map adminUserInfos)throws WebBBSException {return null;}public ArrayList doGetSomeRegisterUserInfo(Map registerUserInfos) throws WebBBSException {return null;}public boolean doUpdateOneAdminUserPassWord(UserInfoVO oneUserInfoVO, String newPassWord) throws WebBBSException {return false;}public boolean doUpdateOneRegisterUserPassWord(UserInfoVO oneUserInfoVO, String newPassWord) throws WebBBSException {return false;}public boolean doUpdateOneUserInfo(UserInfoVO oneUserInfoVO) throws WebBBSException{// UserManageDAOInterface oneUserManageDAOJDBCImple=null;boolean okOrNot=false;UserInfoPO oneUserInfoPO=null;AdminUserInfoPO oneAdminUserInfoPO=null;// oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();switch(oneUserInfoVO.getType_User_Admin().intValue()){case 1: //目前是前台用户在进行修改吗oneUserInfoPO=new UserInfoPO();oneUserInfoPO.setId(oneUserInfoVO.getUserID());oneUserInfoPO.setUserName(oneUserInfoVO.getUserName());oneUserInfoPO.setUserPassWord(oneUserInfoVO.getUserPassWord());oneUserInfoPO.setUserType(oneUserInfoVO.getUserType());oneUserInfoPO.setAliaoName(oneUserInfoVO.getAliaoName());oneUserInfoPO.setPassWordAsk(oneUserInfoVO.getPassWordAsk());oneUserInfoPO.setUserImage(oneUserInfoVO.getUserImage());oneUserInfoPO.setRegisterTime(oneUserInfoVO.getRegisterTime());oneUserInfoPO.setPassWordAnswer(oneUserInfoVO.getPassWordAnswer());oneUserInfoPO.setUserMail(oneUserInfoVO.getUserMail());oneUserInfoPO.setUserSex(oneUserInfoVO.getUserSex());oneUserInfoPO.setUserBirthDay(oneUserInfoVO.getUserBirthDay());oneUserInfoPO.setUserComeFrom(oneUserInfoVO.getUserComeFrom());oneUserInfoPO.setUserResume(oneUserInfoVO.getUserResume());oneUserInfoPO.setUserSign(oneUserInfoVO.getUserSign());oneUserInfoPO.setEmailVisible(oneUserInfoVO.getEmailVisible());oneUserInfoPO.setAcceptAdvise(oneUserInfoVO.getAcceptAdvise());oneUserInfoPO.setContactMethod(oneUserInfoVO.getContactMethod());okOrNot=oneUserManageDAOJDBCImple.updateOneUserInfo(oneUserInfoPO);break;case 2: //目前是后台某种形式的管理员在进行修改吗break;}return okOrNot;}public boolean doUserLogin(UserInfoVO oneUserInfoVO) throws WebBBSException{ String userName=oneUserInfoVO.getUserName();String userPassWord=oneUserInfoVO.getUserPassWord();int type_User_Admin=oneUserInfoVO.getType_User_Admin().intValue();boolean okOrNot=false;// UserManageDAOInterface oneUserManageDAOJDBCImple=null;// oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();switch(type_User_Admin){case 1: //目前是前台用户在进行登录UserInfoPO oneUserInfoPO=oneUserManageDAOJDBCImple.SelectOneUserInfoData(userName, userPassWord);if(oneUserInfoPO==null) {okOrNot=false;}else{okOrNot=true;}break;case 2: //目前是后台某种形式的管理员在进行登录AdminUserInfoPO oneAdminUserInfoPO= oneUserManageDAOJDBCImple.SelectOneAdminUserInfoData(userName, userPassWord);if(oneAdminUserInfoPO==null) {okOrNot=false;}else{okOrNot=true;}break;}return okOrNot;}public boolean doUserRegister(UserInfoVO oneUserInfoVO) throws WebBBSException {boolean okOrNot=false;UserInfoPO oneUserInfoPO=null;AdminUserInfoPO oneAdminUserInfoPO=null;// UserManageDAOInterface oneUserManageDAOJDBCImple=null;// oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();int type_User_Admin=oneUserInfoVO.getType_User_Admin().intValue();switch(type_User_Admin){case 1: //目前是前台用户在进行注册oneUserInfoPO=new UserInfoPO();int userID=(int)new Date().getTime();oneUserInfoPO.setId(userID);oneUserInfoPO.setUserName(oneUserInfoVO.getUserName());oneUserInfoPO.setUserPassWord(oneUserInfoVO.getUserPassWord());oneUserInfoPO.setUserType(oneUserInfoVO.getUserType());oneUserInfoPO.setAliaoName(oneUserInfoVO.getAliaoName());oneUserInfoPO.setPassWordAsk(oneUserInfoVO.getPassWordAsk());oneUserInfoPO.setUserImage(oneUserInfoVO.getUserImage());oneUserInfoPO.setRegisterTime(oneUserInfoVO.getRegisterTime());oneUserInfoPO.setPassWordAnswer(oneUserInfoVO.getPassWordAnswer());oneUserInfoPO.setUserMail(oneUserInfoVO.getUserMail());oneUserInfoPO.setUserSex(oneUserInfoVO.getUserSex());oneUserInfoPO.setUserBirthDay(oneUserInfoVO.getUserBirthDay());oneUserInfoPO.setUserComeFrom(oneUserInfoVO.getUserComeFrom());oneUserInfoPO.setUserResume(oneUserInfoVO.getUserResume());oneUserInfoPO.setUserSign(oneUserInfoVO.getUserSign());oneUserInfoPO.setEmailVisible(oneUserInfoVO.getEmailVisible());oneUserInfoPO.setAcceptAdvise(oneUserInfoVO.getAcceptAdvise());oneUserInfoPO.setContactMethod(oneUserInfoVO.getContactMethod());okOrNot=oneUserManageDAOJDBCImple.insertOneUserInfo(oneUserInfoPO);break;case 2: //目前是后台某种形式的管理员在进行注册oneAdminUserInfoPO=new AdminUserInfoPO();okOrNot=oneUserManageDAOJDBCImple.insertOneAdminUserInfo(oneAdminUserInfoPO);break;}return okOrNot;}public int doGetTotalRegisterUserCounter() throws WebBBSException{// UserManageDAOInterface oneUserManageDAOJDBCImple=null;int totalRegisterUserCounter=0;// oneUserManageDAOJDBCImple=new UserManageDAOJDBCImple();totalRegisterUserCounter=oneUserManageDAOJDBCImple.selectTotalRegisterUserCounter();return totalRegisterUserCounter;}}。
BBS论坛系统uml
UML面向对象分析与设计案例目录1、前言 (3)2、系统需求分析 (4)3、功能模块图 (5)3.1、前台基本业务模块 (5)3.2、后台管理模块 (6)4、用例图 (8)5、时序图 (10)5.1、会员发帖回帖时序图 (10)5.2、论坛管理员管理会员的时序图 (10)5.3、论坛管理员管理论坛分类的时序图 (11)5.4、论坛管理员管理帖子的时序图 (11)6、协作图 (12)6.1、会员发帖回帖的协作图 (12)6.2、论坛管理员管理会员的协作图 (12)6.3、论坛管理员管理论坛分类的协作图 (13)6.4、论坛管理员管理帖子的协作图 (13)7、状态图 (14)7.1、前台业务模块的状态图 (14)7.2、后台会员管理的状态图 (15)7.3、后台论坛分类管理的状态图 (16)7.4、后台帖子管理的状态图 (16)8、活动图 (17)8.1、前台业务模块的活动图 (17)8.2、后台业务的活动图 (18)9、组件图 (19)10、类图 (20)10.1、参与者相关的类 (20)10.2、各类之间的关系 (22)Email:g reenvc@ 第 1 页,共 23 页UML面向对象分析与设计案例11、配置图 (23)1、前言本文主要目的是利用建模工具对BBS论坛系统进行建模,用类图、用例图、时序图、协作图、状态图、活动图、组件图、配置图等面向对象分析设计的软件过程,更好的被用户所理解。
2、系统需求分析本系统是一个基本的BBS论坛系统,可大致分为一下流程:用户登陆进入论坛(一般为游客,有时还要注册为会员),就某个话题(帖字的主题)展开讨沦。
通过发帖功能发布新的话题;通过回帖功能回复已有的话题;通过搜索功能查找已有的话题,管理员通过管理功能创建、编辑、删除论坛的版块;管理注册的用户;管理帖子。
这样的流程决定了BBS论坛系统的需求。
(1) 会员注册提供新会员注册功能,包括提供录入信息的界面,检查注册信息的有效性,并将注册会员信息保存在对应数据库的数据表中。
一个简单BBS论坛总体框架与功能模块设计
一个简单BBS论坛总体框架与功能模块设计摘要:BBS已经成为人们获取信息、发表言论的重要场所。
本文介绍了一个简单BBS系统的设计与开发,并详细讨论了该系统的实现过程及其结构。
关键词:BBS论坛总体框架功能模块一、BBS的发展背景BBS是在1992年底随着国际互联网的开始流行而迅速发展起来的。
互联网的产生使得以前只能在本地访问的BBS可以被全世界随意访问, 这对大多数人来说是极具诱惑力的。
BBS是一个有多人参加的讨论系统, 在BBS上大家可以对一个共同感兴趣的问题进行讨论, 自由地发表自己的意见与观点,并且能直接与其他人进行沟通。
按照网站的性质以及服务对象来分,迄今有以下几种类型:一是校园BBS;二是专业BBS;三是商业BBS;四是小型局域BBS;五是业余BBS;六是新闻媒体BBS。
随着互联网事业的蓬勃发展,BBS这个具有强大实时交互功能、信息交流的平台,使人们不再像电视观众、电台听众、报纸杂志读者一样只是被动地观看、收听、阅读,而是可以积极而及时地参与讨论,在了解他人观点意见的同时也可以发表自己的看法。
二、总体框架和功能模块设计1.设计框架。
在确定了论坛系统的设计思路之后,还需要归纳成系统的相关模块,每个模块实际上就是功能的合理组合。
由于已经将功能做了前台与后台的分类,因此模块也应该分为两大类:前台模块和后台模块。
用户在前台的注册、登陆,以及修改个人的注册信息组合成注册登陆模块;用户浏览板块、浏览主题帖列表、查看帖子组合成浏览模块;用户发帖、回帖、编辑自己发布的帖子组合成发帖回帖模块;管理员编辑帖子、删除帖子、转移帖子、置顶帖子和精华帖子组合成管理帖子模块。
以上四个模块是前台模块。
后台模块都是与管理员相关的,设置论坛参数单独为论坛设置模块;创建、修改和删除板块为管理板块模块;添加、删除和设置权限为管理用户模块。
从用户角度分析问题,首先区分系统中有几种用户。
目前的论坛系统,为了使其清楚易懂,简化了用户体系,论坛中只有两种用户:注册用户和管理员。
UML画图BBS论坛系统模块划分
通过对BBS论坛系统模块划分,已经明确了该系统各个模块的大致功能,下面进入建模阶段,即用可视化的UML模型将该系统直观的图形展现出来。
(1)绘制系统管理的用例图(2)绘制论坛管理员管理会员和论坛分类的用例图(3)绘制系统用户的用例图(4)绘制会员发帖回帖的时序图(5)绘制论坛管理员管理会员的时序图(6)绘制论坛管理员管理帖子的时序图(7)1制会员发帖回帖的协作图(8)绘制论坛管理员管理会员的协作图(9)绘制论坛管理员管理帖子的协作图(10)绘制前台业务模块的状态图(11)绘制后台会员管理的状态图(12)绘制后台帖子管理的状态图(13)绘制前台业务模块的活动图(14)绘制后台业务的活动图(15)绘制系统的类图(16)绘制系统的组件图(17)绘制系统的配置图1统管理的用例图论坛管理员置顶帖子2论坛管理员管理会员和论坛分类的用例图论坛管理员论坛分类管理添加论坛分类删除论坛分类修改会员信息添加会员删除会员<<extend>>3统用户的用例图发表帖子4会员发帖回贴的时序图5坛管理员管理会员的时序图6论坛管理员管理帖子的时序图前台页面模块的状态图1010前台业务模块的活动图后台业务活动图1411后台管理员的状态图管理员管理会员和论坛种类的用例图12后天帖子管理的状态图后台论坛分类管理的状态图论坛管理员管理论坛分类的时序图以及协作图4:16系统组件图17系统的配置图15系统类之间的关系图。
J2EE Web组件课程设计——BBS论坛系统项目完整实现实例(持久层中的BBSInfo相关功能类的第2部分)
1.1BBS论坛系统项目完整实现实例(持久层中的BBSInfo相关功能类——第2部分)1.1.1构建项目中的BBS信息相关的DAO组件接口的各个实现类1、构建BBSInfoManageDAOInterface接口的实现类(1)类名称为BBSInfoManageDAOJDBCImple,包名称为com.px1987.webbbs.dao(2)编程该实现类package com.px1987.webbbs.dao;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.sql.DataSource;import com.px1987.webbbs.exception.WebBBSException;public class BBSInfoManageDAOJDBCImple implements BBSInfoManageDAOInterface{private DataSource dataSource=null;public void setDataSource(DataSource dataSource){this.dataSource = dataSource;}private java.sql.Connection con=null;ConnectDBInterface connectDBBean=null;public BBSInfoManageDAOJDBCImple() throws WebBBSException{// connectDBBean=new ConnectDBBean();// con=connectDBBean.getConnection();// con=dataSource.getConnection();}public boolean DeleteOneBBSInfo(int bbsID) throws WebBBSException { return false;}public boolean DeleteOneBBSReplyInfo(int replyID) throws WebBBSException { return false;}public boolean DeleteOneBBSTitleInfo(int bbsTitleID) throws WebBBSException { return false;}public boolean DeleteOneRoleInfo(int roleID) throws WebBBSException {return false;}public boolean DeleteOneUserInfo(int userID) throws WebBBSException { return false;}public boolean InsertBBSInfo(BBSInfoPO oneBBSInfoPO) throws WebBBSException {String insertSql="insert into BBS values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";try{con=dataSource.getConnection();java.sql.PreparedStatement pstmt = con.prepareStatement(insertSql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);pstmt.setInt(1,oneBBSInfoPO.getId());pstmt.setString(2,oneBBSInfoPO.getAuthor());pstmt.setString(3,oneBBSInfoPO.getTitle());pstmt.setInt(4,oneBBSInfoPO.getReplay());pstmt.setInt(5,oneBBSInfoPO.getHits());pstmt.setString(6,oneBBSInfoPO.getSendInfoTime());pstmt.setString(7,oneBBSInfoPO.getContent());pstmt.setShort(8,(short)oneBBSInfoPO.getMailto());pstmt.setString(9,oneBBSInfoPO.getAbstractText());pstmt.setString(10,oneBBSInfoPO.getLastUpdateTime());pstmt.setInt(11,oneBBSInfoPO.getBbsIconID());pstmt.setInt(12,oneBBSInfoPO.getBbsTypeID());pstmt.setInt(13,oneBBSInfoPO.getBbsTitleID());pstmt.setInt(14,oneBBSInfoPO.getUserID());pstmt.executeUpdate();}catch(SQLException e){throw new WebBBSException("在插入数据库表时出现错误!,异常的详细内容为:"+e.getMessage());}finally{try{con.close();}catch(SQLException e){throw new WebBBSException("不能正确地关闭数据库连接!,异常的详细内容为:"+e.getMessage());}}return true;}public ArrayList getSomeBbsTitleInfos(int titleCounter) throws WebBBSException {ResultSet rs=null;BBSTitlePO oneBBSTitlePO=null;String select_SqlStatement=null;ArrayList allBBSTitlePOArrayList=null;allBBSTitlePOArrayList=new ArrayList();/** “set rowcount n”SQL Server中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。
BBS论坛系统架构设计
本讲的简要回顾
1、子曰:“学而不思则罔,思而不学则殆。” “学而时习之”
2、子曰:“知之者不如好之者,好之者不如乐之者”
3、子曰:“三人行,必有我师焉”
4、子曰:“我非生而知之者,好古,敏以求之者也”
5、师者:“传道、授业和解惑 ”
“信息系统业务层架构实现方法综述” 主要内容
(1)BBS论坛系统架构设计 (2)BBS论坛项目持久层实现 (3)BBS论坛项目服务层实现 (4)在项目中应用Spring框架 (5)在项目中应用Spring AOP (6)BBS论坛项目控制层实现 (7)将Struts和Spring进行整合 (8)BBS论坛项目表示层实现
4本项目的系统架构为ssh框架1strutsspringdwr前台服务2struts2springhibernate后台管理特别适合项目实训教学也就是我倡导的可教学项目当然在功能实现方面没有实现真实项目中的所有功能重点是放在架构实现方面特别是三大框架的相互整合环境搭建等5前台功能演示将进入分类信息版块页面可以发表回复查看信息等方面的功能但在细节方面没有花太多的精力比较粗糙是我自己在07年写的
1、计算所培训中心的论坛(/) 计算所培训中心的论坛系统采用的是目前比较流行的 “Discuz 论坛”,下面是其首页的局部截图。
2、Discuz 论坛项目介绍 Discuz 论坛(/)是一个采用 PHP 和 MySQL 构建的高效论坛解决方案。Discuz在代码质 量,运行效率,负载能力,安全等级,功能可操控性和权 限严密性等目,为什么要采用该项目?
4、本项目的系统架构为SSH框架 (1)Struts +Spring + Hibernate + DWR 前台服务 (2)Struts2 +Spring + Hibernate 后台管理 特别适合项目实训教学(也就是我倡导的“可教学项目” ) 当然在功能实现方面没有实现真实项目中的所有功能 重点是放在架构实现方面,特别是三大框架的相互整合、
在BBS论坛系统项目的前台用户管理模块中实现DAO组件和单元测试的应用示例
1.1在BBS论坛系统项目的前台用户管理模块中实现DAO组件和单元测试的应用示例1.1.1实现前台用户管理模块中的DAO组件1、针对UserManageDAOInterface的DAO接口提供一个实现类(1)类名称为UserManageDAOSpringHibernateImple,包名称为com.px1987.webbbs.springhibernatedao、并且继承HibernateDaoSupport类注意:此时的DAO组件不再继承于Observable类,对产生异常时的日志记录可以改用Spring 的异常通知来实现。
(2)编程该实现类需要将sessionFactory对象(org.springframework.orm.hibernate3.LocalSessionFactoryBean类)注入到DAO组件中本DAO组件类采用根据HibernateDaoSupport.getSession()方法获得session 后,再采用与Hibernate类似的DAO实现方式------也就是不使用回调的基于Spring的DAO实现。
2、在SpringLinkHibernate.xml文件中添加对该DAO组件类的对象声明1.1.2对基于Spring对Hibernate的包装的前台用户管理的DAO组件的测试1、添加对DAO组件UserManageDAOHibernateImple类进行测试的TestCase类(1)新增一个测试用例,类名称为TestUserManageDAOSpringHibernateImple,包名称为com.px1987.webbbs.springhibernatedaotest,基类为junit.framework.TestCase,被测试的类选择为erManageDAOSpringHibernateImple(2)进入到下一步,并选择我们需要进行测试的方法选择所需要的被测试的方法(3)将产生出下面的结果2、编程该测试用例类3、执行该测试用例类(1)执行本测试用例(2)将产生出下面的结果(3)同时,在控制台中将能够看到hibernate的各种SQL语句。
BBS论坛项目业务及表结构
BBS论坛项目业务及表结构第一部分:BBS伦理业务介绍:.1. 业务背景BBS是英文Bulletin Board System的缩写,翻译为中文的含义是“电子公告版”,习惯也称为“论坛”。
论坛,顾名思义是对某个话题展开的深入讨论、辩论,例如:关于对某个学术或技术问题的论坛、关于对某个金融或政治问题的论坛。
现实生活中可以通过开会等方式进行,它要求参会者在同一时间都有空出席会议,所以一般召集比较困难。
随着Internet网络的出现,这个问题得到了解决,论坛开始在网络盛行。
在Google中键入“论坛”关键字,将搜索出各类论坛,很多论坛也发展为社区形式,常见的论坛举例如下。
CSDN论坛():属于技术类论坛,讨论的主题涉及软件开发语言、平台工具和相关开发技术等;水木清华BBS(/guest-frames.html):讨论的主题涉及学术、校园、娱乐、电脑、体育等;天眼社区(/travel):属于综合类论坛,讨论的主题涉及社会、人文、汽车、生活、经济等;百度贴吧():属于综合类论坛,讨论的主题涉及娱乐明星、体育、游戏、校园文化等;淘宝网社区(/forum-16/list_forum-.htm):属于网上购物类论坛,讨论的主题涉及商品介绍、促销、评论、购物经验交流等。
2. 业务功能论坛因其讨论的主题或规模不同,而形式有所不同。
但从业务功能的角度看,一般都具有如下典型功能,下面以CSDN论坛为例具体介绍如下。
1)用户注册如希望有权利在论坛中发言,你需要先注册为论坛的用户,即会员。
单击CSDN主页中的“注册”超链接,填写如图1.1所示注册信息,注册为论坛用户。
图1.1 CSDN用户注册用户登录注册为论坛的用户后,单击CSDN主页中的“登录”超链接,输入用户账号登录到论坛,如图1.2所示。
登录成功后,论坛的主页将显示你的登录名和头像。
如图1.3所示,左上角显示登录名为love_program_2009,下方的图片为代表用户的头像。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1构建BBS论坛系统项目用户信息管理模块业务层组件的实现示例1.1.1用户信息管理模块业务层组件的实现过程
1、添加UserInfoManageInterface接口
设计该UserInfoManageInterface接口
注意在该接口中对Java泛型的具体应用。
2、为该接口提供实现类UserInfoManageImple
继承于java.util.Observable类,并编程该实现类
3、添加一个工厂类,用来统一创建UserInfoManageInterface接口的对象实例
(1)UserInfoManageFactory类,包名称为com.px1987.webbbs.util ,并且继承于Observable类
(2)编程该UserInfoManageFactory类
4、在Sprirng的IoC的XML配置文件WebBBSServiceContext.xml中定义出该组件对象
<bean id="userInfoManageBean" class="erInfoManageImple">
<property name="userInfoManageDAOImpleBean">
<ref bean="userInfoManageDAOImpleBean"></ref>
</property>
<property name="adminUserInfoManageDAOImpleBean">
<ref bean="adminUserInfoManageDAOImpleBean"></ref> </property>
</bean>
1.1.2对用户信息管理业务层组件进行单元测试
1、添加测试用例TestUserInfoManageImple类
2、类名称和包名称
com.px1987.webbbs.modeltest erInfoManageImple
3、编程该测试用例类
4、执行该测试用例
将出现下面的结果
同时在控制台中也出现下面的状态提示,表明Hibernate也正确地执行了!。