毕业设计(论文)JSP论坛系统设计.doc

上传人:laozhun 文档编号:3976705 上传时间:2023-03-30 格式:DOC 页数:24 大小:581.50KB
返回 下载 相关 举报
毕业设计(论文)JSP论坛系统设计.doc_第1页
第1页 / 共24页
毕业设计(论文)JSP论坛系统设计.doc_第2页
第2页 / 共24页
毕业设计(论文)JSP论坛系统设计.doc_第3页
第3页 / 共24页
毕业设计(论文)JSP论坛系统设计.doc_第4页
第4页 / 共24页
毕业设计(论文)JSP论坛系统设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《毕业设计(论文)JSP论坛系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)JSP论坛系统设计.doc(24页珍藏版)》请在三一办公上搜索。

1、目录目录1摘要2Abstract3第一章 引言4第二章 JSP技术42.1什么是JSP42.3 JSP的工作原理42.4 JSP的组成元素52.5 JSP开发WEB应用的两种模型5第三章JSP中对数据库的操作63.1JavaBean:firm文件73.2:注册数据库驱动程序73.3.建立数据库连接83.4 数据操作83.5关闭8第四章 使用jsp开发论坛84.1环境准备84.2后台数据库的建立94.3模块功能的实现114.3.1注册用户论坛模块114.3.2管理员模块16第五章系统存在问题及前景展望225.1系统存在问题225.2前景展望23参考文献:24摘要随着现代计算机科学的发展,计算机信

2、息系统越来越受到重视,网络已经成为人们交流信息的重要方式,所以基于网络平台的各种系统不断出现,网上论坛已经成为人们交流的一种重要工具。本文首先介绍开发工具JSP,接着介绍了JSP的数据访问技术,最后详细讲解了用JSP开发的论坛,这一部分主要包括数据库的建立和系统模块功能的实现,最后说明了系统存在问题和前景展望。关键词:论坛,数据库,JSP技术AbstractAlong with the modern computer science development, the computer information system is more and more important, the netw

3、ork already became the people to exchange the information important way, therefore appeared systems that based on network platform, on the net the forum already became one kind of important tool which the people exchanged. The first presentation development tool JSP, and then introduced the JSP data

4、 access technologies, finally in detail explained development the online shop system using JSP. This part including database creation and the system function realization. Finally expound the matter and shortage of the system, in order to ameliorate better in the future.Keywords: BBS, The Data Base,

5、JSP Technology第一章 引言随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,在众多的网络服务中,Web给人耳目一新的感觉,而在这其中,网络已经日渐普及,任何人可以在网络所提供的平台上进行自由的交流,网上论坛为人们提供了一种很好的交流方式。而在众多网络开发技术中,JSP技术是当前相当较为流行的,它可以进行复杂的数据库操作、很强的交互性以及方便用户控制管理,使它成为开发论坛的主要技术之一。这套论坛系统正是当今技术发展的产物,它是一套用JSP开发的能在网上方便注册用户进行的交流的系统,有完善的功能,为用户提供了一个良好的交流平台,本文主要阐述的

6、就是使用JSP技术开发论坛系统。第二章 JSP技术2.1什么是JSPJSP是指Java Server Pages,它是由Sun微系统公司于1999年6月推出的一项技术,是基于JavaServlet以及整个java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。JSP技术是J2EE的一个关键技术,它在更高一级的层次上抽象Servlet。它可以让常规静态HTML与动态产生的内容相结合,看起来像一个HTML网页,却作为Servlet来运行。现在有许多商业应用服务器支持JSP技术,比如BEA WebLogic、IBM WebSphere、 JRun等等。使用JSP比用Servl

7、et更简单。如果你有一个支持JSP的Web服务器,并且有一个JSP文件,你可以把它放倒任何静态HTML文件可以放置的位置,不用编译,不用打包,也不用进行ClassPath的设置,就可以像访问普通网页那样访问它,服务器会自动帮你做好其他的工作。2.2 JSP 与 ASP 的简单比较 JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP

