基于servlet留言板系统设计与实现

博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

目录

一、项目介绍

1.1开发环境

二、需求分析

2.1流程图

2.2功能主要模块介绍

1.登录退出模块

2.用户信息管理管理模块

3. 留言管理模块

三、数据库设计

3.1数据库表设计

1. 用户表(yonghu)

2.留言表(liuyan)

四、 系统主要界面展示

1.用户登录界面:

2.用户注册界面:

3.用户管理页面:

4.留言管理页面:

五、 个人小结:

一、项目介绍

在当今这个以网络为主流的社会,互联网已经日益深入,成为了人们生活中不可缺少的一部分。由于进行信息的内外交流,已经成为了大众的广泛需要,近几年已经成为当下网络上流行的交流平台。随着技术的进步,留言板的功能也在不断增加并完善,由于Java语言技术所实现的“一次编写,随处执行”的优势的web开发技术受到了越多人的认可,主流的网站几乎都用到了Java语言,包括大部分的留言板功能。

本次项目采用serlvet框架 jsp开发技术,使用mysql进行数据库设计。

1.1开发环境

系统开发平台:Tomcat8.5+JDK1.8+Windows10

开发语言:JavaEE

框架:servlet

数据库:MySql5.0

开发环境:eclipse2019+Navicat Premium 8

二、需求分析

需求分析就是发现、求精、建摸、规格说明和复审的过程。为了发现用户的真正需求,首先应该从宏观角度调查、分析用户所面临的问题。也就是说,需求分析的第一步是尽可能了解当前用户的情况和需要解决的问题。

留言板系统要满足以下几个方面的功能需求:

满足系统不同用户角色的应用需求:根据需要,系统应对两种用户按其使用功能和权限进行角色划分,形成两种角色,分别是:

用户功能:

注册、登录,发布留言,查看已经发布的留言

管理员功能:

用户管理,留言管理(删除、修改)

2.1流程图

2.2功能主要模块介绍

1.登录退出模块

(1)登录窗口

输入账号密码验证成功后跳转到管理员后台操作界面,进行基本信息设置管理。

(2)用户注册窗口

用户输入用户名,密码等信息后可进行注册,注册成功后跳转到登录首页

2.用户信息管理管理模块

用户管理模块包括对系统内用户信息的发布,修改,查看,删除等功能。

(1)对系统用户的发布:发布用户的信息,按照用户页面给出的表单进行填写,填写完毕后点击确定即可。

(2)对系统用户的修改:修改用户的信息,在系统用户列表中直接点击修改,按照页面给出的表单进行填写,填写完毕后点击确定。

(3)对系统用户的删除:删除用户信息,在系统用户列表中直接点击删除.

(4)对系统用户的查看:查看用户信息,在系统用户列表中直接点击查看

  1. 留言管理模块

留言管理模块包括对系统内留言信息的发布,修改,查看,删除等功能。

(1)对系统留言的发布:发布留言的信息,按照留言页面给出的表单进行填写,填写完毕后点击确定即可。

(2)对系统留言的修改:修改留言的信息,在系统留言列表中直接点击修改,按照页面给出的表单进行填写,填写完毕后点击确定。

(3)对系统留言的删除:删除留言信息,在系统留言列表中直接点击删除.

(4)对系统留言的查看:查看留言信息,在系统留言列表中直接点击查看。

  

三、

3.1数据库表设计

  1. 用户yonghu

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

qx

VARCHAR

40

权限

2.留言liuyan

序号

字段名称

数据类型

长度

主键

描述

1

lyid

INTEGER

11

留言编号

2

ly

VARCHAR

4000

留言

3

yh

VARCHAR

40

用户

4

sj

VARCHAR

40

时间

  • 系统主要界面展示

1.用户登录界面:

主要代码:Logincheck.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>

<%@ page import="com.util.DBO"%>

<%

DBO db=new DBO();

request.setCharacterEncoding("gb2312");

String yhm=(String)request.getParameter("yhm");

String mm=(String)request.getParameter("mm");



String sql="";



sql="select * from yonghu where yhm='"+yhm+"' and mm='"+mm+"'";



System.out.println("sql="+sql);

db.open();

ResultSet rs=db.query(sql);

out.println("<script>");

if(rs.next()){



session.setAttribute("id",rs.getString("yhid"));





session.setAttribute("yhm",rs.getString("yhm"));

session.setAttribute("mm",rs.getString("mm"));

session.setAttribute("qx",rs.getString("qx"));



out.println("window.location='index.html'");

}else{

out.println("alert('用户名或者密码错误');");

out.println("window.location='login.jsp'");

}

out.println("</script>");

%>

2.用户注册界面:

主要代码:yonghudo.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<%@ page import="com.util.*"%>



<%

/*

用户添加后台

*/

DBO db=new DBO();//初始数据库链接

