Java Web实现信息管理
Java Web實現信息管理
前言:
大二上學期剛學完Oracle,老師就要求用Java語言操作Oracle,當時真的是懵了。回顧自己前兩年的生活,大一上學期學習C語言,下學期學習Java,當時教課老師是學硬件的。課上講一些理論性的問題,剩余時間讓我們比這課本敲代碼,感覺自己學的Java太片面了,而且那個時候也沒有感到Java很重要,直到現在真的后悔之前沒有好好學習Java…現在想想,所謂的連接Oracle和MySQL區別也不是很大,JDBC連接數據庫的步驟都是固定的,SQL語句也差不多,之間的區別就在,數據庫所屬的公司不同,驅動jar包不同,具體的驅動類不同,或許,想到更細致一點,數據庫的用戶名和密碼不同。現在,JSP,servlet,三層架構,MVC框架,前端技術( HTML CSS JS …)涉及的知識范圍越廣,理解起來其實也更加的容易。
Oracle數據庫:
- 驅動jar包(從官網進行下載):ojdbc-x.jar
- 具體驅動類:oracle.jdbc.OracleDriver
MySQL數據庫
- 驅動jar包:mysql-connection-java-x.jar
- 具體驅動類:com.mysql.jdbc.Driver
下面是具體的項目管理:
主頁面:顯示全部學生信息index.jsp
查詢操作:
更新修改操作:
增加操作:
點擊刪除(超鏈接)后,數據庫中對應的數據成功刪除(這里不再展示)
實現代碼:
StudentDao.java
package org.student.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;import org.student.entity.Student;/*** @author 11441*數據訪問層:原子性,具體的 增刪改查*/ public class StudentDao {private final String URL = "jdbc:mysql://localhost:3306/test1";private final String USERNAME = "root";private final String PASSWOED = "root";//判斷學生存在public boolean isExist(int sno) {return queryStudentBySno(sno)==null ? false : true;}//增加public boolean addStudent(Student student) {//封裝到數據類Connection connection = null;PreparedStatement pstmt = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "insert into student values (?,?,?,?)";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, student.getSno());pstmt.setString(2, student.getSname());pstmt.setInt(3, student.getSage());pstmt.setString(4, student.getSaddress());int count = pstmt.executeUpdate();if(count > 0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//根據學號修改學生:根據sno找到要修改的人public boolean updateStudentBySno(int sno,Student student) {Connection connection = null;PreparedStatement pstmt = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "update student set sname = ?,sage=?,saddress=? where sno=?";pstmt = connection.prepareStatement(sql);pstmt.setString(1, student.getSname());pstmt.setInt(2, student.getSage());pstmt.setString(3, student.getSaddress());pstmt.setInt(4, sno);int count = pstmt.executeUpdate();if(count > 0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//根據學號刪除學生public boolean deleteStudentBySno(int sno) {//封裝到數據類Connection connection = null;PreparedStatement pstmt = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "delete from student where sno = ?";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, sno);int count = pstmt.executeUpdate();if(count > 0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//根據學號查詢學生信息public Student queryStudentBySno(int sno) {Student student = null;Connection connection = null;PreparedStatement pstmt = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "select * from student where sno = ?";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, sno);rs = pstmt.executeQuery();if(rs.next()) {int no = rs.getInt("sno");String name = rs.getString("sname");int age = rs.getInt("sage");String address = rs.getString("saddress");student = new Student(no,name,age,address);}return student;} catch (ClassNotFoundException e) {e.printStackTrace();return null;} catch (SQLException e) {e.printStackTrace();return null;} catch (Exception e) {e.printStackTrace();return null;} finally {try {if(rs != null) rs.close();if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//查詢全部學生(很多學生)public List<Student> queryAllStudent() {List<Student> students = new ArrayList<>();Student student = null;Connection connection = null;PreparedStatement pstmt = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "select * from student";pstmt = connection.prepareStatement(sql);rs = pstmt.executeQuery();while(rs.next()) {int no = rs.getInt("sno");String name = rs.getString("sname");int age = rs.getInt("sage");String address = rs.getString("saddress");student = new Student(no,name,age,address);students.add(student);}return students;} catch (ClassNotFoundException e) {e.printStackTrace();return null;} catch (SQLException e) {e.printStackTrace();return null;} catch (Exception e) {e.printStackTrace();return null;} finally {try {if(rs != null) rs.close();if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}} }Student.java
package org.student.entity;/*** @author 11441*student實體類*/ public class Student {private int sno;private String sname;private int sage;private String saddress;public Student(String sname, int sage, String saddress) {this.sname = sname;this.sage = sage;this.saddress = saddress;}public Student(int sno, String sname, int sage, String saddress) {this.sno = sno;this.sname = sname;this.sage = sage;this.saddress = saddress;}public Student() {}public Student(int sno, String sname, int sage) {this.sno = sno;this.sname = sname;this.sage = sage;}public Student(int sage, String saddress) {this.sage = sage;this.saddress = saddress;}public int getSno() {return sno;}public void setSno(int sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public int getSage() {return sage;}public void setSage(int sage) {this.sage = sage;}public String getSaddress() {return saddress;}public void setSaddress(String saddress) {this.saddress = saddress;}@Overridepublic String toString() {return this.getSno()+"-"+this.getSname()+"-"+this.getSage()+"-"+this.getSaddress();} }StudentService.java
package org.student.service;import java.util.List;import org.student.dao.StudentDao; import org.student.entity.Student;/*** @author 11441*業務邏輯層,邏輯性的增刪改查,(增:查+增)到Dao層進行的組裝*/ public class StudentService {StudentDao studentDao = new StudentDao();public boolean addStudent(Student student) {if(!studentDao.isExist(student.getSno())) {//學生不存在,增加該學生studentDao.addStudent(student);return true;}else {System.out.println("該學生已存在");return false;}}public boolean deleteStudentBySno(int sno) {if(studentDao.isExist(sno)) {return studentDao.deleteStudentBySno(sno);}else {return false;}}public boolean updateStudentBySno(int sno,Student student) {if(studentDao.isExist(sno)) {return studentDao.updateStudentBySno(sno,student);}else {return false;}}//根據學號查詢學生public Student queryStudentBySno(int sno) {return studentDao.queryStudentBySno(sno);}//查詢所有學生public List<Student> queryAllStudents() {return studentDao.queryAllStudent();} }QueryAllStudentdServlet.java
(關于Servlet還有AddStudentServlet,DeleteStudentServlet,QueryStudentBySnoServlet,UpdateStudentServlet,這里就不再展示)
WebContent中的jsp文件:
index.jsp
<%@page import="org.student.service.StudentService"%> <%@page import="org.student.dao.StudentDao"%> <%@page import="java.util.List"%> <%@page import="org.student.entity.Student"%> <%@page import="org.student.servlet.QueryAllStudentdServlet"%> <%@ 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>學生信息列表</title> <style type="text/css"> #formstyle {margin:100px 500px; } table{width: 80%;height: 100%; } </style> </head> <body background="photo/海浪.jpg"> <div id="formstyle"><table border="#008C8C 3px solid"><caption>學生信息管理系統</caption><tr align="left" ><th>學號</th><th>姓名</th><th>年齡</th><th>操作</th></tr><!-- 學生信息有幾行,要通過循環 --><%/* 獲取request域中的數據 */List<Student> students = (List<Student>)request.getAttribute("students");for(Student student : students){%><tr><td><a href="QueryStudentBySnoServlet?sno=<%=student.getSno() %>"><%=student.getSno()%></a></td><td><%=student.getSname()%></td><td><%=student.getSage()%></td><td><a href="DeleteStudentServlet?sno=<%=student.getSno()%>">刪除</a></td> </tr><%}%></table><a href="add.jsp">新增</a> </div> </body> </html>add.jsp
<%@page import="org.student.entity.Student"%> <%@ 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> </head> <body><%Student student = (Student)request.getAttribute("student");%> <!--通過表單展示學生 --><form action="UpdateStudentServlet">學號:<input type="text" name="sno" value="<%=student.getSno() %>" readonly="readonly" /><br/>姓名:<input type="text" name="sname" value="<%=student.getSname() %>"/><br/>年齡:<input type="text" name="sage" value="<%=student.getSage() %>"/><br/>地址:<input type="text" name="saddress" value="<%=student.getSaddress() %>"/><br/><input type="submit" value=" 修改" /><br/><a href="QueryAllStudentdServlet">返回</a></form> </body> </html>studentInfo.jsp
<%@page import="org.student.entity.Student"%> <%@ 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> </head> <body><%Student student = (Student)request.getAttribute("student");%> <!--通過表單展示學生 --><form action="UpdateStudentServlet">學號:<input type="text" name="sno" value="<%=student.getSno() %>" readonly="readonly" /><br/>姓名:<input type="text" name="sname" value="<%=student.getSname() %>"/><br/>年齡:<input type="text" name="sage" value="<%=student.getSage() %>"/><br/>地址:<input type="text" name="saddress" value="<%=student.getSaddress() %>"/><br/><input type="submit" value=" 修改" /><br/><a href="QueryAllStudentdServlet">返回</a></form> </body> </html>總結
web項目中信息在各個層次之間的傳遞的過程,跳轉頁面重定向和請求轉發的區別,在JSP中怎樣獲取參數,調用方法等各種細節,需要不斷的練習
總結
以上是生活随笔為你收集整理的Java Web实现信息管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网--被3整除
- 下一篇: Leetcode--75. 颜色分类