8、页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 和 JSP 都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。 ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是 Java ,这是两者最明显的区别。此外, ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第

9、一次请求时发生。2.3 JSP的工作原理JSP可以通过应用服务器使其内容(如HTML标记,JSP标记和script)转变成servlet。这个过程就是把JSP文件声明的动态元素和静态元素转变成JAVA servlet,使其内容从WEB服务器的输出流送到浏览器上。工作过程如下:(如下图)1、 WEB 浏览器查询JSP页面。2、 JSP引擎解释JSP文件内容。3、 JSP引擎在JSP文件内容上创建临时的serlvet源代码,产生的servlet除了创建页面的动态元素,还负责显示在设计阶段说明的JSP静态元素。4、 JAVA编译器把Servlet源代码编译成servlet类文件。5、 Servlet

10、实例化。6、 静态的HTML页面和图像与在JSP页面中声明的动态元素相结合,通过servlet返回对象的输出流送到web浏览器。2.4 JSP的组成元素JSP由标准的HTML标记和JSP标记组成。JSP标记可以分成以下几类:l 指令:SP指令是发往JSP引擎的全局定义,使得任何对JSP页面的特定请求都保持有效。指令总是出现在JSP文件的顶部,在任何其它JSP标记之前。l 声明:一个声明块包含从JSP文件中的expression块调用的JAVA变量和方法。声明块中的代码通常使用JAVA编写,也可以是其它脚本语言。l Scriptlet:JSP可以利用Scriptlet块在JSP中嵌入JAVA代码

11、段。Scriptlet用于在JSP页面中嵌入一段小的代码块,而不是像声明块那样声明整个方法。l 注释:有2中类型的注释。一种是输出注释,能够出现在浏览器的输出流中的。另一种是不会在输出流中出现。l 表达式:它是Scriptlet的片断,它的结果能够转化成字符串对象而且作为输出流在浏览器中显示。2.5 JSP开发WEB应用的两种模型JSP技术规范种给出了两种使用JSP开发Web应用的方式,这两种方式可以归纳为模型一和模型二,这两种模型的主要差别在于它们处理业务的流程不同。模型一,如下图所示,称之为JSP+JavaBeans模型。在这一模型中,JSP页面独自响应请求并将处理结果返回给客户,所有的数

12、据通过JavaBean来处理,JSP实现页面的表现。图: JSP模型一从上图可以看出,模型一也实现了页面表现和业务逻辑相分离。然而使用这种方式就要在JSP页面使用大量的Java代码,当需要处理的业务逻辑很复杂时,这种情况会变得非常糟糕。大量嵌入式代码使整个页面程序变得异常复杂。对于前端界面设计的网页开发人员来说,这简直是一场噩梦。所以,模型一不能满足大型应用的需要,但是对于小型应用,因为该模型简单,不用涉及诸多要素,从而可以很好地满足小型应用的需要,所以在简单应用中,可以考虑模型一。模型二,如下图所示,称之为JSP+Servlet+JavaBeans模型。这一模型结合了JSP和Servlet技

13、术,充分利用了JSP和Servlet两种技术原有的优势。这个模型使用JSP技术来表现页面,使用Servlet技术完成大量的事务处理,使用Bean来存储数据。Servlet用来处理请求的事务,充当一个控制者的角色,并负责向客户发送请求。它创建JSP需要的Bean和对象,然后根据用户请求的行为,决定将哪个JSP页面发送给客户。图: JSP模型二从开发的观点看,模型二具有更清晰的页面表现,清楚的开发角色的划分,可以充分利用开发团队中的网页设计人员和Java开发人员。这些优势在大型项目中表现得尤为突出,网页设计人员可以充分发挥自己的美术和设计才能来充分表现页面,程序编写人员可以充分发挥自己的业务逻辑处

14、理思维,实现项目中的业务处理。第三章JSP中对数据库的操作数据库连接数据库连接对动态网站来说是最为重要的部分,从JSP中访问数据通常是通过Java Bean来实现的。Java中连接数据库的技术是JDBC(Java Database Connectivity)。很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等等操作。Sun公司还开发了JDBC-ODBC bridge,用此技术Java程序就可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MSSQL Ser

