Java Web综合开发实战:网络留言系统 - 图文
更新时间:2023-11-03 20:57:01 阅读量: 综合文库 文档下载
- java推荐度:
- 相关推荐
沈阳化工大学实验报告
课程名称 Java Web 项目名称 Java Web综合开发实战:网络留言系统 学 院 应用技术学院 专 业 1401 指导教师 李玉红 报 告 人 张庭浩 学号 1422030125 实验时间 2016.11.24 提交时间 2016.12.05
一、实验目的
1.通过实例开发,熟练掌握JSP相关标签的应用
2.熟练掌握用SERVLET作为控制器实现用户请求的处理及界面的跳转。
二、实验内容
采用JSP+Servlet+JavaBean+JDBC方式开发一个网络留言系统。
要求:① 用户在页面上输入用户名密码登录,成功进入后能看到所有留言信息;② 用户可自己添加、编辑留言,提交后可实时看到新增加的留言;③ 系统提供新用户注册功能;④ 在【实例三】(2.3.5节)登录程序的基础上修改扩充而成,综合运用JSP/Servlet/JavaBean等Java Web开发的基础性技术。
三、实验过程
1.建立数据库和表
这里依然使用先前在SQL Server 2008 12012中创建的数据库TEST及其userTable表,因为系统登录后要有个主界面显示别人和自己的留言信息,故还要有个留言表lyTable用于保存用户留言,如图2.1和2.2。
图2.1 图2.2 2.创建Java EE项目
新建Java EE项目,项目命名为JSPExample。 3.创建JDBC
在项目src文件夹下建立包org.easybooks.test.jdbc,在包下创建SqlSrvDBConn类(JDBC),并往项目中添加JDBC驱动包,如图2.3.
图2.3 注:SqlSrvDBConn类代码如下。
package org.easybooks.test.jdbc; import java.sql.*;
public class SqlSrvDBConn {
private Statement stmt; private Connection conn; ResultSet rs;
//在构造方法中创建数据库连接 public SqlSrvDBConn(){
conn=DriverManager.getConnection(\
}catch(Exception e){ } rs=null;
e.printStackTrace();
aseName=TEST\,\,\); }
//获取数据连接
public Connection getConn(){ }
//执行查询类的SQL语句,有返回集
public ResultSet executeQuery(String sql) { try
return this.conn; stmt=null; try{
/**加载并注册 SQLServer 2008 的 JDBC 驱动*/
Class.forName(\);
{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql); }catch(SQLException e){
System.err.println(\ + e.getMessage()); }
return rs; }
//关闭对象
public void closeStmt() { try {
stmt.close(); }catch(SQLException e){
System.err.println(\ + e.getMessage()); } }
public void closeConn() { try {
conn.close(); }catch(SQLException e){
System.err.println(\ + e.getMessage()); } } }
4.构造JavaBean
在项目src文件夹下建立包org.easybooks.test.model.vo,其中分别创建两个数据库表所对应的标准JavaBean。userTable表对应UserTable.java,代码同前。如图2.4。
图2.4
注:1.UserTable.java代码如下。
package org.easybooks.test.model.vo; public class UserTable { }
注:2.LyTable.java代码如下。
package org.easybooks.test.model.vo; import java.sql.Date; public class LyTable implements java.io.Serializable{
//Fields
private Integer id; private Integer userId; private Date date; private String title; private String content;
//Property accessors //属性 id 的 get/set 方法 //Fields
private Integer id; private String username; private String password;
//Property accessors //属性 id 的 get/set 方法 public Integer getId(){ }
public void setId(Integer id){ }
//属性 username 的 get/set 方法 public String getUsername(){ }
public void setUsername(String username){ }
//属性 password 的 get/set 方法 public String getPassword(){ }
public void setPassword(String password){ }
this.password=password; return this.password; this.username=username; return this.username; this.id=id; return this.id;
}
public Integer getId(){ }
public void setId(Integer id){ }
//属性 userId 的 get/set 方法 public Integer getUserId(){ }
public void setUserId(Integer userId){ }
//属性 date 的 get/set 方法 public Date getDate(){ }
public void setDate(Date date){ }
//属性 title 的 get/set 方法 public String getTitle(){ }
public void setTitle(String title){ }
//属性 content 的 get/set 方法 public String getContent(){ }
public void setContent(String content){ }
this.content=content; return this.content; this.title=title; return this.title; this.date=date; return this.date; this.userId=userId; return this.userId; this.id=id; return this.id;
5.编写Servlet (1)登录验证
登录验证功能用MainServlet实现,增加对留言的查询功能即可。如图2.5
图2.5
注:MainServlet.java代码如下。 package org.easybooks.test.servlet; import java.sql.*; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*;
import org.easybooks.test.jdbc.SqlSrvDBConn; import org.easybooks.test.model.vo.*;
public class MainServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
request.setCharacterEncoding(\
//设置请求编码
throws ServletException, IOException{
String usr=request.getParameter(\ String pwd=request.getParameter(\ boolean validated=false;
SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn(); HttpSession session=request.getSession(); UserTable user=null;
//获得会话对象,用来//获取提交的用户名 //获取提交的密码 //验证成功标识
保存当前登录用户的信息
//先获得UserTable对象,如果是第一次访问该页,用户对象肯定为空,但如果是第二次甚至是第三次,就直接登录主页而无须再次重复验证该用户的信息 user=(UserTable)session.getAttribute(\
//如果用户是第一次进入,会话中尚未存储user持久化对象,故为null if(user==null){
//查询userTable表中的记录
String sql=\ResultSet rs=sqlsrvdb.executeQuery(sql); try {
while(rs.next()) {
//取得结果集
if((rs.getString(\
}
}
user=new UserTable(); user.setId(rs.getInt(1));
user.setUsername(rs.getString(2)); user.setPassword(rs.getString(3)); session.setAttribute(\validated=true;
//把user对象存
//创建持久化的
password\JavaBean对象user
储在会话中
//标识为true表示验
证成功通过
rs.close();
} catch (SQLException e) { }
e.printStackTrace();
sqlsrvdb.closeStmt();
} else{
validated=true; }
if(validated) {
//验证成功,应该去主界面,主界面中包含了所有留言信息,所以要从留言表中查出来,并暂存在会话中
ArrayList al=new ArrayList(); try{
String sql=\
ResultSet rs=sqlsrvdb.executeQuery(sql); //取得结果集 while(rs.next()){
LyTable ly=new LyTable(); ly.setId(rs.getInt(1));
ly.setUserId(rs.getInt(2)); ly.setDate(rs.getDate(3));
//该用户在之前已登录过并
成功验证,故标识为true表示无须再验了
}
}
ly.setTitle(rs.getString(4)); ly.setContent(rs.getString(5)); al.add(ly);
rs.close();
e.printStackTrace();
}catch(SQLException e){
sqlsrvdb.closeStmt();
session.setAttribute(\ //然后跳转到main.jsp
response.sendRedirect(\ } else{
//验证失败跳转到error.jsp
response.sendRedirect(\ } }
(2)添加留言
添加留言功能由AddServlet实现,在org.easybooks.test.servlet包下创建AddServlet类,编写代码。
}
public void doPost(HttpServletRequest request, HttpServletResponse }
doGet(request,response);
response) throws ServletException, IOException{
图2.6
注:AddServlet.java代码如下。 package org.easybooks.test.servlet; import java.sql.*; import java.io.*;
import java.util.ArrayList;
import javax.servlet.*; import javax.servlet.http.*;
import org.easybooks.test.jdbc.SqlSrvDBConn; import org.easybooks.test.model.vo.*; public class AddServlet extends HttpServlet{ 题 容
HttpSession session=request.getSession(); //从会话中取出当前用户对象
UserTable user=(UserTable)session.getAttribute(\//建立留言表对应的JavaBean对象,把数据封装进去 LyTable ly=new LyTable(); ly.setUserId(user.getId());
//获取当前登录
String content=request.getParameter(\
//获取留言的内
public void doGet(HttpServletRequest request, HttpServletResponse response)
request.setCharacterEncoding(\String title=request.getParameter(\
//获取留言的标
throws ServletException, IOException{
用户的id
ly.setDate(new Date(System.currentTimeMillis())); //获取当前系统时间 ly.setTitle(title); ly.setContent(content);
ArrayList al=(ArrayList)session.getAttribute(\al.add(ly);
//新添加的留言要保
存一份到会话中,这样在刷新主页时就无须每次都去查询数据库留言表了
//向数据库中插入新的留言记录 PreparedStatement pstmt=null;
SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn(); Connection ct=sqlsrvdb.getConn(); try{
pstmt=ct.prepareStatement(\into lyTable values(?,?,?,?)\pstmt.setInt(1, ly.getUserId()); pstmt.setDate(2, ly.getDate()); pstmt.setString(3, ly.getTitle()); pstmt.setString(4, ly.getContent()); pstmt.executeUpdate();
response.sendRedirect(\
正在阅读:
Java Web综合开发实战:网络留言系统 - 图文11-03
城市湿地公园运营管理实施方案 - 图文11-28
浅析我国能源与经济的关系10-27
7424 新闻传播学原理A卷试题04-06
2017-2022年中国钢结构产业深度调研与未来发展前景预测报告(目录)09-12
3学年上学期高一期中考试化学(附答案)05-29
小学四年级作文我的愿望02-06
机械工程测试 流体参量测06-06
全县“慈善一日捐”动员大会领导讲话稿范文09-07
常用mime类型大全05-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实战
- 留言
- 图文
- 开发
- 综合
- 系统
- 网络
- Java
- Web
- 第二章数据库与表
- 关于进一步加强防汛工作的紧急通知
- 信号与系统基础知识
- 2016年上半年宁夏省期货从业资格:外汇期货考试试卷
- 《计算机控制技术及其应用》思考题与习题的指导信息
- 2012年全国专利代理人资格考试(相关法律知识)试题及答案
- 食品原料学 - 题库
- 中国皮棉行业市场前景分析预测报告(目录) - 图文
- 会计与税法的差异与纳税调整赵耀
- 关于公布2014年度海宁市教育科学研究课题结题名单的通知 - 图文
- 数电模拟试卷四
- 农村修缮房屋承揽合同协议范本
- 中财名词解释
- 2010广东省建筑与装修工程综合定额(说明及计算规则) - 图文
- 食品公司ISO9001:2015版质量管理体系与HACCP管理体系顾客满意度调查过程记录表模板
- 二十五史中的范仲淹
- 干家巷小学“建设幸福中国”读书活动方案
- 教师考编范围古诗文具体内容及注释翻译—关于优秀诗文背诵推荐篇目的建议
- 我国遥感产业发展的现状
- 制度12 安全操作规程管理制度(定稿 郭利)