




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告课程名称 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原理。四、实验环境电脑主机CPU intel core i5-2450m、RAM 6G,操作系统Windows 7 64位,开发工具Myeclipse8.5,数据库SQL server 2005。五、实验步骤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来实现登录,主题和评论的发表、编辑、删除,控制分页。l PageBusiness.java:控制分页l Forum.java:帖子列表读取l page.java:控制分页l Topic.java:帖子内容读取l TopicVO.java:帖子内容输入输出l DeleteTopicServlet.java:删除帖子l EditTopicServlet.java:编辑帖子l ForumServlet.java:帖子列表l LoginServlet.java:控制登录l NewTopicServlet.java:发表新话题l ReplyTopicServlet.java:添加评论2、通过EncodingFilter.java实现过滤器。3、网站主要JSP页面及其功能如下:l editTopic.jsp:编辑帖子内容l error.jsp:出错信息返回页面l index.jsp:网站首页l Login.jsp:登录页面l login1.jsp:用户登录信息显示l logout.jsp:注销登录l MyJsp.jsp:处理登录请求l newTopic.jsp:发表新话题l pageman.jsp:控制分页l register.jsp:处理注册请求l register1.jsp:注册页面l reply.jsp:添加评论页面l trans.jsp:统一编码转换l viewDetail.jsp:帖子内容l viewForum.jsp:论坛帖子列表4、数据库采用SQL server 2005,主要设计一个数据库,三个数据表,其中数据库名为jspdev,三个数据表为userinf、reply、topic。(1)topic表:用于存储帖子信息,其字段及数据类型如下:说明:l id帖子IDl title标题l author作者l email电子邮件l content内容l pubtime发表时间(2)topic:用于存储用户信息,其字段及数据类型如下:说明:l uname用户名l upwd用户密码l uemail电子邮件l usex性别l ubirthday出生日期(3)reply表:用于存储帖子评论信息,其字段及数据类型如下:l id评论IDl topicId:主题IDl title标题l author作者l email电子邮件l content内容l pubtime评论时间5、对web.xml进行过滤器和servlet配置,如下图所示:6、包含的驱动程序有pager-taglib.jar和sqljdbc4.jar,其中pager-taglib.jar用于分页,sqljdbc4.jar用于连接SQL server 2005数据库均放置于/WEB-INF/lib文件夹下;7、在images文件夹和include文件夹里分别存放的是背景图片、javascript和css文件;8、网站总体结构图如下图所示:八、实验结论在本次实验中,遇到有不少的问题,整个论坛所涉及的知识比较多且比较难,通过不断的查阅资料和与他人交流最后才解决问题,其中我认为遇到比较棘手的问题有:1、 web.xml文件的配置。曾经在配置文件中打少了一个符号,导致整个网站都出错,最后逐一排查才发现此错误,时间浪费了不少;2、 在数据库连接的方式上我选择了JDBC,对于这种连接方式,最重要的是驱动程序要对应,书本上的代码均基于SQL server 2000,其驱动程序为msbase.jar、mssqlserver.jar、msutil.jar,而对于SQL server 2005,其驱动程序仅需一个sqljdbc4.jar,同时在编程过程中,SQL server 2000对应的驱动类是com.microsoft.jdbc.sqlserver.SQLServerDriver,而SQL server 2005的驱动类是com.microsoft.sqlserver.jdbc.SQLServerDriver;3、 任何一个细节都要认真注意,在连接数据库的过程中,驱动已配置完成,程序运行却提示异常,最后发现是在某条SQL语句上写少了一个引号,可见在编程中一个小小的错误都能导致不可估量的错误;总的来说,本次实验是在不断地发现错误和不断地解决错误的过程中艰苦完成的过程,过程虽艰辛,但最后还是完成了整个论坛的实验,也学习和巩固了不少的知识。附源代码:/PageBusiness.java(NMBBS2srcbusiness)package business;import java.sql.*;import java.sql.ResultSet;import javabean.page;public abstract class PageBusiness java.util.Vector v ;public abstract int getAvailableCount()throws Exception;public java.util.Vector getResult()throws Exceptionreturn v;protected final int getAvailableCountHelper(Connection conn,String tableName)throws Exception/int re=0;Statement stmt=conn.createStatement();String strSql=select count(*) from +tableName;ResultSet rs=stmt.executeQuery(strSql);while(rs.next()re=rs.getInt(1);return re;public abstract page listDate(String page)throws Exception;/EncodingFilter.java(NMBBS2srcfilter)package filter;import javax.servlet.FilterChain;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.http.HttpServletRequest;import javax.servlet.ServletException;import javax.servlet.FilterConfig;public class EncodingFilter implements Filter protected FilterConfig filterConfig; private String targetEncoding = gb2312; public void init(FilterConfig config) throws ServletException this.filterConfig = config; this.targetEncoding = config.getInitParameter(encoding); public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException HttpServletRequest request = (HttpServletRequest)srequest; request.setCharacterEncoding(targetEncoding); chain.doFilter(srequest,sresponse); public void setFilterConfig(final FilterConfig filterConfig)this.filterConfig=filterConfig; public void destroy()this.filterConfig=null;/Forum.java(NMBBS2srcjavabean)package javabean;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import java.util.Vector;import ernal.recompile;import business.*;import javabeanVO.*;import javabean.*;public class Forum extends PageBusinessjava.util.Vector v ;private Connection conn;public Forum()throws Exceptionsuper();tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)conn=DriverManager.getConnection(jdbc:sqlserver:/:1433;DatabaseName=jspdev,sa,);v=new Vector();public int getAvailableCount()throws Exceptionreturn this.getAvailableCountHelper(conn,topic);public Vector getResult()throws Exception return v;Overridepublic page listDate(String page) throws Exception try page pagebean=new page(this);int pageNum=Integer.parseInt(page);Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(select top +pageNum*pagebean.rowsPerPage+ * from topic order by pubtime);int i=0;while(rs.next()if(i(pageNum-1)*pagebean.rowsPerPage-1)Object obj=new Object4;obj0=rs.getString(title);obj1=rs.getString(author);obj2=rs.getString(pubtime);obj3=rs.getString(id);v.add(obj);i+;rs.close();stmt.close();conn.close();pagebean.curPage=pageNum;pagebean.data=v;return pagebean;catch(Exception e)e.printStackTrace();throw e;/page.java(NMBBS2srcjavabean)package javabean;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.util.Vector;import javabean.Forum;import business.PageBusiness;public class page public int curPage;public int maxPage;public int maxRowCount;public int rowsPerPage=5;public java.util.Vector data;public page()public void countMaxPage()if(this.maxRowCount%this.rowsPerPage=0)this.maxPage=this.maxRowCount/this.rowsPerPage;elsethis.maxPage=this.maxRowCount/this.rowsPerPage+1;public Vector getResult() throws Exceptionreturn this.data;public page(PageBusiness pageBusiness)throws Exceptionthis.maxRowCount=pageBusiness.getAvailableCount();this.data=pageBusiness.getResult();this.countMaxPage();/Topic.java(NMBBS2srcjavabean)package javabean;import java.util.*;import java.sql.*;import javabeanVO.TopicVO;public class Topic Connection con;public Topic()throws Exceptionsuper();public TopicVO getTopic (String topicId)throws ExceptiontryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)/*if(con.isClosed()*/ con =DriverManager.getConnection(jdbc:sqlserver:/:1433;DatabaseName=jspdev,sa,);Statement stmt=con.createStatement();ResultSet rs=stmt.executeQuery(select * from topic where id=+topicId+);TopicVO top=new TopicVO();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();return top;public TopicVO getReply(String replyId)throws ExceptiontryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)/*if(con.isClosed()*/ con =DriverManager.getConnection(jdbc:sqlserver:/:1433;DatabaseName=jspdev,sa,);PreparedStatement stmt=con.prepareStatement(select * from reply where id=?);stmt.setString(1, replyId);ResultSet rs=stmt.executeQuery();TopicVO top=new TopicVO();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();return top;public Collection getReplys(String topicId)throws ExceptiontryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)/*if(con.isClosed()*/ con =DriverManager.getConnection(jdbc:sqlserver:/:1433;DatabaseName=jspdev,sa,);PreparedStatement stmt=con.prepareStatement(select * from reply where topicId=?);stmt.setString(1, topicId);ResultSet rs=stmt.executeQuery();Collection re=new ArrayList();if(rs.next()TopicVO top=new TopicVO();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);re.add(top);rs.close();stmt.close();con.close();return re;/TopicVO.java(NMBBS2srcjavabeanVO)package javabeanVO;import java.util.Date;public class TopicVO implements java.io.Serializableprivate String id;private String title;private String author;private String content;private String email;private java.util.Date pubtime;private String topicId;public String getTopicId() return topicId;public void setTopicId(String topicId) this.topicId = topicId;public Date getPubTime() return pubtime;public void setPubTime(Date pubtime) this.pubtime = pubtime;public String getContent() return content;public void setContent(String content) this.content = content;public String getTitle() return title;public void setTitle(String title) this.title = title;public String getAuthor() return author;public void setAuthor(String author) this.author = author;public void setEmail(String email) this.email = email; public String getEmail() return email;public String getId() return id;public void setId(String id) this.id = id;/DeleteTopicServlet.java(NMBBS2srcservlet)package servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.*;import javabean.Forum;import javabean.page;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import business.PageBusiness;public class DeleteTopicServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setCharacterEncoding(GBK);tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)tryString id=request.getParameter(id);String type=request.getParameter(type);String sql=;if(type.equals(reply)sql=delete from reply where id=+id+;else sql=delete from reply where topicId=+id+;delete from topic where id=+id+;Connection con=DriverManager.getConnection(jdbc:sqlserver:/:1433;DatabaseName=jspdev,sa,);Statement stmt=con.createStatement();stmt.executeUpdate(sql);stmt.close();PageBusiness p=new Forum();page pageCtl=p.listDate(1);request.setAttribute(pageCtl, pageCtl);catch(Exception e)e.printStackTrace();javax.servlet.RequestDispatcher dis=request.getRequestDispatcher(viewForum.jsp);dis.forward(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setCharacterEncoding(GBK);doGet(request,response);/EditTopicServlet.java(NMBBS2srcservlet)package servlet;import business.*;import javabean.Forum;import javabean.page;import javax.servlet.http.*;import java.sql.*;import java.io.*;public class EditTopicServlet extends javax.servlet.http.HttpServletpublic void doGet(HttpServletRequest request,HttpServletResponse response)throws javax.servlet.ServletException,java.io.IOExceptionresponse.setCharacterEncoding(GBK); try String type=request.getParameter(type); String id=request.getParameter(id); String title=request.getParameter(title); String author=request.getParameter(author); String email=request.getParameter(email); String content=request.getParameter(content); String sql=; if(type.equals(topic) sql=update topic set title=+title+,author=+author+,email=+email+,content=+content+ where id=+id+; else sql=update reply set title=+title+,author=+author+,email=+email+,content=+content+ where id=+id+; tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch(ClassNotFoundException e) Connection con =DriverManager.getConnection(jdbc:sqlserver:/:1433;DatabaseName=jspdev,sa,); Statement stmt=con.createStatement(); stmt.executeUpdate(sql); stmt.close(); con.close(); PageBusiness pb=new Forum(); page pageCtl = pb.listDate(1); request.setAttribute(pageCtl,pageCtl); catch(Exception e) e.printStackTrace(); javax.servlet.RequestDispatcher dis=request.getRequestDispatcher(viewForum.jsp); dis.forward(request,response); public void doPost(HttpServletRequest request,HttpServletResponse response)throws javax.servlet.ServletException,java.io.IOExceptionresponse.setCharacterEncoding(GBK);doGet(request,response);/ForumServlet.java (NMBBS2srcservlet)package servlet;import java.io.IOException;import java.io.PrintWriter;import javabean.Forum;import javabean.page;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import business.PageBusiness;public class ForumServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setCharacterEncoding(GBK);response.setContentType(text/html);PrintWriter out = response.getWriter();tryPageBusiness p=new Forum();page pageCtl=p.listDate(String)request.getParameter(jumpPage);request.setAttribute(pageCtl, pageCtl);catch(Exception e)e.printStackTrace();javax.servlet.RequestDispatcher dis=request.getRequestDispatcher(viewForum.jsp);dis.forward(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setCharacterEncoding(GBK);doGet(request,response);/LoginServlet.java (NMBBS2srcservlet)package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.sql.*;public class LoginServlet extends HttpServlet public LoginServlet() super();public void doGet(HttpServletRequest
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025春季新疆石河子大学第一附属医院、石河子大学附属中医医院(兵团中医医院)校园招聘同工同酬52人模拟试卷附答案详解(考试直接用)
- 政务面试考试题库及答案
- 青海数学考试卷子及答案
- 2025年锅炉水处理作业人员(特种作业)考试题库及答案
- 汇川培训考试题目及答案
- 2025年广西行政执法人员执法证考试题库及答案
- 行为药理学考试题及答案
- 承德教资考试题目及答案
- 正衡中学分班考试题及答案
- 软通动力c语言笔试题及答案
- 船员技能评估体系-洞察及研究
- 中职手工课课件
- 2025至2030中国军用降落伞行业运营态势与投资前景调查研究报告
- 孕妇孕期心理健康管理策略
- 血尿临床评估与健康管理
- 毕业设计(论文)-芦苇草方格铺设装置设计
- 教育惩戒培训课件
- 期末教学质量分析会校长讲话:把脉找因、沉心补课教学质量没有“回头路”
- 调经补血中药液行业跨境出海项目商业计划书
- 手术后疼痛评估与护理团体标准
- 五金公司质量管理制度
评论
0/150
提交评论