15、ver和MS Access等数据库。3.1JavaBean:firm文件JavaBeans 是基于java的组件模型,由属性,方法和事件3个部分组成。在该模型中,Javabeans可以被修改或与其他组件结合生成新组件或完成的程序。它是一种Java类,通过封装成为具有某种功能或者处理某个业务的对象。因此,也可以通过嵌在 JSP页面内的Java代码访问Bean及其方法。Bean的含义是可重复使用的Java组件。所谓组件就是一个由可以自行进行内部管理的一个或几个类所组成,外界了解其内部信息和运行方式的群体。使用它的对象只能通过接口来操作。 Bean实际上是根据JavaBeans技术标准所指定的Bea

16、n的命名和设计规范而编写的Java类。Bean并不需要继承特别的基类(base class)或事项特定的接口(Interface)。JavaBeans1.01-A规范定义了该组件的5种重要的机制:1:内省(Introspection):组件可发表其支持的操作和属性,同时也支持在其他组件中发现重复利用的对象库,例如用户权限和电子自动回复等。2:通信(Communication):生成和收集组件的消息事件3:持续(Persistence):存放组件的状态。4:属性(Properties):支持组件布局的控制,包括组件占用的空间和组件的相对位置。5:定制(Customization):开发者可控制组

17、件所需的改变机制。Javabeans可实现在设计平台被规定的操作,一般可表示为简单的图形界面,如按钮,光标和菜单等,也可以是不可见的接受并处理事件的操作,如数据库连接Bean。JSP吸引人之处很大程度上在于它使用了Javabeans组件技术,但JSP中只支持不可见的Javabeans。 创建一个简单的数据库连接Bean需要5个步骤:导入JDBC标准类库,注册数据库驱动程序,建立数据库连接,数据库操作和关闭。导入JDBC标准类库JDBC(Java DataBase Connectivity, Java数据库连接)是一种可用于执行SQL(Structured Query Language ,结构化

18、查询语言)语句的应用程序接口,为了将服务器从客户端接受信息存入数据库,需要使用JDBC标准类库,所以需要在程序的开始加入以下import语句: Import java.sql.*;3.2:注册数据库驱动程序在一个JDBC的驱动程序被用来建立数据库连接之前,必须向数据库驱动程序管理器注册该驱动程序。管理器的主要职责是保证所有的驱动程序对象可被JDBC的用户程序访问。当一个JDBC驱动程序被载入时,它将自动地在驱动程序管理器上注册。可以调用Class.forName()方法载入一个JDBC驱动程序:String strDBDriver=sun.jdbc.odbc.JdbcOdbcDriver;Cl

19、ass.forName(“strDBDriver ”); Class.forName()是Java的Class类的静态方法,它使Java虚拟机动态的寻找,载入并连接指定的类。一个JDBC的驱动程序就是一个可以通过classpath找到一个Java类。这里载入的JDBC_ODBC桥驱动程序就在sun.jdbc.odbc包中3.3.建立数据库连接载入一个正确的驱动程序后,就可以用它来建立与数据库的连接了。一个JDBC的数据库连接是用数据库URL来标记的。连接标记将告诉驱动程序管理器使用哪个驱动程序和连接哪个数据库。数据库URL的基本形式:jdbc::URL的第一部分表示使用JDBC建立数据库连接。

20、第2部分表示所使用的JDBC驱动程序名或网络协议名。第3部分是数据源标记,它映射所需连接的数据库。例如数据库的数据源标记是firm则同JDBC-ODBC桥连接该数据库所用的数据库URL为jdbc:odbc:firm.可以通过DriverManager类的静态方法getConnection()来建立一个数据库连接:String strDBUrl=jdbc:odbc:firm;conn=DriverManager.getConnection(strDBUrl,sa,);一旦建立数据库连接,就可以打开该目标数据库,并通过该连接向目标数据库SQL指令。SQL指令通常会执行查询,插入,更新和删除等数据库