request.setCharacterEncoding("gb2312");//设置字符集

ResultSet rs=null;//声明结果集

String keyid =(String)request.getParameter("keyid");

String yhm=(String)request.getParameter("yhm");//变量:用户名

String mm=(String)request.getParameter("mm");//变量:密码

String xm=(String)request.getParameter("xm");//变量:姓名

String qx=(String)request.getParameter("qx");//变量:权限



String sql="";//声明sql

 sql="insert into yonghu(yhm,mm,xm,qx) values('"+yhm+"','"+mm+"','"+xm+"','"+qx+"')";

;//用户SQL 语句

int row=1;///定义执行结果



try{





//int row =0;

row=db.update(sql);

}catch(Exception e){

System.out.println(e.toString());}

if(row==1){

out.println("<script>");

out.println("alert('操作成功');");

out.println("window.location='../login.jsp'");

out.println("</script>");

}else{

out.println("<script>");

out.println("alert('操作失败');");

out.println("window.location='../login.jsp'");

out.println("</script>");

}

db.close();

%>

3.用户管理页面

主要代码:yonghuservlet.java

package com.servlet;



import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;



import com.util.*;

import java.util.List;

import java.sql.ResultSet;



public class yonghuServlet extends HttpServlet  {

public void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("gb2312");

System.out.println("method"+request.getParameter("method"));

String method=(String)request.getParameter("method");

if(method.equals("insert")){//用户添加

insertM(request, response);

}else if(method.equals("list")){//用户列表

ListM(request, response);

}else if(method.equals("delete")){//用户删除

deleteM(request, response);

}else if(method.equals("modifyindex")){//用户修改页面

modifyIndex(request, response);

}

else if(method.equals("modify")){//用户修改

modifyM(request, response);

}else if(method.equals("detail")){//用户详细信息

detailM(request, response);

}else if(method.equals("Plist")){//用户列表信息

PListM(request, response);

}

}

private void insertM(HttpServletRequest request, HttpServletResponse response){//用户添加

DBO db=new DBO();//初始化数据链接基础类

String sql="";//sql语句初始化

String keyid =(String)request.getParameter("keyid");//用户表主键

String yhm=(String)request.getParameter("yhm");//用户名

String mm=(String)request.getParameter("mm");//密码

String xm=(String)request.getParameter("xm");//姓名

String qx=(String)request.getParameter("qx");//权限



response.setCharacterEncoding("gb2312");

  sql="insert into yonghu(yhm,mm,xm,qx) values('"+yhm+"','"+mm+"','"+xm+"','"+qx+"')";

;//用户SQL 语句

int row=1;

try {

row=db.update(sql);//执行sql语句 insert语句

if(row==1){

request.setAttribute("flag", "操作成功");

}else{

request.setAttribute("flag", "操作失败");

}





request.getRequestDispatcher("yonghu/yonghuadd.jsp").forward(request, response);

} catch (Exception e) {

e.printStackTrace();

}



}

