广东商学院 web开发实验项目六 Web数据库开发实验Web.docx

上传人:b****6 文档编号:12960895 上传时间:2023-06-09 格式:DOCX 页数:68 大小:1.64MB
下载 相关 举报
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第1页
第1页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第2页
第2页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第3页
第3页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第4页
第4页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第5页
第5页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第6页
第6页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第7页
第7页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第8页
第8页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第9页
第9页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第10页
第10页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第11页
第11页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第12页
第12页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第13页
第13页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第14页
第14页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第15页
第15页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第16页
第16页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第17页
第17页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第18页
第18页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第19页
第19页 / 共68页
广东商学院 web开发实验项目六 Web数据库开发实验Web.docx_第20页
第20页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

广东商学院 web开发实验项目六 Web数据库开发实验Web.docx

《广东商学院 web开发实验项目六 Web数据库开发实验Web.docx》由会员分享,可在线阅读,更多相关《广东商学院 web开发实验项目六 Web数据库开发实验Web.docx(68页珍藏版)》请在冰点文库上搜索。

广东商学院 web开发实验项目六 Web数据库开发实验Web.docx

广东商学院web开发实验项目六Web数据库开发实验Web

实验报告

课程名称Web开发技术

实验项目名称实验项目六

Web数据库技术开发实验

班级与班级代码(2012-2013-1)-113283-11006-2

实验室名称(或课室)实验楼403

专业2010信息管理与信息系统1班

任课教师傅清波

学号:

姓名:

实验日期:

2012年11月27日

广东商学院教务处制

姓名实验报告成绩

评语:

项目等级

评分

实验态度(10)

对实验内容积极准备,认真预习,无迟到早退现象。

对实验内容有所准备、预习,无迟到早退现象。

对实验内容无准备、预习,有迟到早退现象。

 

实验原理(10)

对相关技术原理理解正确,知识掌握充分。

对相关技术原理和知识能够正确理解。

对相关技术原理和知识不理解。

 

操作结果(10)

能够按照正确的实验步骤进行操作,并得出正确的实验结果。

全部完成,正确率90%以上。

能够按照正确的实验步骤进行操作,并得出正确的实验结果。

正确率70%以上。

实验操作步骤有误,实验结果正确率60%以下。

 

实验分析(40)

对思考分析题能进行正确的实验验证,正确率90%以上。

对思考分析题能进行正确的实验验证,正确率70%以上。

对思考分析题有实验验证,正确率60%以下。

 

实验总结(20)

对相关技术重点难点问题解决能够深刻领会,举一反三,感受真实。

对相关技术重点难点问题解决能够领会,感受真实。

对相关技术重点难点问题认识模糊,感受不真实。

 

报告格式(10)

格式规范,组成部分完整,内容充实。

格式规范,组成部分完整。

格式不规范,组成部分不完整。

 

实验成绩

 

 

 

 

 

指导教师(签名)

年月日

说明:

指导教师评分后,实验报告交院(系)办公室保存。

实验项目六Web数据库技术开发实验

论坛开发

一、实验目的

1、掌握JDBC技术开发方法;

2、掌握JavaBean开发方法;

3、掌握Servlet实际应用开发方法;

4、熟悉JSP的技术应用。

二、实验内容

参照书中第28章内容,开发一个简单的论坛系统。

三、实验原理

JDBC基本操作原理、JavaBean原理和Servlet原理。

四、实验环境

电脑主机CPUintelcorei5-2450m、RAM6G,操作系统Windows764位,开发工具Myeclipse8.5,数据库SQLserver2005。

五、实验步骤

1、建立一个web工程,工程名是“NMBBS2”;

2、编写用于登录、发表新话题、发表新回复、显示论坛内容、对主题进行分页显示、过滤器以及servlet;

3、调试本地数据库,创建相对应的数据库和数据表,配置对应的驱动包;

4、编写相应的JSP页面,包括首页、注册、登录、查看帖子、帖子内容、发表及回复页面等。

5、配置web.xml文件,进行网站布局与美化;

6、进行最终调试,发现问题并解决。

六、实验结果

经过调试与修改,最终得到的实验结果如下:

1、论坛首页:

图1:

论坛首页

2、注册页面及注册成功页面:

图2:

注册页面

图3:

注册成功返回信息页面

3、登录页面及登录成功后的首页:

图4:

登录页面

图5:

登录成功后的首页

4、发表新话题页面

图6:

发表新话题页面

 

5、论坛帖子列表界面:

图7:

论坛帖子列表界面

图8:

论坛帖子列表界面——分页效果

图9:

论坛帖子列表界面——删除一个话题后

6、帖子内容界面:

图10:

帖子具体内容界面

图11:

帖子具体内容页面以及评论

七、实验分析

1、在本次实验中,用javabean和servlet来实现登录,主题和评论的发表、编辑、删除,控制分页。

●PageBusiness.java:

控制分页

●Forum.java:

帖子列表读取

●page.java:

控制分页

●Topic.java:

帖子内容读取

●TopicVO.java:

帖子内容输入输出

●DeleteTopicServlet.java:

删除帖子

●EditTopicServlet.java:

编辑帖子

●ForumServlet.java:

帖子列表

●LoginServlet.java:

控制登录

●NewTopicServlet.java:

发表新话题

●ReplyTopicServlet.java:

添加评论

2、通过EncodingFilter.java实现过滤器。

3、网站主要JSP页面及其功能如下:

●editTopic.jsp:

编辑帖子内容

●error.jsp:

出错信息返回页面

●index.jsp:

网站首页

●Login.jsp:

登录页面

●login1.jsp:

用户登录信息显示

●logout.jsp:

注销登录

●MyJsp.jsp:

处理登录请求

●newTopic.jsp:

发表新话题

●pageman.jsp:

控制分页

●register.jsp:

处理注册请求

●register1.jsp:

注册页面

●reply.jsp:

添加评论页面

●trans.jsp:

统一编码转换

●viewDetail.jsp:

帖子内容

●viewForum.jsp:

论坛帖子列表

4、数据库采用SQLserver2005,主要设计一个数据库,三个数据表,其中数据库名为jspdev,三个数据表为userinf、reply、topic。

(1)topic表:

用于存储帖子信息,其字段及数据类型如下:

说明:

●id——帖子ID

●title——标题

●author——作者

●email——电子邮件

●content——内容

●pubtime——发表时间

(2)topic:

用于存储用户信息,其字段及数据类型如下:

说明:

●uname——用户名

●upwd——用户密码

●uemail——电子邮件

●usex——性别

●ubirthday——出生日期

(3)reply表:

用于存储帖子评论信息,其字段及数据类型如下:

●id——评论ID

●topicId:

主题ID

●title——标题

●author——作者

●email——电子邮件

●content——内容

●pubtime——评论时间

5、对web.xml进行过滤器和servlet配置,如下图所示:

6、包含的驱动程序有pager-taglib.jar和sqljdbc4.jar,其中pager-taglib.jar用于分页,sqljdbc4.jar用于连接SQLserver2005数据库均放置于/WEB-INF/lib文件夹下;

7、在images文件夹和include文件夹里分别存放的是背景图片、javascript和css文件;

8、网站总体结构图如下图所示:

八、实验结论

在本次实验中,遇到有不少的问题,整个论坛所涉及的知识比较多且比较难,通过不断的查阅资料和与他人交流最后才解决问题,其中我认为遇到比较棘手的问题有:

1、web.xml文件的配置。

曾经在配置文件中打少了一个符号,导致整个网站都出错,最后逐一排查才发现此错误,时间浪费了不少;

2、在数据库连接的方式上我选择了JDBC,对于这种连接方式,最重要的是驱动程序要对应,书本上的代码均基于SQLserver2000,其驱动程序为msbase.jar、mssqlserver.jar、msutil.jar,而对于SQLserver2005,其驱动程序仅需一个sqljdbc4.jar,同时在编程过程中,SQLserver2000对应的驱动类是com.microsoft.jdbc.sqlserver.SQLServerDriver,而SQLserver2005的驱动类是com.microsoft.sqlserver.jdbc.SQLServerDriver;

3、任何一个细节都要认真注意,在连接数据库的过程中,驱动已配置完成,程序运行却提示异常,最后发现是在某条SQL语句上写少了一个引号,可见在编程中一个小小的错误都能导致不可估量的错误;

总的来说,本次实验是在不断地发现错误和不断地解决错误的过程中艰苦完成的过程,过程虽艰辛,但最后还是完成了整个论坛的实验,也学习和巩固了不少的知识。

附源代码:

//PageBusiness.java(\NMBBS2\src\business)

packagebusiness;

importjava.sql.*;

importjava.sql.ResultSet;

importjavabean.page;

 

publicabstractclassPageBusiness{

java.util.Vectorv;

publicabstractintgetAvailableCount()throwsException;

publicjava.util.VectorgetResult()throwsException{

returnv;

}

protectedfinalintgetAvailableCountHelper(Connectionconn,StringtableName)throwsException{//

intre=0;

Statementstmt=conn.createStatement();

StringstrSql="selectcount(*)from"+tableName;

ResultSetrs=stmt.executeQuery(strSql);

while(rs.next()){

re=rs.getInt

(1);

}

returnre;

}

publicabstractpagelistDate(Stringpage)throwsException;

}

//EncodingFilter.java(\NMBBS2\src\filter)

packagefilter;

importjavax.servlet.FilterChain;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.ServletException;

importjavax.servlet.FilterConfig;

publicclassEncodingFilterimplementsFilter

{

protectedFilterConfigfilterConfig;

privateStringtargetEncoding="gb2312";

publicvoidinit(FilterConfigconfig)throwsServletException{

this.filterConfig=config;

this.targetEncoding=config.getInitParameter("encoding");

}

publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,FilterChainchain)

