最近做完了一個圖書系統的增刪改查,想着來總結一下這幾個月的所學內容。
一.首先你需要在電腦上安裝上mysql或者sql server(本文以mysql為例)
mysql官網:MySQL :: Begin Your Download
sql server官網:SQL Server 下載 | Microsoft
二.Bean層
Bean層為數據表對應的Java類,是封裝數據的模型,比如添加課程系統,在前台提交的課程信息,后台會對應一個Course類,把課程的信息封裝到Course中。在這里,我們寫一個course.java。
1 package Bean; 2 3 public class Course { 4 //private類,私有方法公開用,安全 5 private String teachername; 6 private String place; 7 private String classname; 8 /*set和get用於設置和讀取Java private變量的方法。 9 這樣子外部程序就不會直接訪問程序的變量。 10 只能通過set去設置值,用get去讀取值。 11 有利於對外封裝。防止外部程序隨意修改我們的變量。*/ 12 public String getClassname() { 13 return classname; 14 } 15 public void setClassname(String classname) { 16 this.classname = classname; 17 } 18 19 public String getTeachername() { 20 return teachername; 21 } 22 public void setTeachername(String teachername) { 23 this.teachername = teachername; 24 } 25 public String getPlace() { 26 return place; 27 } 28 public void setPlace(String place) { 29 this.place = place; 30 } 31 }
三.dao層
dao層叫數據訪問層,全稱為data access object,專門負責一些對數據庫的訪問,屬於一種比較底層,比較基礎的操作,具體到對於某個表、某個實體的增刪改查。此處為增,寫一個daoCourse.java。
1 package dao; 2 import java.sql.Connection; 3 import java.sql.PreparedStatement; 4 import java.sql.SQLException; 5 import Bean.Course; 6 import util.DBUtil; 7 8 public class daoCourse { 9 10 public boolean add(Course n) 11 { 12 boolean f=false; 13 int a=0; 14 String sql="insert submitcourse(classname,teachername,place) values(?,?,?)"; 15 try { 16 Connection conn=DBUtil.getConnection(); 17 PreparedStatement pstmt=conn.prepareStatement(sql); 18 pstmt.setString(1,n.getClassname()); 19 pstmt.setString(2,n.getTeachername()); 20 pstmt.setString(3,n.getPlace()); 21 a=pstmt.executeUpdate(); 22 } catch (SQLException e) { 23 // TODO Auto-generated catch block 24 e.printStackTrace(); 25 } 26 if(a>0) f=true; 27 return f; 28 } 29 }
四.servlet層
servlet是一個java接口,其功能如下(1)創建並返回一個包含基於客戶請求性質的動態內容的完整的 HTML 頁面。我們建立一個course_servlet.java。
(2)創建可嵌入到現有 HTML 頁面中的一部分 HTML 頁面( HTML 片段)。
(3)與其它服務器資源(包括數據庫和基於 Java 的應用程序)進行通信。
package servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Bean.Course; import dao.daoCourse; /** * Servlet implementation class course_servlet */ @WebServlet("/course_servlet") public class course_servlet extends HttpServlet { private static final long serialVersionUID = 1L; daoCourse gooddao=new daoCourse(); /** * @see HttpServlet#HttpServlet() */ public course_servlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String teachername=request.getParameter("teachername"); String classname=request.getParameter("classname"); String place=request.getParameter("place"); Course n=new Course(classname,teachername,place); gooddao.add(n); request.setAttribute("message", "添加成功"); request.getRequestDispatcher("NewFile2.jsp").forward(request, response);
}
五.util層
util用於連接數據庫,我們寫一個DBUtil.java。
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBUtil { public static Connection getConnection() { //1.添加mysql的驅動jar包到項目中的WebContent/WEB-INF/lib //2.如何連接數據庫? Connection conn=null; try { //加載數據庫jar包的驅動 Class.forName("com.mysql.cj.jdbc.Driver"); //連接數據庫 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/submitcourse?serverTimezone=UTC", "root", "123456"); System.out.println("連接成功!"); //3.如何操作數據庫里的數據 //定義sql語句 //執行sql語句 //獲取sql語句執行器 //處理結果 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } public static void main(String[] args) { DBUtil.getConnection(); } public static void close(Connection connection ) { try { if (connection != null) { connection.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void close(PreparedStatement preparedStatement ) { try { if (preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void close(ResultSet resultSet ) { try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
六.寫jsp
1.NewFile.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>添加課程</title> </head> <body> <form action="course_servlet" method="post"> 課程名稱:<input type="text" id="classname" name="classname"><br> 教師姓名:<input type="text" id="teachername" name="teachername"><br> 教學地點:<input type="text" id="place" name="place"><br> <input type="submit" value="添加"> </form> </body> </html>
2.NewFile2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <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> <%} %> <h1>添加成功</h1> </body> </html>
七.數據庫表
八.運行結果
以上是關於課程添加並連接數據庫所呈現的內容,接下來會繼續給大家更新刪改查。