21、操作。要执行SQL指令,必须通过Connection对象的createStatement()方法来创建一个STMT对象。STMT对象提供了许动方法来执行不同的数据库操作。可以 通过以下方式创建STMT对象:private Connection conn=null;private Statement stmt=null;ResultSet rs=null;stmt=conn.createStatement();3.4 数据操作与数据库建立了连接后,接着就要进行数据操作了。数据操作包括查询,插入,更新和删除等操作。要对数据库精心操作可以使用STMT对象的executeQuery()方法。execu

22、teQuery()方法接受一个SQL指令字符串作为参数,返回结果信息是ResultSet对象。具体如下:rs=stmt.executeQuery(sql);3.5关闭因为数据库连接是宝贵和有限的资源,因此必须在数据库操作完毕后即使释放数据库连接。Connection 对象提供了一个简单的关闭数据库连接的方法 close()。例如:conn.close();stmt.close。第四章 使用jsp开发论坛4.1环境准备 为了利用JSP技术,首先需要建立环境,这个过程如下:1、 在2、 在3、 启动则在jswdk-1.0.1目录下执行startserver.bat,就可启动JSWDK中一个支持JS

23、P网页技术的Web服务器。为了不与现有的Web服务器(例如IIS、PWS等)冲突,JSWDK的Web服务器使用了8080端口。4、 在浏览器的地址栏中键入http:/localhost:8080或者http:/127.0.0.1:8080后,如果能看到JSWDK的欢迎页就说明JSP实验环境已经建成,可进入下一步实验。要关闭Web服务器则运行stopserver.bat。4.2后台数据库的建立利用数据库原理相关知识,对数据库设计和每个模块、每个界面的具体设计。此系统采用的数据库软件是Microsoft Access。进行分析设计后,应该用Access建立5张表。下面例举了5张表的结构信息,具体见

24、如下表1表5。字段名称数据类型说明公告id自动编号自动编号公告标题备注公告标题公告内容备注公告内容公告时间日期/时间公告时间表1 公告表字段名称数据类型说明论坛id自动编号自动编号论坛名称文本论坛名称创建时间日期/时间创建时间版主姓名文本版主姓名版主密码文本版主密码贴子数量数字贴子数量主题数量数字主题数量最后发表人文本最后发表人最后发表时间日期/时间最后发表时间表2 公告栏目表字段名称数据类型说明贴子id自动编号自动编号版块id数字版块id回复id数字回复id贴子名称文本贴子名称贴子内容备注贴子内容发表日期日期/时间发表日期贴子作者文本贴子作者点击次数数字点击次数回复次数数字回复次数贴子长度文

25、本贴子长度显示签名数字显示签名贴子图片文本贴子图片IP地址文本IP地址回复用户文本回复用户回复时间日期/时间回复时间表3 帖子表字段名称数据类型说明在线id文本在线id在线用户名文本在线用户名在线开始时间日期/时间在线开始时间在线后面时间日期/时间在线后面时间在线最后时间文本在线最后时间在线IP地址文本在线IP地址表4在线表字段名称数据类型说明用户id自动编号自动编号用户名文本用户名用户密码文本用户密码用户性别文本用户性别用户邮箱文本用户邮箱手机号码文本手机号码居住地址文本居住地址Oicq文本Oicq出生日期文本出生日期用户图像文本用户图像签名文本签名发贴次数数字发贴次数访问次数数字访问次数用

