實現簡單頁面上對數據的增刪改查:Java后台+數據庫表+Jsp前端網頁設計
項目下載鏈接:https://pan.baidu.com/s/1UvZ5fzFjxU-GELo9Th3nNg
提取碼:kvmc
GitHub源碼下載:https://github.com/yishengxiaobai/Java_Course
這里做一個簡單的學生課程信息管理系統,做之前一定要先有自己的思路,要不然對新手來說,很容易亂的。
通過本系統,同學們可以添加,刪除,查詢與修改課程上課地點和課程老師以及課程名稱等信息。
運行截圖:
數據庫設計:
首頁:
課程信息錄入:
課程信息修改:
課程信息刪除:(先查找后刪除)
課程信息查詢:
另有一完整的代碼可供參考,網頁版記賬本,鏈接https://www.cnblogs.com/sengzhao666/p/10449534.html
一.建立項目
1. 首先新建一個名為Course的Dynamic Web Project
取完名直接點擊完成,或者一直下一步直到完成。
2. 程序分五層
Dao:底層程序
Entity:實體層
Servlet:將界面與底層程序聯系起來
Service:可以理解為servlet層與dao層的中轉層
Util:連接數據庫
注意servlet層不是建立類,而是建立一個Servlet;其他包下均為類。
二.數據庫設計
三.系統功能分析
1. 添加
需要一個界面add.jsp
2. 刪除
首先需要根據名稱查找;deletebyName.jsp
查找后列出結果,刪除;delete.jsp
3. 修改
首先列出所有數據;list.jsp
修改界面;update.jsp
4. 查詢
查詢界面;select.jsp(模糊查詢)
顯示查詢結果界面;selectlist.jsp
四.實現增刪改查四項基本功能(以添加功能為例,其他思路相同)
功能解析:
add界面得到數據;
servlet層獲得數據;
Service層傳遞給dao底層程序;
最后dao層執行sql語句:
String sql = "insert into course(name, teacher, classroom) values('" + course.getName() + "','" + course.getTeacher() + "','" + course.getClassroom() + "')";
將數據添加進數據庫。
注:推薦寫程序時編寫順序也這么來:先想好系統功能,然后編寫前端jsp再一步一步往下推。
程序詳解:
添加界面add.jsp得到用戶鍵入的數據;
界面執行通過后,action="courseServlet?method=add" 三目運算符將method賦值為add;
Servlet層得到method,判斷method值;
String method = req.getParameter("method"); if ("add".equals(method)) { add(req, resp); }
執行add函數。
servlet層add函數獲得界面數據:
String name = req.getParameter("name"); String teacher = req.getParameter("teacher"); String classroom = req.getParameter("classroom"); Course course= new Course(name, teacher, classroom);
調用service層函數:
if(service.add(course)) { req.setAttribute("message", "添加成功");//setAttribute方法用於將內容保存在對象中,傳到下一個頁面中 req.getRequestDispatcher("add.jsp").forward(req,resp);//getRequestDispatcher方法用於進入下一個頁面 }
Service層傳遞給dao底層。
public boolean add(Course course) { boolean bean=false; if(!dao.rename(course.getName())) { //檢查是否重名,否的話執行下一步 dao.add(course); bean=true; } return bean; }
Dao層執行添加功能:
String sql = "insert into course(name, teacher, classroom) values('" + course.getName() + "','" + course.getTeacher() + "','" + course.getClassroom() + "')";
五.源代碼:
實體層Course.Java:
private String name;
private String teacher;
private String classroom;
public void setId(int id) {
this.id=id;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public String getClassroom() {
return classroom;
}
public void setClassroom(String classroom) {
this.classroom = classroom;
}
public Course() {}
this.name = name;
this.teacher = teacher;
this.classroom = classroom;
}
}
servlet層代碼如下:
import java.io.IOException;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import service.courseService;
* Servlet implementation class courseServlet
*/
@WebServlet("/courseServlet")
public class courseServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
/**
* 方法選擇
*/
req.setCharacterEncoding("utf-8");
String method = req.getParameter("method");
if ("add".equals(method)) {
add(req, resp);
} else if ("delete".equals(method)) {
delete(req, resp);
} else if ("update".equals(method)) {
update(req, resp);
} else if ("select".equals(method)) {
select(req, resp);
} else if ("getCoursebyName".equals(method)) {
getCoursebyName(req, resp);
} else if ("getCoursebyName2".equals(method)) {
getCoursebyName2(req, resp);
} else if ("list".equals(method)) {
list(req, resp);
}
}
private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
//添加
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
String teacher = req.getParameter("teacher");
String classroom = req.getParameter("classroom");
Course course= new Course(name, teacher, classroom);
//判斷是否重名
if(service.add(course)) {
req.setAttribute("message", "添加成功");//setAttribute方法用於將內容保存在對象中,傳到下一個頁面中
req.getRequestDispatcher("add.jsp").forward(req,resp);//getRequestDispatcher方法用於進入下一個頁面
} else {
req.setAttribute("message", "課程名稱重復,請重新錄入");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
}
// 刪除
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
service.delete(name);
req.setAttribute("message", "課程信息刪除成功");
req.getRequestDispatcher("deletebyName.jsp").forward(req,resp);
}
private void getCoursebyName2(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
/*
* 通過名字得到
* 跳轉至修改
*/
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
Course course =service.getCoursebyName(name);
req.setAttribute("course", course);
req.getRequestDispatcher("update.jsp").forward(req,resp);
}
/*
* 通過名字查找
* 跳轉至刪除
*/
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
Course course =service.getCoursebyName(name);
if(course == null) {
req.setAttribute("message", "查無此課程!");
req.getRequestDispatcher("deletebyName.jsp").forward(req,resp);
} else {
req.setAttribute("course", course);
req.getRequestDispatcher("delete.jsp").forward(req,resp);
}
}
//列出全部信息
req.setCharacterEncoding("utf-8");
List<Course> course = service.list();
req.setAttribute("courses",course);
req.getRequestDispatcher("list.jsp").forward(req,resp);
}
//修改
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
String teacher = req.getParameter("teacher");
String classroom = req.getParameter("classroom");
Course course = new Course(name,teacher, classroom);
int k=service.update(course);
if(k==0) {
req.setAttribute("message", "修改失敗");
req.getRequestDispatcher("courseServlet?method=list").forward(req,resp);
}else if(k==1){
req.setAttribute("message", "修改成功");
req.getRequestDispatcher("courseServlet?method=list").forward(req,resp);
}
}
//查找
req.setCharacterEncoding("utf-8");
String name = req.getParameter("name");
String teacher = req.getParameter("teacher");
String classroom = req.getParameter("classroom");
List<Course> course = service.select(name, teacher, classroom);
req.setAttribute("courses", course);
req.getRequestDispatcher("selectlist.jsp").forward(req,resp);
}
}
service層代碼如下:
import entity.Course;
Dao dao=new Dao();
public boolean add(Course course) {
boolean bean=false;
if(!dao.rename(course.getName())) {
//檢查是否重名,否的話執行下一步
dao.add(course);
bean=true;
}
return bean;
}
public void delete(String name) {
dao.delete(name);
}
public int update(Course course) {
int f=0;
if(dao.update(course)) {
f=1;
}
return f;
}
public Course getCoursebyName(String name) {
//通過Name得到一個Course
return dao.getCoursebyName(name);
}
public List<Course> select(String name, String teacher, String classroom) {
//查找
return dao.select(name, teacher, classroom);
}
//列出表中所有信息
return dao.list();
}
}
Dao層代碼如下:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import util.Shujuku;
/*
* 將函數設置為Boolean類型,只返回真值或假值給service層,方便
*/
public boolean rename(String name) {
//搜索數據庫表course,檢查是否重名
String sql = "select * from courses where name ='" + name + "'";
Connection conn =Shujuku.conn() ;
Statement st= null;
ResultSet rs = null;
boolean bean=false;
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
bean = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Shujuku.close(rs,st, conn);
}
return bean;
}
//添加
String sql = "insert into courses(name, teacher, classroom) values('" + course.getName() + "','" + course.getTeacher() + "','" + course.getClassroom() + "')";
Connection conn =Shujuku.conn() ;
Statement st= null;
boolean bean = false;
int a = 0;
try {
st = conn.createStatement();
st.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
Shujuku.close(st, conn);
}
if (a > 0) {
bean = true;
}
return bean;
}
// 通過名字刪除
boolean f=false;
String sql = "delete from courses where name ='" + name + "'";//刪除
Connection conn = Shujuku.conn();
Statement state = null;
int a=0;
try {
state = conn.createStatement();
a=state.executeUpdate(sql);
}catch (Exception e) {
e.printStackTrace();
} finally {
Shujuku.close(state, conn);
}
if(a>0) {
f=true;
}
return f;
}
// 修改
String sql = "update courses set teacher='" + course.getTeacher() + "', classroom='" + course.getClassroom()+"'where name='"+course.getName()+"'";
Connection conn = Shujuku.conn();
Statement state = null;
boolean f = false;
int a = 0;
state = conn.createStatement();
a = state.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
} finally {
Shujuku.close(state, conn);
}
if (a > 0) {
f = true;
}
return f;
}
String sql = "select * from courses where name ='" + name + "'";
Connection conn =Shujuku.conn() ;
Statement st= null;
ResultSet rs = null;
Course course=null;
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
String teacher = rs.getString("teacher");
String classroom = rs.getString("classroom");
course = new Course(name, teacher, classroom);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Shujuku.close(rs,st, conn);
}
return course;
}
String sql = "select * from courses where ";
if (name !=null) {
sql += "name like '%" + name + "% '";
}else if(name==null) {
sql += " ";
}
if (name !=null&&teacher !=null) {
sql += "and teacher like '%" + teacher + "% '";
}else if(name==null&&teacher !=null) {
sql += "teacher like '%" + teacher + "% '";
}else if(teacher==null) {
sql += " ";
}
if ((name!=null||teacher !=null)&&classroom !=null) {
sql += "and classroom like '%" + classroom + "%'";
}else if(name==null&&teacher==null&&classroom !=null) {
sql += "teacher like '%" + teacher + "% '";
}else if(classroom==null) {
sql += " ";
}
List<Course> list = new ArrayList<>();
Connection conn =Shujuku.conn() ;
Statement st= null;
ResultSet rs = null;
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
Course course=null;
while (rs.next()) {
String name2 = rs.getString("name");
String teacher2 = rs.getString("teacher");
String classroom2 = rs.getString("classroom");
course= new Course(name2, teacher2, classroom2);
list.add(course);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Shujuku.close(rs,st, conn);
}
return list;
String sql = "select * from courses";
List<Course> list = new ArrayList<>();
Connection conn =Shujuku.conn() ;
Statement st= null;
ResultSet rs = null;
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
Course course=null;
while (rs.next()) {
String name2 = rs.getString("name");
String teacher2 = rs.getString("teacher");
String classroom2 = rs.getString("classroom");
course= new Course(name2, teacher2, classroom2);
list.add(course);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Shujuku.close(rs,st, conn);
}
return list;
數據庫連接信息放在util包內:(我這里用的是sql server 2008r2)
import java.sql.Connection; import java.sql.DriverManager; public class Shujuku { public static Connection conn(){ String url="jdbc:sqlserver://localhost:1433;DatabaseName=YourShujukuName";//填寫你的數據庫名 String userName="sa";//填寫你的用戶名,我的是sa String userPwd="tzk19991029";//填寫你的密碼,我的是tzk19991029 Connection con=null; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); System.out.println("加載驅動成功!"); }catch(Exception e){ e.printStackTrace(); System.out.println("加載驅動失敗!"); } try{ con=DriverManager.getConnection(url,userName,userPwd); System.out.println("連接數據庫成功!"); }catch(Exception e){ e.printStackTrace(); System.out.print("SQL Server連接失敗!"); } return con; } }
二.網頁部分
index.jsp是首頁,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>首頁</title>
<style >
.a{
font-size: 26px;
margin-top: 20px;
}
</style>
</head>
<body>
<div align="center">
<h1 style="color: red;">課程基本信息管理系統</h1>
<div class="a">
<a href="add.jsp">課程信息錄入</a>
</div>
<div class="a">
<a href="courseServlet?method=list">課程信息修改</a>
</div>
<div class="a">
<a href="deletebyName.jsp">課程信息刪除</a>
</div>
<div class="a">
<a href="select.jsp">課程信息查詢</a>
</div>
</div>
</body>
</html>
add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){
%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<div align="center">
<h1 style="color: red;">課程信息錄入</h1>
<a href="index.jsp">返回主頁</a>
<form action="courseServlet?method=add" method="post" onsubmit="return check()">
<div >
課程名稱<input type="text" id="name" name="name"/>
</div>
<div >
任課教師<input type="text" id="teacher" name="teacher" />
</div>
<div >
上課地點<input type="text" id="classroom" name="classroom" />
</div>
<div >
<button type="submit" >保 存</button>
</div>
</form>
</div>
<script type="text/javascript">
function check() {
var name = document.getElementById("name");;
var teacher = document.getElementById("teacher");
var classroom = document.getElementById("classroom");
//非空
if(name.value == '') {
alert('課程名稱為空');
name.focus();
return false;
}
if(teacher.value == '') {
alert('教師為空');
teacher.focus();
return false;
}
if(classroom.value == '') {
alert('上課地點為空');
classroom.focus();
return false;
}
}
</script>
</body>
</html>
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> <style> .tb, td { border: 1px solid black; font-size: 22px; } </style> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">課程信息列表</h1> <a href="index.jsp">返回主頁</a> <table class="tb"> <tr> <td>課程名稱</td> <td>任課教師</td> <td>上課地點</td> <td align="center" colspan="2">操作</td> </tr> <c:forEach items="${courses}" var="item"> <tr> <td>${item.name}</td> <td>${item.teacher}</td> <td>${item.classroom}</td> <td><a href="courseServlet?method=getCoursebyName2&name=${item.name}">修改</a></td> </tr> </c:forEach> </table> </div> </body> </html>
deletebyName.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>刪除</title> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">課程信息刪除</h1> <a href="index.jsp">返回主頁</a> <form action="courseServlet?method=getCoursebyName" method="post" onsubmit="return check()"> <div > 課程名稱<input type="text" id="name" name="name"/> </div> <div > <button type="submit" class="b">查 找</button> </div> </form> </div> <script type="text/javascript"> function check() { var name = document.getElementById("name");; //非空 if(name.value == '') { alert('課程名稱為空'); name.focus(); return false; } } </script> </body> </html>
delete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
.tb, td {
border: 1px solid black;
font-size: 22px;
}
</style>
</head>
<body>
<div align="center">
<h1 style="color: red;">課程信息刪除</h1>
<a href="index.jsp">返回主頁</a>
<table class="tb">
<tr>
<td>課程名稱</td>
<td>${course.name}</td>
</tr>
<tr>
<td>任課教師</td>
<td>${course.teacher}</td>
</tr>
<tr>
<td>上課地點</td>
<td>${course.classroom}</td>
</tr>
</table>
<div class="a">
<a onclick="return check()" href="courseServlet?method=delete&name=${course.name}">刪 除</a>
</div>
</div>
<script type="text/javascript">
function check() {
if (confirm("真的要刪除嗎?")){
return true;
}else{
return false;
}
}
</script>
</body>
</html>
select.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<h1 style="color: red;">課程信息查詢</h1>
<a href="index.jsp">返回主頁</a>
<form action="courseServlet?method=select" method="post" onsubmit="return check()">
<div >
課程名稱<input type="text" id="name" name="name"/>
</div>
<div >
任課教師<input type="text" id="teacher" name="teacher" />
</div>
<div >
上課地點<input type="text" id="classroom" name="classroom" />
</div>
<div >
<button type="submit" class="b">查 詢</button>
</div>
</form>
</div>
<script type="text/javascript">
function check() {
var name = document.getElementById("name");;
var teacher = document.getElementById("teacher");
var classroom = document.getElementById("classroom");
//非空
if(name.value == '' && teacher.value == '' && classroom.value == '') {
alert('請填寫一個條件');
return false;
}
}
</script>
</body>
</html>
selectlist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<style>
.tb, td {
border: 1px solid black;
font-size: 22px;
}
</style>
</head>
<body>
<div align="center">
<h1 style="color: red;">課程信息列表</h1>
<a href="index.jsp">返回主頁</a>
<table class="tb">
<tr>
<td>課程名稱</td>
<td>任課教師</td>
<td>上課地點</td>
</tr>
<!-- forEach遍歷出adminBeans -->
<c:forEach items="${courses}" var="item">
<tr>
<td>${item.name}</td>
<td>${item.teacher}</td>
<td>${item.classroom}</td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>
update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">課程信息修改</h1> <a href="index.jsp">返回主頁</a> <form action="courseServlet?method=update&name=${course.name}" method="post" onsubmit="return check()"> <div > 課程名稱<input type="text" id="name" name="name" disabled value="${course.name}"/> </div> <div > 任課教師<input type="text" id="teacher" name="teacher" value="${course.teacher}"/> </div> <div > 上課地點<input type="text" id="classroom" name="classroom" value="${course.classroom}"/> </div> <button type="submit">修 改</button> </form> </div> <script type="text/javascript"> function check() { var name = document.getElementById("name"); var teacher = document.getElementById("teacher"); var classroom = document.getElementById("classroom"); //非空 if(teacher.value == '') { alert('教師為空'); teacher.focus(); return false; } if(classroom.value == '') { alert('上課地點為空'); classroom.focus(); return false; } } </script> </body> </html>
注意:WebContent/WEN-INF/lib包下需要放置jstl.jar包和standard.jar包。可自行去網上下載。