目录

第一步:建立数据库test

第二步:创建javaee项目,onlineMessage

第三步:创建JDBC

先导入JDBC驱动包

创建SqlSrvDBConn类

第四步:构件JavaBean

第五步:编写Servlet

MainServlet

AddServlet

RegisterServlet

第六步:编写页面

login.jsp

register.jsp

main.jsp

liuyan.jsp

error.jsp

第七步:配置文件

界面运行效果如下:

项目源代码:

问题整理:


采用JSP+Servlet+JavaBean+JDBC方式开发一个网络留言系统。

要求:(1)用户在页面上输入用户名和密码登录,成功进入后可以看到所有的留言信息(2)用户可以自己添加,编辑留言,提交后可实时看到新增加的留言(3)系统提供新用户注册的功能

第一步:建立数据库test

我用的是mysql数据库,数据库中有两张表,用户信息表usertable和留言表lytable

表结构如下:

第二步:创建javaee项目,onlineMessage

第三步:创建JDBC

先导入JDBC驱动包

创建SqlSrvDBConn类

这个类主要就是连接数据库,操作数据库的。

public class SqlSrvDBConn {private Statement stmt;private Connection conn;ResultSet rs;//在构造方法中创建数据库连接public SqlSrvDBConn(){stmt=null;try {//1.加载并注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取数据库连接对象Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");} catch (Exception e) {e.printStackTrace();}rs=null;}//获取数据库连接public Connection getConn(){return this.conn;}//执行查询类的SQL语句,有返回集public ResultSet executeQuery(String sql){try {//5.获取执行sql对象Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//6.执行sqlrs=stmt.executeQuery(sql);} catch (SQLException throwables) {throwables.printStackTrace();}return rs;}//关闭对象public void closeStmt(){try {//8.释放资源stmt.close();} catch (SQLException e) {System.err.println("Data.executeQuery: " + e.getMessage());}}public void closeConn(){try {//8.释放资源conn.close();} catch (SQLException e) {System.err.println("Data.executeQuery: " + e.getMessage());}}}

第四步:构件JavaBean

底层数据库有几个表,就创建几个JavaBean,其实就是Java实体。里边写属性和get和set方法

public class UserTable {//属性private Integer id;private String username;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
public class LyTable implements java.io.Serializable {//属性private Integer id;private Integer userId;private Date date;private String title;private String content;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}
}

第五步:编写Servlet

MainServlet

MainServlet:主要实现登录验证功能和对留言的查询功能,查询所有的留言信息。

@WebServlet("/mainServlet")
public class MainServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求编码request.setCharacterEncoding("gb2312");//获取提交的用户名String usr = request.getParameter("username");//获取提交的密码String pwd = request.getParameter("password");//定义一个变量作为验证成功与否的标识boolean validated=false;//与数据库有关SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();//获得会话对象,用来存储当前登录的用户信息HttpSession session=request.getSession();//创建一个user对象,并设置为空UserTable user=null;//先获得UserTable对象,如果是第一次访问该页,用户对象肯定为空,但如果是第二次甚至是第三次,就直接登录主页而无须再次重复验证该用户的信息user=(UserTable)session.getAttribute("user");//如果是第一次进入if(user==null){//查询usertable表中的记录String sql="select * from usertable";//取得结果集ResultSet rs=sqlsrvdb.executeQuery(sql);try{while(rs.next()){//如果用户名和密码都正确if((rs.getString("username").trim().compareTo(usr)==0)&&(rs.getString("password").compareTo(pwd)==0)){user=new UserTable();               //创建持久化的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 (SQLException e){e.printStackTrace();}sqlsrvdb.closeStmt();}else{validated=true;//该用户在之前已经注册登录过了,已经验证过身份了,无需再验证}//身份验证之后---------------------------------------if(validated){//验证成功,应该去主界面,主界面显示留言的所有信息,所以要从留言表中查出来,并且暂存在会话中ArrayList al=new ArrayList();try{String sql="select * from lyTable";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));ly.setTitle(rs.getString(4));ly.setContent(rs.getString(5));al.add(ly);}rs.close();}catch(SQLException e){e.printStackTrace();}sqlsrvdb.closeStmt();session.setAttribute("al", al);//然后跳转到main.jspresponse.sendRedirect("main.jsp");}else{//验证失败跳转到error.jspresponse.sendRedirect("error.jsp");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}
}

AddServlet

AddServlet:这个主要实现留言的添加功能,要在会话中保存一份,也要在数据库中存储留言信息

@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("gb2312");String title = request.getParameter("title");String content = request.getParameter("content");HttpSession session = request.getSession();//从会话中获取出当前用户的对象UserTable user = (UserTable)session.getAttribute("user");//建立留言表对应的JavaBean对象,把数据封装进去LyTable ly=new LyTable();ly.setUserId(user.getId());                            //获取当前登录用户的idly.setDate(new Date(System.currentTimeMillis()));  //获取当前系统时间ly.setTitle(title);ly.setContent(content);ArrayList al=(ArrayList)session.getAttribute("al");al.add(ly);//向数据库中插入新的留言记录PreparedStatement pstmt=null;SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();Connection ct=sqlsrvdb.getConn();try{pstmt=ct.prepareStatement("insert into lyTable(userid,date,title,content) values(?,?,?,?)");pstmt.setInt(1, ly.getUserId());pstmt.setDate(2, (Date) ly.getDate());pstmt.setString(3, ly.getTitle());pstmt.setString(4, ly.getContent());pstmt.executeUpdate();response.sendRedirect("main.jsp");}catch(SQLException e){e.printStackTrace();response.sendRedirect("liuyan.jsp");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}
}

