去年的实训
记录一下~供大家交流学习!
在网上也借鉴了许多学生信息管理系统最终得出~
jsp代码在文中最后-0-百度网盘自取
数据库的表代码丢失各位加油-0-
根据下面的数据库设计可以很快做出来的:)
主要功能:显示微博信息,用户信息,能够查看微博,编辑微博,更改微博,以及删除微博。
总体设计方案:
创建用户信息数据库,微博信息数据库,连接数据库
用户通过账户和密码进行登录注册,进入微博页面完成增删查改微博信息的操作。
数据库设计(包括E-R图和表的结构设计)
DB:User
Table:Umanage(UserID,Password)
DB:WMessage
Table:Winfo(PublishCode,PublishTitle,PublishDate,PublishContent)
系统各功能模块的实现过程
一、程序运行的流程图
二、设计
1概要设计
1.1类
a@ User用户实体类
b@ Winfo微博信息实体类
c@ UserDao连接用户信息数据库,判断用户是否存在,添加新用户。
d@ WDao连接微博信息数据库,并实现微博信息增删改查的方法。
e@ UserServlet接收登录表单的参数,更新用户信息表,页面跳转。
f@ AddUserServlet接收注册表单的参数,更新用户信息表,页面跳转。
g@ InsertWinfo接收发布微博的表单的参数,更新微博信息表,页面跳转。
1.2JSP页面
h# 用户注册页面register.jsp
i# 用户登录页面login.jsp
j# 微博信息首页welcome.Jsp
k# 发布微博页面PublishW.jsp
l# 修改微博页面ReviseFormW.jsp
m# 处理ReviseFormW.jsp提交的数据的页面ReviseW.jsp
n# 处理超链接删除的DeleteW.jsp
css样式
o& welcome.css 基础的标题和页面背景设置
2详细设计
1.1类的设计
1.1.1 com.pojo包(实体类):
* User类: UserID,Password属性。
set,get方法设置和获取UserID和Password的值
构造方法User(String UserID,String Password) 实现对单个用户信息的存储即登录名和密码。
* Winfo类:PublishCode,PublishTitle,PublishDate,PublishContent属性。
set,get方法获取分别对应的值。
构造方法Winfo(String PublishCode,String PublishTitle,String PublishDate,String PublishContent)实现对单条微博信息的参数存储即微博编号,发布标题,发布日期,发布内容。
1.1.2 com.dao包(数据访问层):
* UserDao类:连接数据库User。
AddUser(User user)方法,添加驱动,新增用户信息,完成用户注册功能。
findUser(User user)方法,添加驱动,查询用户信息表,判断登陆用户是否为注册用户。
* WDao类:连接数据库Wmessage。
ArrayList ShowWinfo()添加驱动,查询所有的已发布微博信息。
InsertWinfo(Winfo winfo) 添加驱动,利用insert语句插入一条微博。
UpdateW(String query) 添加驱动,更新一条微博。
1.1.3 com.service包(业务逻辑层)
* UserBizImpl类:login(User user) 登录用户的业务方法。
register(User user)注册新用户的业务方法。
1.1.4 com.action包(表示层)
* UserServlet servlet:
doPost()通过login.jsp中表单传入的用户登录名和密码判断是否正确,完成登录,并跳转welcome微博首页,否则登录失败重新登录跳转login.jsp页面。
doGet()方法 执行doPost方法保证页面跳转。
* AddUserServlet servlet:
doPost() 通过register.jsp中表单传入的登录名和密码插入数据库中,完成注册,并跳转login登录页面,否则注册失败重新注册跳转register.jsp页面。
doGet()方法 执行doPost方法保证页面跳转。
* InsertWinfo servlet
doPost() 通过PublishW.jsp中表单传入的微博编号,发布标题,发布内容插入数据库中,而发布日期为java.util.Date获取的系统当前日期。完成微博发布,并且跳转welcome.jsp微博首页。
doGet()方法 执行doPost方法保证页面跳转。
1.2jsp页面的设计
1.2.1用户注册页面register.jsp
AddUserServlet进行接收处理用户输入想要注册的UserID和PassWord
1.2.2用户登录页面login.jsp
Userservlet进行接收处理用户输入已注册的UserID和PassWord
1.2.3微博信息首页welcome.Jsp
通过创建数据访问实例对象调用其中的ArrayList ShowWinfo()方法查询到所有已发布微博,并循环打印结果输出,用表格显示。
并且在每条微博信息后利用超链接删除或跳转ReviseFormW.jsp进行修改。
在左上角有一个发布微博的超链接,点击即跳转PublishW.jsp
1.2.4发布微博页面PublishW.jsp
用户输入想要发布的微博编号,但是微博编号唯一,发布标题,发布内容插入数据库中,而发布日期由系统自动输入。发布后跳转welcome.jsp微博首页,发布成功会更新微博的信息。失败则无新的信息。
1.2.5修改微博页面ReviseFormW.jsp
用户输入所需要修改的微博编号,发布标题,发布时间,发布内容。点击修改则跳转welcome.jsp微博首页,此时想要修改的微博信息会更新,否则无更新。
1.2.6 处理ReviseFormW.jsp提交的数据的页面ReviseW.jsp
接收表单ReviseForm.jsp数据,创建数据访问实例对象,创建update语句,调用其中的UpdateW(String query) 更新WMessage数据库中Winfo表信息。
1.2.7处理超链接删除的DeleteW.jsp
接收表单数据,创建数据访问实例对象,创建delete语句,调用其中的UpdateW(String query) 更新WMessage数据库中Winfo表信息。
结果展示
代码部分
a@ User用户实体类
package com.pojo;
//用户实体类
public class User {
private String UserID;
private String Password;
public String getUserID() {
return UserID;
}
public void setUsername(String UserID) {
this.UserID = UserID;
}
public String getPassword() {
return Password;
}
public void setPassword(String Password) {
this.Password = Password;
}
public User(String UserID,String Password){
this.UserID = UserID;
this.Password = Password;
}
}b@ Winfo微博信息实体类
package com.pojo;
//微博信息实体类
public class Winfo {
private String PublishCode;
private String PublishTitle;
private String PublishDate;
private String PublishContent;
public String getPublishCode() {
return PublishCode;
}
public void setPublishCode(String publishCode) {
PublishCode = publishCode;
}
public Winfo(String PublishCode,String PublishTitle,String PublishDate,String PublishContent){
this.PublishCode= PublishCode;
this.PublishTitle= PublishTitle;
this.PublishDate= PublishDate;
this.PublishContent=PublishContent;
}
public String getPublishTitle() {
return PublishTitle;
}
public void setPublishTitle(String publishTitle) {
PublishTitle = publishTitle;
}
public String getPublishDate() {
return PublishDate;
}
public void setPublishDate(String publishDate) {
PublishDate = publishDate;
}
public String getPublishContent() {
return PublishContent;
}
public void setPublishContent(String publishContent) {
PublishContent = publishContent;
}
}c@ UserDao连接用户信息数据库,判断用户是否存在,添加新用户。
package com.dao;
import com.pojo.;
import java.sql.;
public class UserDao {
private String url = “jdbc:sqlserver://localhost;databaseName=User”;
private String driver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;
private String name = “sa”;
private String pwd = “123456”;
//新增用户信息,完成用户注册功能
public boolean addUser(User user){
Connection con = null;
boolean flag = false;
try{
Class.forName(driver);
con = DriverManager.getConnection(url, name, pwd);
String add = “insert Umanage values(?,?)”;
PreparedStatement stat = con.prepareStatement(add);
stat.setString(1, user.getUserID());
stat.setString(2, user.getPassword());
stat.executeUpdate();
flag = true;
con.close();
}
catch(SQLException ex){
System.out.println(“发生SQL异常:”+ex.getMessage());
}
catch(Exception ex){
System.out.println(“发生一般异常:”+ex.getMessage());
}
return flag;
}
//查询用户信息表,确定登陆用户是不是注册用户
public boolean findUser(User user){
Connection con = null;
boolean flag = false;
//表示用户是否是注册用户
try{
//加载数据库驱动程序
Class.forName(driver);
con = DriverManager.getConnection(url, name, pwd);
String query = “select * from Umanage where UserID = ? and Password = ?”;
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, user.getUserID());
stmt.setString(2, user.getPassword());
ResultSet rs = stmt.executeQuery();
flag = rs.next();
con.close();
}
catch(SQLException e){
System.out.println(“SQL异常:”+e.getMessage());
}
catch(Exception e){
System.out.println(“一般异常:”+e.getMessage());
}
return flag;
}
}d@ WDao连接微博信息数据库,并实现微博信息增删改查的方法。
package com.dao;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import com.pojo.Winfo;
public class WDao {
private static String url = “jdbc:sqlserver://localhost;databaseName=WMessage”;
private static String driver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;
private static String name = “sa”;
private static String pwd = “123456”;
//查询所有微博
public ArrayList ShowWinfo(){
Connection con = null;
ArrayList winfos=new ArrayList();
Winfo winfo=null;
try{
//加载数据库驱动程序
Class.forName(driver);
con = DriverManager.getConnection(url, name, pwd);
String query = “select * from Winfo”;
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
winfo=new Winfo(rs.getString(“PublishCode”),rs.getString(“PublishTitle”),rs.getString(“PublishDate”),rs.getString(“PublishContent”));
winfos.add(winfo);
}
con .close();
}
catch(SQLException e){
System.out.println(“SQL异常:”+e.getMessage());
}
catch(Exception e){
System.out.println(“一般异常:”+e.getMessage());
}
return winfos ;
}
//插入一条微博
public static int InsertWinfo(Winfo winfo){
Connection con = null;
int rs=0;
try{
//加载数据库驱动程序
Class.forName(driver);
con = DriverManager.getConnection(url,name,pwd);
String query = “insert into Winfo values(?,?,?,?)”;
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1,winfo.getPublishCode());
stmt.setString(2,winfo.getPublishTitle());
stmt.setString(3,winfo.getPublishDate());
stmt.setString(4,winfo.getPublishContent());
rs=stmt.executeUpdate();
con.close();
}
catch(SQLException e){
System.out.println(“SQL异常:”+e.getMessage());
}
catch(Exception e){
System.out.println(“一般异常:”+e.getMessage());
}
return rs ;
}
//更新一条微博
public boolean UpdateW(String query){
Connection con = null;
int cnt=0;
try{
//加载数据库驱动程序
Class.forName(driver);
con = DriverManager.getConnection(url,name,pwd);
Statement stmt = con.createStatement();
cnt=stmt.executeUpdate(query);
con.close();
}
catch(SQLException e){
System.out.println(“SQL异常:”+e.getMessage());
}
catch(Exception e){
System.out.println(“一般异常:”+e.getMessage());
}
return cnt>0;
}
}
package com.service;
import com.pojo.;
import com.dao.;
public class UserBizImpl {
//登录用户的业务方法
public boolean login(User user){
UserDao ud = new UserDao();
boolean flag = ud.findUser(user);
return flag;
}
//注册新用户的业务方法
public boolean register(User user){
UserDao ud = new UserDao();
boolean flag = ud.addUser(user);
return flag;
}
}
e@ UserServlet接收登录表单的参数,更新用户信息表,页面跳转。
package com.action;
import com.pojo.;
import com.service.;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UserServlet() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
String UserID = request.getParameter(“UserID”);
String Password = request.getParameter(“Password”);
User user = new User(UserID,Password);
boolean flag = false;
UserBizImpl ub = new UserBizImpl();
flag = ub.login(user);
RequestDispatcher rd = null;
ServletContext context = getServletContext();
HttpSession hs = request.getSession();
if(flag == true){
hs.setAttribute(“message”, “欢迎:”+user.getUserID()+“访问”);
rd = context.getRequestDispatcher("/welcome.jsp");
}
else{
hs.setAttribute(“message”, “用户或者密码错误,请重新登录”);
rd = context.getRequestDispatcher("/login.jsp");
}
rd.forward(request, response);
}
}f@ AddUserServlet接收注册表单的参数,更新用户信息表,页面跳转。
package com.action;
import com.pojo.;
import com.service.;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class AddUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public AddUserServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
String UserID = request.getParameter(“UserID”);
String Password = request.getParameter(“Password”);
User user = new User(UserID,Password);
UserBizImpl ub = new UserBizImpl();
boolean flag = ub.register(user);
HttpSession hs = request.getSession();
RequestDispatcher rd = null;
ServletContext context = getServletContext();
if(flag == true){
hs.setAttribute(“message”, “请用新注册的账号登录”);
rd = request.getRequestDispatcher("/login.jsp");
}
else{
hs.setAttribute(“mesage”, “注册失败,请重新注册!”);
rd = request.getRequestDispatcher("/register.jsp");
}
rd.forward(request, response);
}
}g@ InsertWinfo接收发布微博的表单的参数,更新微博信息表,页面跳转。
package com.action;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
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.dao.WDao;
import com.pojo.Winfo;
public class InsertWinfo extends HttpServlet {
private static final long serialVersionUID = 1L;
public InsertWinfo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
Date date =new Date();
SimpleDateFormat format=new SimpleDateFormat(“yyyy-MM-dd”);
String code=request.getParameter(“PublishCode”);
String title=request.getParameter(“PublishTitle”);
String datetime=format.format(date);
String content=request.getParameter(“PublishContent”);
Winfo wi=new Winfo(code,title,datetime,content);
int result=WDao.InsertWinfo(wi);
RequestDispatcher rd = null;
ServletContext context = getServletContext();
HttpSession hs = request.getSession();
if(result>0){
hs.setAttribute(“message”, “发布成功”);
rd = context.getRequestDispatcher("/welcome.jsp");
}
else{
hs.setAttribute(“message”, “发布失败,已返回主页”);
rd = context.getRequestDispatcher("/welcome.jsp");
}
rd.forward(request, response);
}
}h# 用户登录页面login.jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
Login 用户登陆
UserID: | |
Password: | |
注册新用户
<% if(session.getAttribute("message")!=null) { String message = session.getAttribute("message").toString(); out.println(message); } %>
i# 用户注册页面register.jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
Register 注册新用户
请输入id: | |
请输入密码: | |
<% if(session.getAttribute("message")!=null){ String message = session.getAttribute("message").toString(); out.println(message); } %>
j# 微博信息首页welcome.Jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
<%@ page import = “java.sql." %>
<%@page import="com.pojo.” %>
<%@ page import= “com.dao." %>
<%@page import="com.service.” %>
<%@page import=“com.action." %>
<%@page import="java.util.” %>
Wfirst page
微博信息一览 发布微博 发布编号 发布标题 发布时间 发布内容 操作 <% request.setCharacterEncoding("utf-8"); WDao wd=new WDao(); ArrayList winfos=wd.ShowWinfo(); Winfo winfo=null; for (int i=0;i
k# 发布微博页面PublishW.jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
Insert title here 发布微博
输入发布编号: | |
输入发布标题: | |
输入发布内容: | |
l# 修改微博页面ReviseFormW.jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
<%@ page import = “java.sql." %>
<%@page import="com.pojo.” %>
<%@ page import= “com.dao." %>
<%@page import="com.service.” %>
<%@page import=“com.action." %>
<%@page import="java.util.” %>
Revise 修改微博
修改发布编号: |
m# 处理ReviseFormW.jsp提交的数据的页面ReviseW.jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
<%@ page import = “java.sql." %>
<%@page import="com.pojo.” %>
<%@ page import= “com.dao." %>
<%@page import="com.service.” %>
<%@page import=“com.action.*” %>
<%@page import=“java.util.Date” %>
<%@page import=“java.text.SimpleDateFormat”%> 修改 <% request.setCharacterEncoding("utf-8"); String PublishCode=request.getParameter("PublishCode"); String PublishTitle=request.getParameter("PublishTitle"); String PublishDate=request.getParameter("PublishDate"); String PublishContent=request.getParameter("PublishContent"); WDao wd=new WDao(); String query="update Winfo set PublishTitle='"+PublishTitle+"',PublishDate='"+PublishDate+"',PublishContent='"+PublishContent+"' where PublishCode='"+PublishCode+"'"; RequestDispatcher rd = null; ServletContext context = getServletContext(); HttpSession hs = request.getSession();
if(wd.UpdateW(query)){
hs.setAttribute(“message”, “插入成功”);
rd = context.getRequestDispatcher("/welcome.jsp");
}
else{
out.print(“插入失败”);
rd = context.getRequestDispatcher("/welcome.jsp");
}rd.forward(request, response);
%>n# 处理超链接删除的DeleteW.jsp
<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
<%@ page import = “java.sql." %>
<%@page import="com.pojo.” %>
<%@ page import= “com.dao." %>
<%@page import="com.service.” %>
<%@page import=“com.action." %>
<%@page import="java.util.” %> Insert title here <% String PublishCode=request.getParameter("PublishCode"); String query="delete from Winfo where PublishCode='"+PublishCode+"'"; WDao wd=new WDao(); RequestDispatcher rd = null; ServletContext context = getServletContext(); HttpSession hs = request.getSession(); if(wd.UpdateW(query)){ hs.setAttribute("message", "删除成功"); rd = context.getRequestDispatcher("/welcome.jsp"); } else{ out.print("删除失败"); rd = context.getRequestDispatcher("/welcome.jsp"); }rd.forward(request, response); %>
o& welcome.css样式
@CHARSET “UTF-8”;
body{
background-color: #FFD8D9;
}
caption{
font-size:30px;
font-weight:bold;
}
复制这段内容后打开百度网盘手机App,操作更方便哦
链接:https://pan.baidu.com/s/1o3X_Bqp4KF7_IKm8AAE40Q 提取码:uSfU
感谢阅读~