throwsIOException,ServletException{

HttpServletRequestrequest=(HttpServletRequest)srequest;

request.setCharacterEncoding(targetEncoding);

chain.doFilter(srequest,sresponse);

}

publicvoidsetFilterConfig(finalFilterConfigfilterConfig)

{

this.filterConfig=filterConfig;

}

publicvoiddestroy()

{

this.filterConfig=null;

}

}

//Forum.java(\NMBBS2\src\javabean)

packagejavabean;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.Statement;

importjava.util.Vector;

importcom.sun.org.apache.regexp.internal.recompile;

importbusiness.*;

importjavabeanVO.*;

importjavabean.*;

publicclassForumextendsPageBusiness{

java.util.Vectorv;

privateConnectionconn;

publicForum()throwsException{

super();

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

}

catch(ClassNotFoundExceptione){}

conn=DriverManager.getConnection("jdbc:

sqlserver:

//127.0.0.1:

1433;DatabaseName=jspdev","sa","");

v=newVector();

}

publicintgetAvailableCount()throwsException{

returnthis.getAvailableCountHelper(conn,"topic");

}

publicVectorgetResult()throwsException{

returnv;

}

@Override

publicpagelistDate(Stringpage)throwsException{

try{

pagepagebean=newpage(this);

intpageNum=Integer.parseInt(page);

Statementstmt=conn.createStatement();

ResultSetrs=stmt.executeQuery("selecttop"+pageNum*pagebean.rowsPerPage+"*fromtopicorderbypubtime");

inti=0;

while(rs.next()){

if(i>(pageNum-1)*pagebean.rowsPerPage-1){

Object[]obj=newObject[4];

obj[0]=rs.getString("title");

obj[1]=rs.getString("author");

obj[2]=rs.getString("pubtime");

obj[3]=rs.getString("id");

v.add(obj);

}

i++;

}

rs.close();

stmt.close();

conn.close();

pagebean.curPage=pageNum;

pagebean.data=v;

returnpagebean;

}

catch(Exceptione){

e.printStackTrace();

throwe;

}

}

}

//page.java(\NMBBS2\src\javabean)

packagejavabean;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.Statement;

importjava.util.Vector;

importjavabean.Forum;

importbusiness.PageBusiness;

publicclasspage{

publicintcurPage;

publicintmaxPage;

publicintmaxRowCount;

publicintrowsPerPage=5;

publicjava.util.Vectordata;

publicpage(){

}

publicvoidcountMaxPage(){

if(this.maxRowCount%this.rowsPerPage==0){

this.maxPage=this.maxRowCount/this.rowsPerPage;

}

else{

this.maxPage=this.maxRowCount/this.rowsPerPage+1;

}

}

publicVectorgetResult()throwsException{

returnthis.data;

}

publicpage(PageBusinesspageBusiness)throwsException{

this.maxRowCount=pageBusiness.getAvailableCount();

this.data=pageBusiness.getResult();

this.countMaxPage();

}

}

//Topic.java(\NMBBS2\src\javabean)

packagejavabean;

importjava.util.*;

importjava.sql.*;

importjavabeanVO.TopicVO;

publicclassTopic{

Connectioncon;

publicTopic()throwsException{

super();

}

publicTopicVOgetTopic(StringtopicId)throwsException{

try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}

catch(ClassNotFoundExceptione){}

/*if(con.isClosed())*/con=DriverManager.getConnection("jdbc:

sqlserver:

//127.0.0.1:

1433;DatabaseName=jspdev","sa","");

Statementstmt=con.createStatement();

ResultSetrs=stmt.executeQuery("select*fromtopicwhereid='"+topicId+"'");

TopicVOtop=newTopicVO();

if(rs.next()){

top.setId(rs.getString("id"));

top.setTitle(rs.getString("title"));

top.setContent(rs.getString("content"));

top.setEmail(rs.getString("email"));

top.setAuthor(rs.getString("author"));

top.setPubTime(rs.getDate("pubtime"));

}

rs.close();

con.close();

returntop;

}

publicTopicVOgetReply(StringreplyId)throwsException{

try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}

catch(ClassNotFoundExceptione){}

/*if(con.isClosed())*/con=DriverManager.getConnection("jdbc:

sqlserver:

//127.0.0.1:

1433;DatabaseName=jspdev","sa","");

PreparedStatementstmt=con.prepareStatement("select*fromreplywhereid=?

");

stmt.setString(1,replyId);

ResultSetrs=stmt.executeQuery();

TopicVOtop=newTopicVO();

if(rs.next()){

top.setId(rs.getString("id"));

top.setTopicId(rs.getString("topicId"));

top.setTitle(rs.getString("title"));

top.setContent(rs.getString("content"));

top.setEmail(rs.getString("email"));

top.setAuthor(rs.getString("author"));

top.setPubTime(rs.getDate("pubtime"));

}

rs.close();

con.close();

returntop;

}

publicCollectiongetReplys(StringtopicId)throwsException{

try{Class.forName("c

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

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2