RegisterServlet

RegisterServlet主要实现新用户的注册,将信息存入数据库

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("gb2312");String usr = request.getParameter("username");String pwd = request.getParameter("password");//向数据库中插入用户名和密码PreparedStatement pstmt=null;SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();Connection ct=sqlsrvdb.getConn();try{pstmt=ct.prepareStatement("insert into usertable(username,password) values(?,?)");pstmt.setString(1, usr);pstmt.setString(2, pwd);pstmt.executeUpdate();response.sendRedirect("login.jsp");}catch(SQLException e){e.printStackTrace();}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}
}

第六步:编写页面

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>简易留言板</title>
</head>
<body bgcolor="#E3E3E3">
<form action="mainServlet" method="post"><table><caption>用户登录</caption><tr><td>用户名:</td><td><input type="text" name="username" size="20"/></td></tr><tr><td>密码:</td><td><input type="password" name="password" size="21"/></td></tr></table><input type="submit" value="登录"/><input type="reset" value="重置"/>
</form>
如果没注册单击<a href="register.jsp">这里</a>注册!
</body>
</html>

register.jsp

<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head><title>简易留言板</title>
</head>
<body bgcolor="#E3E3E3"><form action="registerServlet" method="post"><table><caption>用户注册</caption><tr><td>登录名:</td><td><input type="text" name="username"/></td></tr><tr><td>密码:</td><td><input type="password" name="password"/></td></tr></table><input type="submit" value="注册"/><input type="reset" value="重置"/></form>
</body>
</html>

main.jsp

<%@ page language="java" pageEncoding="gb2312" import="java.util.*,java.sql.*,org.easybooks.test.model.vo.*,org.easybooks.test.jdbc.*"%>
<%@ page import="org.easybooks.test.javaBean.LyTable" %>
<html>
<head><title>留言板信息</title>
</head>
<body bgcolor="#E3E3E3"><form action="liuyan.jsp" method="post"><table border="1"><caption>所有留言信息</caption><tr><th>留言人姓名</th><th>留言时间</th><th>留言标题</th><th>留言内容</th></tr><%PreparedStatement pstmt=null;SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();Connection ct=sqlsrvdb.getConn();ArrayList al=(ArrayList)session.getAttribute("al");Iterator iter=al.iterator();while(iter.hasNext()){LyTable ly=(LyTable)iter.next();String usr=null;try{pstmt=ct.prepareStatement("select username from userTable where id=?");pstmt.setInt(1, ly.getUserId());ResultSet rs=pstmt.executeQuery();while(rs.next()){usr=rs.getString(1);}}catch(SQLException e){e.printStackTrace();}%><tr><td><%=usr%></td><td><%=ly.getDate().toString()%></td><td><%=ly.getTitle()%></td><td><%=ly.getContent()%></td></tr><%}%></table><input type="submit" value="留言"/></form>
</body>
</html>

liuyan.jsp

<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head><title>留言板</title>
</head>
<body bgcolor="#E3E3E3"><form action="addServlet" method="post"><table border="1"><caption>填写留言信息</caption><tr><td>留言标题</td><td><input type="text" name="title"/></td></tr><tr><td>留言内容</td><td><textarea name="content" rows="5" cols="35"></textarea></td></tr></table><input type="submit" value="提交"/><input type="reset" value="重置"/></form>
</body>
</html>

error.jsp

<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head><title>出错</title>
</head>
<body>登录失败!单击<a href="login.jsp">这里</a>返回
</body>
</html>

第七步:配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><display-name>onlineMessage</display-name><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list></web-app>

界面运行效果如下:

项目源代码:

gittee:onlineMessage: 网络留言系统

