网络留言系统(Javaweb简易开发)
2021/9/20 17:27:25
本文主要是介绍网络留言系统(Javaweb简易开发),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
第一步:建立数据库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对象Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //6.执行sql rs=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对象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 (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.jsp response.sendRedirect("main.jsp"); } else{ //验证失败跳转到error.jsp response.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()); //获取当前登录用户的id ly.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简易开发)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南