26、户等级文本用户等级注册日期日期/时间注册日期是否在线文本是否在线认证身份文本认证身份表5用户表4.3模块功能的实现4.3.1注册用户论坛模块进入主页可以看到,该主页展现了该论坛的主要功能,论坛内容以板块类别进行显示,但用户需要登陆后才能进行发帖功能。如下图 显示公告的代码:0)/ while (rs.next()&(i5) String Time=rs.getString(公告时间); Time=Time.substring(5,16); Notice=+rs.getString(公告标题)+:+rs.getString(公告内容)+ +Time+   

27、+Notice; i+; out.println(Notice);%显示论坛列表的代码如下:%sql=SELECT * FROM 论坛栏目;rs=stmt.executeQuery(sql);while (rs.next()String Time_Str=rs.getString(最后发表时间); String Man_Str=rs.getString(最后发表人); String Forum_id=rs.getString(论坛id); String Forum_Mastor=rs.getString(版主姓名);if (Man_Str=null) Man_Str=无;elseMan_Str

28、=+Man_Str+;if (Forum_Mastor=null)|(Forum_Mastor.equals() Forum_Mastor=招骋中.;elseForum_Mastor=+Forum_Mastor+;%论坛必须要注册用户登陆才能使用其完整功能,未注册用户可以点击注册进行用户注册,如下图:判断注册资料是否合法的代码如下:!- function CheckValue()/检查标题内容是否为空值 var name=document.all.name.value; var re=/( )/gi name=name.replace(re,) re=/gi name=name.replace

29、(re,<) if(name=|name.length1) alert(用户名不能为空); document.all.name.focus(); return false; document.all.name.value=name; TheText=document.all.email.value; var re=/( )/gi TheText=TheText.replace(re,) if(TheText=) alert(E_Mail地址不能为空); document.all.email.focus(); return false; if (form1.mobile.value!=)

30、if(checkNumber1(form1.mobile.value)=false)return false; if (form1.oicq.value!=) if(checkNumber2(form1.oicq.value)=false)return false; return true;function checkNumber1(TempS) for(Count=0;CountTempS.length;Count+) TempChar=TempS.substring(Count,Count+1); RefString=0123456789; if (RefString.indexOf(Te

31、mpChar,0)=-1) alert(手机号码有非法字符,请输入数字); form1.mobile.focus(); return false; function checkNumber2(TempS) for(Count=0;CountTempS.length;Count+) TempChar=TempS.substring(Count,Count+1); RefString=0123456789; if (RefString.indexOf(TempChar,0)=-1) alert(OICQ有非法字符,请输入数字); form1.oicq.focus(); return false;

32、注册用户可以进行查看帖子,回复帖子,发新帖子。其中回复和发帖必须注册用户才能使用。发新帖只需要填写发表新帖的文章标题及相关内容后就可以发表,如下图: 相关代码如下:%String Board_id=request.getParameter(fid);String Note_id=request.getParameter(noteid);String Return_id=request.getParameter(Returnid);Connection con=yy.getConn();Statement stmt=con.createStatement(ResultSet.TYPE_SCROL

33、L_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs=null;if (Note_id!=null) sql=Select 贴子内容 from 贴子 Where 贴子id=+Note_id; rs=stmt.executeQuery(sql);while (rs.next() Note_Content=rs.getString(贴子内容);else Note_Content=;if (Note_id!=null)Note_Content=quote+Note_Content +/quote;if (Return_id!=null) sql

34、=Select 贴子名称 from 贴子 Where 贴子id=+Return_id; rs=stmt.executeQuery(sql);while (rs.next() Note_Title=回复:+rs.getString(贴子名称);else Note_Title=;4.3.2管理员模块管理模块是网站管理者专用的,必须登陆后才能使用,登陆后点击管理进入论坛管理模块,如下图对论坛的管理主要分3部分,分别是公告管理,论坛管理,用户管理。默认进入公告管理,如下图从数据库中取出公告数据的代码: PageCount) ShowPage=PageCount; else if(ShowPage0)r

35、s.absolute(ShowPage-1)*PageSize+1);for (int i=1;i a href=manager.jsp?modifyid= a href=manager.jsp?modifyid=修改 a href=querymanager.jsp?deleteid= onclick=if(confirm(确定删除选定的纪录吗?)return true;return false;删除   现在是第 页 转到 %for (int i=1;i=PageCount;i+) out.println( +i+页);%新增公告的代码如下:%String Modify_Id=request.getParameter(modifyid);if (Modify_Id!=null)sql=select * from 公告 where 公告id=+Modify_Id;rs=stmt.executeQuery(sql);while(rs.next() Not_Title=rs.getString(公告标题); Not_Content=rs.getStri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号