private void ListM(HttpServletRequest request, HttpServletResponse response){//用户信息列表

ResultSet rs=null;

String sql="select * from yonghu where 1=1 ";//查询用户 sql语句

DBO db=new DBO();//初始化数据链接基础类

db.open();



//用户信息查询

response.setCharacterEncoding("gb2312");

try{

rs=db.query(sql);//查询结果



//PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);





request.getRequestDispatcher("yonghu/yonghulist.jsp").forward(request, response);

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void PListM(HttpServletRequest request, HttpServletResponse response){//用户分页信息列表

ResultSet rs=null;

String sql="select * from yonghu where 1=1 ";//查询用户 sql语句

DBO db=new DBO();//初始化数据链接基础类

   

    String str=(String)request.getParameter("Page");



response.setCharacterEncoding("gb2312");

try{



if(str==null){

str="0";

}

rs=db.query(sql);



PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);





request.getRequestDispatcher("yonghu/yonghuPlist.jsp?Page="+str).forward(request, response);

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void modifyIndex(HttpServletRequest request, HttpServletResponse response){//用户修改首页

ResultSet rs=null;

response.setCharacterEncoding("gb2312");







String keyid =(String)request.getParameter("keyid");//用户表主键

String yhm=(String)request.getParameter("yhm");//用户名

String mm=(String)request.getParameter("mm");//密码

String xm=(String)request.getParameter("xm");//姓名

String qx=(String)request.getParameter("qx");//权限





String sql="select * from yonghu where yhid="+keyid;//查询一条要修改的信息

DBO db=new DBO();//初始化数据链接基础类



try{



db.open();//初始化数据库链接

rs=db.query(sql);//查询sql语句

PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);



request.getRequestDispatcher("yonghu/yonghumodify.jsp").forward(request, response);

//response.sendRedirect("yonghu/yonghumodify.jsp");

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void detailM(HttpServletRequest request, HttpServletResponse response){//用户详细信息页面



ResultSet rs=null;

response.setCharacterEncoding("gb2312");







String keyid =(String)request.getParameter("keyid");//用户表主键

String yhm=(String)request.getParameter("yhm");//用户名

String mm=(String)request.getParameter("mm");//密码

String xm=(String)request.getParameter("xm");//姓名

String qx=(String)request.getParameter("qx");//权限





String sql="select * from yonghu where yhid="+keyid;//查询一条要修改的信息

DBO db=new DBO();//初始化数据链接基础类



try{



db.open();

rs=db.query(sql);//查询sql语句

PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);



request.getRequestDispatcher("yonghu/yonghudetail.jsp").forward(request, response);

//response.sendRedirect("yonghu/yonghumodify.jsp");

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void deleteM(HttpServletRequest request, HttpServletResponse response){//用户删除



DBO db=new DBO();

  response.setCharacterEncoding("gb2312");

int row=1;

String keyid=(String)request.getParameter("keyid");

String sql="";

  sql="delete from yonghu where yhid='"+keyid+"'";//删除用户 信息sql语句

try{

 row=db.update(sql);// 执行sql语句



if(row==1){

request.setAttribute("flag", "删除成功");

}else{

request.setAttribute("flag", "删除失败");

}

request.getRequestDispatcher("yonghuServlet?method=list").forward(request, response);



//response.sendRedirect("yonghuServlet?method=list");

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}



private void modifyM(HttpServletRequest request, HttpServletResponse response){//用户修改功能

DBO db=new DBO();

String keyid =(String)request.getParameter("keyid");//用户表主键

String yhm=(String)request.getParameter("yhm");//用户名

String mm=(String)request.getParameter("mm");//密码

String xm=(String)request.getParameter("xm");//姓名

String qx=(String)request.getParameter("qx");//权限





response.setCharacterEncoding("gb2312");

String sql="";

       

sql="update yonghu set yhm='"+yhm+"',mm='"+mm+"',xm='"+xm+"',qx='"+qx+"' where yhid='"+keyid+"'";



int row=1;

try {



 row=db.update(sql);



if(row==1){

request.setAttribute("flag", "操作成功");

}else{

request.setAttribute("flag", "操作失败");

}

request.getRequestDispatcher("yonghuServlet?method=list").forward(request, response);



//response.sendRedirect("yonghuServlet?method=list");

} catch (Exception e) {

e.printStackTrace();

}



}

}

4.留言管理页面:

主要代码:liuyanServlet

package com.servlet;



import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;



import com.util.*;

import java.util.List;

import java.sql.ResultSet;



public class liuyanServlet extends HttpServlet  {

public void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("gb2312");

System.out.println("method"+request.getParameter("method"));

String method=(String)request.getParameter("method");

if(method.equals("insert")){//留言添加

insertM(request, response);

}else if(method.equals("list")){//留言列表

ListM(request, response);

}else if(method.equals("delete")){//留言删除

deleteM(request, response);

}else if(method.equals("modifyindex")){//留言修改页面

modifyIndex(request, response);

}

else if(method.equals("modify")){//留言修改

modifyM(request, response);

}else if(method.equals("detail")){//留言详细信息

detailM(request, response);

}else if(method.equals("Plist")){//留言列表信息

PListM(request, response);

}

}

private void insertM(HttpServletRequest request, HttpServletResponse response){//留言添加

DBO db=new DBO();//初始化数据链接基础类

String sql="";//sql语句初始化

String keyid =(String)request.getParameter("keyid");//留言表主键

String ly=(String)request.getParameter("ly");//留言

String yh=(String)request.getParameter("yh");//用户

String sj=(String)request.getParameter("sj");//时间



response.setCharacterEncoding("gb2312");

  sql="insert into liuyan(ly,yh,sj) values('"+ly+"','"+yh+"','"+sj+"')";

;//留言SQL 语句

int row=1;

try {

row=db.update(sql);//执行sql语句 insert语句

if(row==1){

request.setAttribute("flag", "操作成功");

}else{

request.setAttribute("flag", "操作失败");

}





request.getRequestDispatcher("liuyan/liuyanadd.jsp").forward(request, response);

} catch (Exception e) {

e.printStackTrace();

}



}

private void ListM(HttpServletRequest request, HttpServletResponse response){//留言信息列表

ResultSet rs=null;

String sql="select * from liuyan where 1=1  order by lyid";//查询留言 sql语句

DBO db=new DBO();//初始化数据链接基础类

db.open();



//留言信息查询

response.setCharacterEncoding("gb2312");

try{

rs=db.query(sql);//查询结果



//PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);





request.getRequestDispatcher("liuyan/liuyanlist.jsp").forward(request, response);

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void PListM(HttpServletRequest request, HttpServletResponse response){//留言分页信息列表

ResultSet rs=null;

String sql="select * from liuyan where 1=1 ";//查询留言 sql语句

DBO db=new DBO();//初始化数据链接基础类

   

    String str=(String)request.getParameter("Page");



response.setCharacterEncoding("gb2312");

try{



if(str==null){

str="0";

}

rs=db.query(sql);



PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);





request.getRequestDispatcher("liuyan/liuyanPlist.jsp?Page="+str).forward(request, response);

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void modifyIndex(HttpServletRequest request, HttpServletResponse response){//留言修改首页

ResultSet rs=null;

response.setCharacterEncoding("gb2312");







String keyid =(String)request.getParameter("keyid");//留言表主键

String ly=(String)request.getParameter("ly");//留言

String yh=(String)request.getParameter("yh");//用户

String sj=(String)request.getParameter("sj");//时间





String sql="select * from liuyan where lyid="+keyid;//查询一条要修改的信息

DBO db=new DBO();//初始化数据链接基础类



try{



db.open();//初始化数据库链接

rs=db.query(sql);//查询sql语句

PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);



request.getRequestDispatcher("liuyan/liuyanmodify.jsp").forward(request, response);

//response.sendRedirect("liuyan/liuyanmodify.jsp");

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void detailM(HttpServletRequest request, HttpServletResponse response){//留言详细信息页面



ResultSet rs=null;

response.setCharacterEncoding("gb2312");







String keyid =(String)request.getParameter("keyid");//留言表主键

String ly=(String)request.getParameter("ly");//留言

String yh=(String)request.getParameter("yh");//用户

String sj=(String)request.getParameter("sj");//时间





String sql="select * from liuyan where lyid="+keyid;//查询一条要修改的信息

DBO db=new DBO();//初始化数据链接基础类



try{



db.open();

rs=db.query(sql);//查询sql语句

PrintWriter out = response.getWriter();

request.setAttribute("rs", rs);



request.getRequestDispatcher("liuyan/liuyandetail.jsp").forward(request, response);

//response.sendRedirect("liuyan/liuyanmodify.jsp");

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}

private void deleteM(HttpServletRequest request, HttpServletResponse response){//留言删除



DBO db=new DBO();

  response.setCharacterEncoding("gb2312");

int row=1;

String keyid=(String)request.getParameter("keyid");

String sql="";

  sql="delete from liuyan where lyid='"+keyid+"'";//删除留言 信息sql语句

try{

 row=db.update(sql);// 执行sql语句



if(row==1){

request.setAttribute("flag", "删除成功");

}else{

request.setAttribute("flag", "删除失败");

}

request.getRequestDispatcher("liuyanServlet?method=list").forward(request, response);



//response.sendRedirect("liuyanServlet?method=list");

}catch(Exception e){

e.toString();

e.printStackTrace();

}



}



private void modifyM(HttpServletRequest request, HttpServletResponse response){//留言修改功能

DBO db=new DBO();

String keyid =(String)request.getParameter("keyid");//留言表主键

String ly=(String)request.getParameter("ly");//留言

String yh=(String)request.getParameter("yh");//用户

String sj=(String)request.getParameter("sj");//时间





response.setCharacterEncoding("gb2312");

String sql="";

       

sql="update liuyan set ly='"+ly+"',yh='"+yh+"',sj='"+sj+"' where lyid='"+keyid+"'";



int row=1;

try {



 row=db.update(sql);



if(row==1){

request.setAttribute("flag", "操作成功");

}else{

request.setAttribute("flag", "操作失败");

}

request.getRequestDispatcher("liuyanServlet?method=list").forward(request, response);



//response.sendRedirect("liuyanServlet?method=list");

} catch (Exception e) {

e.printStackTrace();

}



}

}

  • 个人小结:

通过开发本系统和学习JSP我对前面学过的许多课程有了更为深刻的理解。如果在开发前对整个开发工作做出全方位的规划和系统的分析,开发过程就会事半功倍,否则就会遇到许多意想不到的问题,延缓开发进度。我开始在没有进行系统规划,确定系统的注册职能,没有做好需求分析的情况下,就急于进行系统开发,结果使得开发过程比较混乱,进展缓慢,系统重新作了几次。由于功能不确定,系统主菜单及窗口改来改去,浪费了很多时间和精力。后来我静下心来,认真细致的对开发过程进行了规划和分析,明确了系统的基本功能,在设计好系统各主要部分,将一些细节问题考虑周全后才开始动手进行开发,使得后来的工作进行得很顺利。

另外在学习JSP的过程中还不够扎实,学过的东西没能融会贯通,在编写代码的时候不能够信手拈来,熟练应用,而是到处查阅资料,使得一些应该实现的功能没有实现,也是一种遗憾。


大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翰文编程

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值