Java Web综合开发实战网络留言系统.docx

上传人:b****7 文档编号:8973513 上传时间:2023-02-02 格式:DOCX 页数:28 大小:834.69KB
下载 相关 举报
Java Web综合开发实战网络留言系统.docx_第1页
第1页 / 共28页
Java Web综合开发实战网络留言系统.docx_第2页
第2页 / 共28页
Java Web综合开发实战网络留言系统.docx_第3页
第3页 / 共28页
Java Web综合开发实战网络留言系统.docx_第4页
第4页 / 共28页
Java Web综合开发实战网络留言系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Java Web综合开发实战网络留言系统.docx

《Java Web综合开发实战网络留言系统.docx》由会员分享,可在线阅读,更多相关《Java Web综合开发实战网络留言系统.docx(28页珍藏版)》请在冰豆网上搜索。

Java Web综合开发实战网络留言系统.docx

JavaWeb综合开发实战网络留言系统

沈阳化工大学实验报告

 

课程名称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.2

2.创建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{

//Fields

privateIntegerid;

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{

//Fields

privateIntegerid;

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持久化对象,故为null

if(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对象user

user.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.jsp

response.sendRedirect("main.jsp");

}

else{

//验证失败跳转到error.jsp

response.sendRedirect("error.jsp");

}

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

doGet(request,response);

}

}

(2)添加留言

添加留言功能由AddServlet实现,在org.easybooks.test.servlet包下创建AddServlet类,编写代码。

 

图2.6

注:

AddServlet.java代码如下。

packageorg.easybooks.test.servlet;

importjava.sql.*;

importjava.io.*;

importjava.util.ArrayList;

importjavax.servlet.*;

importjavax.servlet.http.*;

importorg.easybooks.test.jdbc.SqlSrvDBConn;

importorg.easybooks.test.model.vo.*;

publicclassAddServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

request.setCharacterEncoding("gb2312");

Stringtitle=request.getParameter("title");//获取留言的标题

Stringcontent=request.getParameter("content");//获取留言的内容

HttpSessionsession=request.getSession();

//从会话中取出当前用户对象

UserTableuser=(UserTable)session.getAttribute("user");

//建立留言表对应的JavaBean对象,把数据封装进去

LyTablely=newLyTable();

ly.setUserId(user.getId());//获取当前登录用户的id

ly.setDate(newDate(System.currentTimeMillis()));//获取当前系统时间

ly.setTitle(title);

ly.setContent(content);

ArrayListal=(ArrayList)session.getAttribute("al");

al.add(ly);//新添加的留言要保存一份到会话中,这样在刷新主页时就无须每次都去查询数据库留言表了

//向数据库中插入新的留言记录

PreparedStatementpstmt=null;

SqlSrvDBConnsqlsrvdb=newSqlSrvDBConn();

Connectionct=sqlsrvdb.getConn();

try{

pstmt=ct.prepareStatement("insertintolyTablevalues(?

?

?

?

)");

pstmt.setInt(1,ly.getUserId());

pstmt.setDate(2,ly.getDate());

pstmt.setString(3,ly.getTitle());

pstmt.setString(4,ly.getContent());

pstmt.executeUpdate();

response.sendRedirect("main.jsp");

}catch(SQLExceptione){

e.printStackTrace();

response.sendRedirect("liuyan.jsp");

}

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

doGet(request,response);

}

}

(3)注册用户

注册新用户功能由RegisterServlet类实现。

如图2.7

图2.7

注:

RegisterServlet.java代码如下。

packageorg.easybooks.test.servlet;

importjava.io.*;

importjava.sql.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

importorg.easybooks.test.jdbc.SqlSrvDBConn;

importorg.easybooks.test.model.vo.*;

publicclassRegisterServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

request.setCharacterEncoding("gb2312");

Stringusr=request.getParameter("username");//获取提交注册的用户名

Stringpwd=request.getParameter("password");//获取提交注册的密码

//向数据库中插入新用户名和密码

PreparedStatementpstmt=null;

SqlSrvDBConnsqlsrvdb=newSqlSrvDBConn();

Connectionct=sqlsrvdb.getConn();

try{

pstmt=ct.prepareStatement("insertintouserTablevalues(?

?

)");

pstmt.setString(1,usr);

pstmt.setString(2,pwd);

pstmt.executeUpdate();

response.sendRedirect("login.jsp");

}catch(SQLExceptione){

e.printStackTrace();

}

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

doGet(request,response);

}

}

(4)配置Servlet

Servlet编写完成后,必须在项目web.xml中进行配置方可使用。

在web.xml文件中的配置如图2.8。

图2.8

注:

web.xml配置代码如下。

xmlversion="1.0"encoding="UTF-8"?

>

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xmlns="http:

//xmlns.jcp.org/xml/ns/javaee"xsi:

schemaLocation="http:

//xmlns.jcp.org/xml/ns/javaeehttp:

//xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID"version="3.1">

JSPExample

login.jsp

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1