问题整理:

按照老师给的那个代码,当注册用户或者是写留言的时候,数据是无法插入数据库的,因为他有个主键自动增长,然后去给你匹配的时候,你没有写上那个键的值,就无法给你匹配,然后你将数据库的那个字段名称写上,就OK啦!

本案例来自于课本,仅供参考学习。

网络留言系统(Javaweb简易开发)相关推荐

  1. python网络验证系统_python3+django2 开发易语言网络验证(下)

    第六步:网络验证服务器端项目上线部署 功夫不负有心人,终于部署成功啦! 前期准备: 项目名:netauth 系统:百度云服务器下的Ubuntu16.4 软件:xshell(无论如何想办法用这个跟服务器 ...

  2. 数据结构课程设计-家谱系统的简易开发

    源代码如下 (1)main.cpp #include<stdio.h> #include"family.h" #include<stdlib.h> #inc ...

  3. 基于 Servlet+jsp+mysql 开发 javaWeb 学生网络考试系统

    你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教: 企鹅:869192208 文章目录 一.开发背景 二. 需求分析 三.开发环境 四.运行效果 ...

  4. JavaWeb 简易留言系统

    一.主要任务:用JSP.Servlet和JavaBean开发一个简单的留言系统.这里要达到这样的目的,首先是一个用户登录界面,如下图所示. 登录成功后会显示所有的留言信息,如下图所示 留言界面 二.环 ...

  5. 基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: ...

  6. 【Web技术】网站留言系统开发,及留言信息实时发送至指定邮箱

    [Web技术]网站留言系统开发,及留言信息实时发送至指定邮箱 关键字:HTML PHP JavaScript CSS 文章目录 [Web技术]网站留言系统开发,及留言信息实时发送至指定邮箱 0 简述 ...

  7. java web系统毕业论文_毕业论文--基于JavaWeb的网络购物中心系统的实现.doc

    毕业论文(设计) 题 目: 基于JavaWeb的购物网络中心系统 完 成 人: 班 级: 学 制: 专 业: 指导教师: 完成日期: 目 录 26014 摘 要( 1) 0 TOC \o " ...

  8. 含论文+答辩PPT+任务书+中期检查表+源码等javaweb网络考试系统

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 javaweb网络考试系统 视频效果 https://www.bilibili. ...

  9. php考试倒计时提交系统,AJAX_基于Ajax技术实现考试倒计时并自动提交试卷,1.概述在开发网络考试系统 - phpStudy...

    基于Ajax技术实现考试倒计时并自动提交试卷 1.概述 在开发网络考试系统时,考试计时并自动提交试卷是必不可少的功能.由于在答卷过程中,试卷不能刷新,所以需要使用Ajax实现无刷新操作.运行本实例,访 ...

最新文章

  1. Problem 60 关于解决X11的错误的问题?
  2. 汽车之家APP车型配置--参数分析
  3. 30 个 OpenStack 经典面试问题和解答
  4. linux 机器之间 zssh, rz, sz互相传输 ( How to install zssh in Ubuntu 13.10 (Saucy))
  5. 请教各位前辈一个问题。
  6. __line__ php,hitcon 2018受虐笔记一:one-line-php-challenge 学习
  7. Mini USB 引脚定义及机械尺寸
  8. 计算机中英汉字段如何切换,电脑上中英文切换按哪个键
  9. 一口一个超酥脆的宝宝小零食,超简单的做法哦
  10. oracle建表案例,oracle创建表语句
  11. 关于如何设置收藏本站和设为首页
  12. 微信小程序中页面引入js文件
  13. boos直聘显示服务器繁忙,BOSS 直聘回应服务“崩了”:系统升级已完成,可正常使用...
  14. 大疆Onboard SDK 3.2玫瑰线例程浅析
  15. 国外LEAD第一笔收款你还记得吗
  16. Mysql查询历史SQL执行记录
  17. 短线股票怎么操作怎样才能炒好短线股票
  18. 2017全国计算机二级报考,2017年全国计算机等级考试报考须知
  19. 笔记本利用网线和wifi同时连接办公网跟互联网
  20. 高德地图自定义Marker显示文字

热门文章

  1. C#开发之——控件简介(12.6)
  2. ADSL modern 的常用密码
  3. 发射功率 dBm 计算
  4. 全加器高进位和低进位的理解
  5. 常用的web服务器软件整理
  6. 遥感影像波段与波段合成
  7. Excel自定义排序(可按某一列排序)
  8. stm32外设-RCC
  9. MTK平台H264编码profile_idc和level_idc的小问题
  10. 一个通用的ajax程序(实现像百度一样自动提示功能)