您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > Java-Web综合开发实战:网络留言系统
沈阳化工大学实验报告课程名称JavaWeb项目名称JavaWeb综合开发实战:网络留言系统学院应用技术学院专业1401指导教师李玉红报告人张庭浩学号1422030125实验时间2016.11.24提交时间2016.12.05一、实验目的1.通过实例开发,熟练掌握JSP相关标签的应用2.熟练掌握用SERVLET作为控制器实现用户请求的处理及界面的跳转。二、实验内容采用JSP+Servlet+JavaBean+JDBC方式开发一个网络留言系统。要求:①用户在页面上输入用户名密码登录,成功进入后能看到所有留言信息;②用户可自己添加、编辑留言,提交后可实时看到新增加的留言;③系统提供新用户注册功能;④在【实例三】(2.3.5节)登录程序的基础上修改扩充而成,综合运用JSP/Servlet/JavaBean等JavaWeb开发的基础性技术。三、实验过程1.建立数据库和表这里依然使用先前在SQLServer200812012中创建的数据库TEST及其userTable表,因为系统登录后要有个主界面显示别人和自己的留言信息,故还要有个留言表lyTable用于保存用户留言,如图2.1和2.2。图2.1图2.22.创建JavaEE项目新建JavaEE项目,项目命名为JSPExample。3.创建JDBC在项目src文件夹下建立包org.easybooks.test.jdbc,在包下创建SqlSrvDBConn类(JDBC),并往项目中添加JDBC驱动包,如图2.3.图2.3注:SqlSrvDBConn类代码如下。packageorg.easybooks.test.jdbc;importjava.sql.*;publicclassSqlSrvDBConn{privateStatementstmt;privateConnectionconn;ResultSetrs;//在构造方法中创建数据库连接publicSqlSrvDBConn(){stmt=null;try{/**加载并注册SQLServer2008的JDBC驱动*/Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);conn=DriverManager.getConnection(jdbc:sqlserver://localhost:1433;databaseName=TEST,sa,123456);}catch(Exceptione){e.printStackTrace();}rs=null;}//获取数据连接publicConnectiongetConn(){returnthis.conn;}//执行查询类的SQL语句,有返回集publicResultSetexecuteQuery(Stringsql){try{stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery(sql);}catch(SQLExceptione){System.err.println(Data.executeQuery:+e.getMessage());}returnrs;}//关闭对象publicvoidcloseStmt(){try{stmt.close();}catch(SQLExceptione){System.err.println(Data.executeQuery:+e.getMessage());}}publicvoidcloseConn(){try{conn.close();}catch(SQLExceptione){System.err.println(Data.executeQuery:+e.getMessage());}}}4.构造JavaBean在项目src文件夹下建立包org.easybooks.test.model.vo,其中分别创建两个数据库表所对应的标准JavaBean。userTable表对应UserTable.java,代码同前。如图2.4。图2.4注:1.UserTable.java代码如下。packageorg.easybooks.test.model.vo;publicclassUserTable{//FieldsprivateIntegerid;privateStringusername;privateStringpassword;//Propertyaccessors//属性id的get/set方法publicIntegergetId(){returnthis.id;}publicvoidsetId(Integerid){this.id=id;}//属性username的get/set方法publicStringgetUsername(){returnthis.username;}publicvoidsetUsername(Stringusername){this.username=username;}//属性password的get/set方法publicStringgetPassword(){returnthis.password;}publicvoidsetPassword(Stringpassword){this.password=password;}}注:2.LyTable.java代码如下。packageorg.easybooks.test.model.vo;importjava.sql.Date;publicclassLyTableimplementsjava.io.Serializable{//FieldsprivateIntegerid;privateIntegeruserId;privateDatedate;privateStringtitle;privateStringcontent;//Propertyaccessors//属性id的get/set方法publicIntegergetId(){returnthis.id;}publicvoidsetId(Integerid){this.id=id;}//属性userId的get/set方法publicIntegergetUserId(){returnthis.userId;}publicvoidsetUserId(IntegeruserId){this.userId=userId;}//属性date的get/set方法publicDategetDate(){returnthis.date;}publicvoidsetDate(Datedate){this.date=date;}//属性title的get/set方法publicStringgetTitle(){returnthis.title;}publicvoidsetTitle(Stringtitle){this.title=title;}//属性content的get/set方法publicStringgetContent(){returnthis.content;}publicvoidsetContent(Stringcontent){this.content=content;}}5.编写Servlet(1)登录验证登录验证功能用MainServlet实现,增加对留言的查询功能即可。如图2.5图2.5注:MainServlet.java代码如下。packageorg.easybooks.test.servlet;importjava.sql.*;importjava.io.*;importjava.util.*;importjavax.servlet.*;importjavax.servlet.http.*;importorg.easybooks.test.jdbc.SqlSrvDBConn;importorg.easybooks.test.model.vo.*;publicclassMainServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding(gb2312);//设置请求编码Stringusr=request.getParameter(username);//获取提交的用户名Stringpwd=request.getParameter(password);//获取提交的密码booleanvalidated=false;//验证成功标识SqlSrvDBConnsqlsrvdb=newSqlSrvDBConn();HttpSessionsession=request.getSession();//获得会话对象,用来保存当前登录用户的信息UserTableuser=null;//先获得UserTable对象,如果是第一次访问该页,用户对象肯定为空,但如果是第二次甚至是第三次,就直接登录主页而无须再次重复验证该用户的信息user=(UserTable)session.getAttribute(user);//如果用户是第一次进入,会话中尚未存储user持久化对象,故为nullif(user==null){//查询userTable表中的记录Stringsql=select*fromuserTable;ResultSetrs=sqlsrvdb.executeQuery(sql);//取得结果集try{while(rs.next()){if((rs.getString(username).trim().compareTo(usr)==0)&&(rs.getString(password).compareTo(pwd)==0)){user=newUserTable();//创建持久化的JavaBean对象useruser.setId(rs.getInt(1));user.setUsername(rs.getString(2));user.setPassword(rs.getString(3));session.setAttribute(user,user);//把user对象存储在会话中validated=true;//标识为true表示验证成功通过}}rs.close();}catch(SQLExceptione){e.printStackTrace();}sqlsrvdb.closeStmt();}else{validated=true;//该用户在之前已登录过并成功验证,故标识为true表示无须再验了}if(validated){//验证成功,应该去主界面,主界面中包含了所有留言信息,所以要从留言表中查出来,并暂存在会话中ArrayListal=newArrayList();try{Stringsql=select*fromlyTable;ResultSetrs=sqlsrvdb.executeQuery(sql);//取得结果集while(rs.next()){LyTablely=newLyTable();ly.setId(rs.getInt(1));ly.setUserId(rs.getInt(2));ly.setDate(rs.getDate(3));ly.setTitle(rs.getString(4));ly.setContent(rs.getString(5));al.add(ly);}rs.close();}catch(SQLExceptione){e.printStackTrace();}sqlsrvdb.closeStmt();session.setAttribute(al,al);//然后跳转到main.jsprespons
本文标题:Java-Web综合开发实战:网络留言系统
链接地址:https://www.777doc.com/doc-2045172 .html