免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
J2EE课程设计任务书系别电气与电子工程系专业计算机应用技术班级指导教师师题目基于Struts+Hibernate网上论坛系统设计目的:论坛系统是网站开发中很典型的一个例子。它可以从一个很简单的模型复杂细化到一个庞大的系统。对于企业或者个人网站,类似留言板的功能十分常见。通过网上论坛系统的设计和开发可以了解到类似系统的功能逻辑以及用Struts和Hibernate实现的基础。设计要求包含以下模块:1. 用户登录和验证模块。2. 显示现在所有话题模块及已有回复的模块。3. 显示某一特定话题和回复模块。4. 新建话题模块。5. 新建回复模块。6. 界面要求:使用Dreamweaver设计界面达到协调、美观。课程设计说明文档要求:1网上论坛系统须使用Struts和Hibernate协同工作,前台使用Struts做控制和显示,后台用Hibernate做数据操作。2. 说明系统设计的功能及模块,画出系统流程图。3.数据库设计与Hibernate设计。4. Action和Form设计及页面设计。4. 撰写课程设计说明书。课程说明书里应包括目录,程序流程图,数据库及Hibernate设计、Action和Form设计及页面设计、程序,总结(印象较深的经验/教训等)。要求:设计要有相应的设计报告,报告要包含题目、目录、摘要、关键字、正文、参考文献几部分;字体、字号格式按样文设置;正文要有需求分析、概要设计、详细设计、代码、结论等部分构成,并有必要的图表和效果图。结题形式产品,程序代码,设计说明书时间分配:总体设计时间为1周1 需求分析,概要设计 1天2 功能模块开发 4天3 上机调试,实现功能 1天4 写说明书、答辩 1天网上论坛系统说明书摘要21世纪,地球因互联网的存在,早已变成一个村落。人们在互联网的世界里尽情地遨游,享受着Internet带来的无限乐趣。我们习惯了去网上看新闻、去论坛看帖、网上购物、撰写自己的网络日志等等。当然,最离不开的,还是各种搜索引擎,帮我们找到想要的信息。总之,互联网已经成为我们的一种生活方式,一个巨大的知识库。网上论坛系统是最常见的网络形式,其主要功能是给网友一个交流的平台,大家畅所欲言,互相学习和帮助。本系统基于MVC设计模式,采用流行的JSP+JavaBean+Servlet三层架构。在设计过程中,将页面显示与功能逻辑实现分离开来,提高了代码的重用,有利于日后系统的维护和升级。开发过程中使用到的开发工具有:web服务器tomcat,数据库服务器SQL Server 2000,集成开发工具MyEclipse和jdk。整个论坛系统分为前台页面和后台数据库两个大的模块。其中前台模块实现的基本功能主要有:用户注册,用户登陆,浏览帖子,回复帖子,发表新帖;后台数据库模块实现的基本功能主要有:编辑用户权限,编辑论坛版块,删除论坛版块,删除帖子。关键词:论坛系统 MVC设计模式 JSP mySQL Tomcat sructs hibernate目录第一章 论坛介绍1第二章 需求分析221 功能需求22.1.1 注册模块22.1.2 登陆模块32.1.3 论坛管理模块32.1.4 帖子管理模块322 运行环境需求32.2.1 系统软件的建议配置32.2.2 系统硬件的建议配置423 界面设计42.3.1 界面操作需求42.3.2界面功能需求4第三章 开发平台与主要技术731 开发平台73.1.1 MyEclipse73.1.2 Tomcat83.1.3 JDK832 主要技术93.2.1 MVC模式93.2.2 MVC工作原理93.2.3 MVC的核心思想1033 数据库设计103.3.1 MySQL安装配置103.3.2数据库的字段11第四章 系统实现124.1 数据库的实现124.1.1数据库的连接代码124.1.2数据库中表的自动生成代码124.1.3数据库中表的操作代码以及相对应的映射文件134.2用户注册144.3用户登陆核心代码194.4新帖发布与回复核心代码20第五章 调试与测试24第六章 总结24参考文献25第一章 论坛介绍随着计算机技术的进步与发展以及Internet技术日益成熟,互联网正在融入我们的生活,影响和改变着我们的生活。网络提供给我们的不仅是一个获取信息的的来源,而且还是一个可以相互交流的空间,网上论坛正是一种供人们进行交流的网络空间。论坛又名BBS,全称为Bulletin Board System(电子公告板)。它是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富又及时的电子信息服务系统。用户在BBS站点上可以获得各种信息服务、发布信息、进行讨论、聊天等等。像日常生活中的黑板报一样,论坛按不同的主题分为许多版块,版面的设立依据是大多数用户的要求和喜好,用户可以阅读别人关于某个主题的看法,也可以将自己的想法毫无保留地贴到论坛中。BBS是目前Internet上一种主要的信息交流和发布的平台。随着网络的普及,各种各样的论坛大量出现,功能也越来越丰富,商业网站也开始重视论坛的作用,希望利用论坛达到与网民和用户交流的目的。因此论坛建设在Internet应用上的地位显而易见,它已成为现代人沟通和获取信息的重要组成部分,从而倍受人们的重视。网络论坛系统注册用户 用户登陆注册登陆浏览帖子发新帖回帖数据库管理管理用户和帖子登陆浏览帖子发新帖回帖数据库管理管理用户和帖子第二章 需求分析21 功能需求2.1.1 注册模块用户注册时只需将自己的用户名和密码填入即可无需验证,但是用户名不得与已经注册的用户相同。2.1.2 登陆模块已注册用户要正确输入自己的用户名和密码才能进入系统;如果输入的用户名和密码都正确则成功登陆,如果用户名和密码其中有一项输入不正确则登陆失败,并出现错误提示页面,要求输入正确的用户名或密码。2.1.3 论坛管理模块由于本系统没有后台管理界面,因此对于论坛的创建、修改、删除只能由管理员通过直接对数据库的操作完成。2.1.4 帖子管理模块已注册用户登陆到论坛主页,可进行浏览帖子、发表新帖、回帖的操作除了具有与会员相同的权限外,还能通过操作后台数据库对帖子进行增、删、改操作。匆匆过客只能浏览帖子,不能发表新帖及回帖。22 运行环境需求2.2.1 系统软件的建议配置一个好的系统必然有一个相对最优的系统配置方案。系统配置要根据用户的实际情况设计,主要依据就是系统的吞吐量和系统相对稳定性的要求。软件配置主要包括数据库的选择和操作系统的选择。具体如下表所示:软件名称要求操作系统Windows 2003WEB服务器Tomcat6.0数据库MySqlJDKJDK5.0Web浏览器Microsoft Internet Explorer7.0开发平台myeclipse2.2.2 系统硬件的建议配置硬件名称要求CPU使用586或更高级别的处理器内存128M或更高硬盘80G以上显示器VGA显示器分辨率1024 * 768以上只是基本的配置,建议在运行系统时使用当前中等级以上的计算机,这样配置运行效果为佳。23 界面设计2.3.1 界面操作需求考虑到一个中小型的网络论坛系统有一定的用户量,整个论坛界面整体要美观、简洁和实用,信息显示清晰明白。用户的操作要简易方便,过程简单,不会因操作麻烦而引起严重的错误。2.3.2 界面功能需求注册界面:登陆界面:论坛主页面:浏览帖子和回帖界面:发新帖界面:第三章 开发平台与主要技术31 开发平台本系统的开发平台为MyEclipse6.0+Tomcat6.0+JDK5.03.1.1 MyEclipseMyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。如图3.1MyEclipse是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类: 1. J2EE模型 2. WEB开发工具 3. EJB开发工具 4. 应用程序服务器的连接器 5. J2EE项目部署服务 6. 数据库服务 7. MyEclipse整合帮助 对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。MyEclipse是一个专门为Eclipse设计的商业插件和开源插件的完美结合,MyEclipse为Eclipse提供了一个大量私有和开源的Java工具的集合,很大程度上解决了各种开源工具的不一致和缺点问题,并大大提高了Java和JSP应用开发的效率。MyEclipse的实际价值来自其发布的大量的可视化开发工具和实用组件。3.1.2 TomcatTomcat 服务器是一个免费的开放源代码的Web 应用服务器,可以和大部分主流HTTP服务器一起工作,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。 Tomcat服务器不但支持运行Servlet和JSP而且还具备了作为商业Java Web应用容器的特征,除了能够运行Servlet和JSP外,还具备了作为WEB服务器的特有功能。它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。3.1.3 JDKJDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。它是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。 JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit),是开发Java的应用基础,Eclipse的运行也要依赖它。JDK包含的基本组件包括: 1、javac 编译器,将源程序转成字节码 2、jar 打包工具,将相关的类文件打包成一个文件 3、javadoc 文档生成器,从源码注释中提取文档 4、jdb debugger,查错工具32 主要技术本系统是采用JSP技术和MVC设计模式结合开发的。3.2.1 MVC模式模型一视图一控制器(Model-View-Controller),是一种常用的设计模式,在MVC之前,用户程序的构建往往将这几部分混在一起,而MVC将它们分开了,减弱了业务逻辑接口和数据接口之间的耦合,增加了灵活性和复用性,让视图层更富于变化。MVC设计模式是基于J2EE的WEB应用开发的首选模式。3.2.2 MVC工作原理采用MVC有许多好处,其中一个就是显示、逻辑和数据分开,这样一方面的改变不会影响另一方面,增加了组件的重用性和灵活性。MVC的工作原理如图3.4图3.4 MVC设计模式3.2.3 MVC的核心思想MVC的核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。 1、模型 (Model):业务逻辑层。模型表示应用的数据及操作这些数据的逻辑方法。任何和整个应用有关的持久性数据都应该放在模型中。对于模型,它所提供的API不能只针对某一个专门的视图或控制器,应该更一般化以适应不同客户的需求。2、视图 view):表示层。视图将模型的当前状态展示给用户,具体的显示方法由视图负责,因此一个模型可以适用多个不同的视图。在模型状态改变之后,通过模型和视图之间的协议,视图得知这种改变井修改自己的显示。对于用户的输入,视图将它们交给控制器处理。 3、控制器 (Controller):控制层。控制器起到控制整个业务流程的作用,实现view和Model的协同工作。将用户输入的数据导入模型,它还利用用户的输入将应用转向其它视图。一些非持久的临时数据也应该在视图中存取。33 数据库设计3.3.1 MySQL安装配置3.3.2 数据库的字段第四章 系统实现4.1 数据库的实现4.1.1数据库的连接代码Hibernate.cfg.xml配置jdbc:mysql:/localhost/hjhcom.mysql.jdbc.Driverroot123org.hibernate.dialect.MySQLDialecttrue4.1.2数据库中表的自动生成代码package com;import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;public class ExportDB public static void main(String args) Configuration cfg=new Configuration().configure();SchemaExport export=new SchemaExport(cfg);export.create(true, true);4.1.3数据库中表的操作代码以及相对应的映射文件Message配置文件Comment配置文件User配置文件4.2用户注册接收数据代码:package com;import org.apache.struts.action.ActionForm;public class LoginActionForm extends ActionForm String username=null;String pwd=null;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd = pwd;处理表单数据package com;import java.util.ArrayList;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class loginaction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest req, HttpServletResponse response)throws Exception LoginActionForm laf=(LoginActionForm)form;String username=laf.getUsername();String pwd=laf.getPwd();trySessionFactory sf=new Configuration().configure().buildSessionFactory();Session session=sf.openSession();Transaction tx=session.beginTransaction();String sqlQuery=select u from User u where u.username=+username+;Query lQuery=session.createQuery(sqlQuery);ArrayList userList=(ArrayList )lQuery.list();mit();session.close();User user=new User();if(null!=userList & (userList.size()0) user=(User)userList.get(0); if(!user.getPassword().equals(pwd) return mapping.findForward(error); else return mapping.findForward(error); catch(HibernateException e) e.printStackTrace(); return mapping.findForward(error);HttpSession httpSession=req.getSession();httpSession.setAttribute(username,username); return mapping.findForward(success);用户注册代码:接收数据代码package com;import org.apache.struts.action.ActionForm;public class LoginActionForm1 extends ActionForm private String username1;private String password1;public String getUsername1() return username1;public void setUsername1(String username1) this.username1 = username1;public String getPassword1() return password1;public void setPassword1(String password1) this.password1 = password1;处理数据package com;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class loginaction1 extends Action Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest req, HttpServletResponse response)throws Exception LoginActionForm1 laf=(LoginActionForm1)form;String username1=laf.getUsername1();String password1=laf.getPassword1();Configuration cfg=new Configuration().configure(); SessionFactory sf=cfg.buildSessionFactory(); Session session=null; Transaction t=null; trysession=sf.openSession();t=session.beginTransaction();User user =new User();user.setUsername(username1);user.setPassword(password1); session.save(user); mit();catch(HibernateException e) e.printStackTrace(); return mapping.findForward(success);4.3用户登陆核心代码package com;import org.apache.struts.action.ActionForm;public class LoginActionForm extends ActionForm String username=null;String pwd=null;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd = pwd;4.4新帖发布与回复核心代码public class PostAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException PostForm postForm = (PostForm) form;String mode = request.getParameter(mode);if (new.equalsIgnoreCase(mode) return executeNewAction(mapping, postForm, request, response); else if (newsave.equalsIgnoreCase(mode) return executeNewSaveAction(mapping, postForm, request, response); else if (view.equalsIgnoreCase(mode) return executeViewAction(mapping, postForm, request, response);else if (addcomment.equalsIgnoreCase(mode) return executeAddCommentAction(mapping, postForm, request, response); else if (addcommentdone.equalsIgnoreCase(mode) return executeAddCommentDoneAction(mapping, postForm, request, response); else return executeManageAction(mapping, postForm, request, response);private ActionForward executeNewAction(ActionMapping mapping,PostForm form, HttpServletRequest request,HttpServletResponse response) PostForm postForm = (PostForm) form;postForm.setNewTitle(null);postForm.setNewContent(null);return mapping.findForward(add);private ActionForward executeNewSaveAction(ActionMapping mapping,PostForm form, HttpServletRequest request,HttpServletResponse response) PostForm postForm = (PostForm) form;Message message = new Message();message.setTitle(postForm.getNewTitle();message.setContent(postForm.getNewContent();message.setTime(new Date();HttpSession httpSession = request.getSession();String author = (String)httpSession.getAttribute(username);message.setAuthor(author);SessionFactory sf = new Configuration().configure().buildSessionFactory();Session session = sf.openSession();Transaction tx = session.beginTransaction();session.save(message);mit();session.close();return executeManageAction(mapping, postForm, request, response);private ActionForward executeViewAction(ActionMapping mapping,PostForm form, HttpServletRequest request,HttpServletResponse response) PostForm postForm = (PostForm) form;String hid = request.getParameter(hid);SessionFactory sf = new Configuration().configure().buildSessionFactory();Session session = sf.openSession();Transaction tx = session.beginTransaction();String sqlQuery = select m from Message m where m.title= + hid + ;Query lQuery = session.createQuery(sqlQuery);ArrayList messageList = (ArrayList) lQuery.list();Message message = (Message) messageList.get(0);mit();session.close();postForm.setViewMessage(message);return mapping.findForward(view);private ActionForward executeAddCommentAction(ActionMapping mapping,PostForm form, HttpServletRequest request,HttpServletResponse response) return mapping.findForward(addcomment);private ActionForward executeAddCommentDoneAction(ActionMapping mapping,PostForm form, HttpServletRequest request,HttpServletResponse response) PostForm postForm = (PostForm) form;Comment comment = new Comment();comment.setContent(postForm.getNewComment(); Date time1=new Date();comment.setMessage_id(postForm.getViewMessage().getId();comment.setTime(time1);HttpSession httpSession = request.getSession();String author = (String)httpSession.getAttribute(username);comment.setAuthor(author);SessionFactory sf = new Configuration().configure().buildSessionFactory();Session session = sf.openSession();Transaction tx = session.beginTransaction();String sqlQuery = select m from Message m where m.title= + postForm.getViewMessage().getTitle()+ ;Query lQuery = session.createQuery(sqlQuery);ArrayList messageList = (ArrayList) lQuery.list();Message message = (Message) messageList.get(0);Set commentSet = message.getComment();System.out.println(commentSet.size();commentSet.add(comment);System.out.println(commentSet.size();message.setComment(commentSet);session.save(message);mit();session.close();return executeManageAction(mapping, postForm, request, response);private ActionForward executeManageAction(ActionMapping mapping,PostForm form, HttpServletRequest request,HttpServletResponse response) Po
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南省2025年公务员行测常识判断专项卷
- 初中生演讲稿三分钟青春励志
- 2025年护理服务知识试题及答案
- 2025年天津市公务员考试面试专项训练
- 2025年服务业试题及答案
- 2025年玻璃成型工试题及答案
- 2025年小学二年级语文下学期单元测试
- 2025年土木工程师考试岩土上学期试卷
- 2025防火门采购合同
- 高效利用相对孔径提升图像质量
- 2025年煤矿安全生产管理人员安全资格考试题库及答案
- 重塑医美格局:驾驭中国医美新潮流
- 检验科生物安全培训课件2024
- 加盟瑞幸合伙合同范本
- 医疗器械定期风险评价报告
- 合并财务报表模板案例含抵消分录公式及数据-直接生成报表
- 高填方路基施工危险源辨识及风险评价
- 蛙心起搏点分析医学PPT课件
- 污泥运输合同
- 如何唤醒孩子的内驱力
- 妊娠期急性脂肪肝
评论
0/150
提交评论