這次想記錄一下用java實現與數據庫的連接並將數據進行顯示,效果開始界面如下
本應用採用MySQL 訪問數據庫,數據庫至包含一個 students 類,代碼如下
CREATE TABLE students(
id serial NOT NULL,
name character VARCHAR(10),
age int,
email VARCHAR(50),
CONSTRAINT pkey PRIMARY KEY(id)
);
Student 類作爲模式類,包含 4 個屬性: id, name, age 和 email 。
public class Student {
private int id;//
private String name;// varchar(10)
private int age;// int
private String email;// varchar(50)
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
BaseDao 類實現數據庫連接,StudentDao 接口定義了數據庫訪問方法,StudentDaoImpl 類是實現類,StudentServlet 是控制類。
BaseDao 類的代碼如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class BaseDao {
public Connection getConnection() {
// 相關參數的設置
String username = "root";// 數據庫用戶名
String password = "abcABC*710712";// 數據庫密碼
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/postgres";
// 數據庫的連接
try {
Class.forName(driver);
return DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Connection dbconn = new BaseDao().getConnection();
System.out.println(dbconn);
}
}
StudentDao 接口的代碼如下:
import java.util.List;
public interface StudentDao {
/**
* 添加學生信息
* @param s Student 對象
* @return 是否添加成功
*/
public boolean addStudent(Student s);
/**
* 得到數據庫中所有學生的信息
* @return 所有學生信息
*/
public List<Student> listStudent();
/**
* 根據id號刪除數據庫中的學生信息
* @param id 要刪除學生的id號
* @return 刪除學生的個數
*/
public int removeStudent(int id);
}
StudentDaoImpl 類的代碼如下:
package Experiment2;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StudentDaoImpl extends BaseDao implements StudentDao {
Connection dbconn = getConnection();
public boolean addStudent(Student s) {
String sql = "insert into Students(name,age,email) values(?,?,?)";
try {
PreparedStatement pstmt = dbconn.prepareStatement(sql);
pstmt.setString(1, s.getName());
pstmt.setInt(2, s.getAge());
pstmt.setString(3, s.getEmail());
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
public List<Student> listStudent() {
List<Student> list = new ArrayList<Student>();
String sql = "select * from Students";
try {
PreparedStatement pstmt = dbconn.prepareStatement(sql);
ResultSet rst = pstmt.executeQuery();
while (rst.next()) {
int id = rst.getInt("id");
String name = rst.getString("name");
int age = rst.getInt("age");
String email = rst.getString("email");
Student student = new Student(id, name, age, email);
list.add(student);
}
return list;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public int removeStudent(int id) {
String sql = "delete from Students where id=?";
try {
PreparedStatement pstmt = dbconn.prepareStatement(sql);
pstmt.setInt(1, id);
return pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
}
StudentServlet 類是控制器,實現學生記錄的添加、顯示和刪除
package Experiment2;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class StudentServlet extends HttpServlet {
public StudentServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if(action!=null && action.equals("addStudent")){
addStudent(request, response);
}else if( action.equals("remove")){
removeStudent(request, response);
}else{
listStudent(request, response);
}
}
/**
* 添加學生信息
*/
public void addStudent(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");
int age = Integer.parseInt(request.getParameter("age"));
String email = new String(request.getParameter("email").getBytes("iso-8859-1"),"utf-8");
Student s = new Student();
s.setName(name);
s.setAge(age);
s.setEmail(email);
StudentDao dao = new StudentDaoImpl();
boolean success = dao.addStudent(s);
if(success){
String message = "插入記錄成功";
request.setAttribute("msg", message);
listStudent(request, response);
}else{
RequestDispatcher rd = request.getRequestDispatcher("ErrorPage.jsp");
rd.forward(request, response);
}
}
/**
* 刪除學生信息
*/
public void removeStudent(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
int id = Integer.parseInt(request.getParameter("id"));
StudentDao dao = new StudentDaoImpl();
int success = dao.removeStudent(id);
if(success>0){
listStudent(request, response);
}
}
/**
* 添加學生信息
*/
public void listStudent(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
StudentDao dao = new StudentDaoImpl();
List<Student> list = dao.listStudent();
request.setAttribute("studentList", list);
RequestDispatcher rd = request.getRequestDispatcher("addStudent.jsp");
rd.forward(request, response);
}
public void init() throws ServletException {
// Put your code here
}
}
addStudent.jsp 頁面用來顯示學生信息
v<!-- 展示學生信息 -->
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*,Experiment2.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>添加學生信息</title>
</head>
<body>
<form action="addStudent.do?action=addStudent" mathod="post">
<p>請輸入學生信息</p>
<p>${msg}</p>
<p>
<table>
<tr><td>姓名</td><td><input type="text" name="name" value="王小明" /></td></tr>
<tr><td>年齡</td><td><input type="text" name="age" value="20" /></td></tr>
<tr><td>Email</td><td><input type="email" name="email"value="[email protected]" /></td></tr>
</table>
</p>
<p><input type="submit" value="確定" /><input type="reset" value="重置" /></p>
</form>
<hr />
<table>
<tr><td>學號</td><td>姓名</td><td>年齡</td>
<td>郵件地址</td><td>是否刪除</td>
</tr>
<c:forEach var="s" items="${studentList}">
<tr>
<td>${s.id}</td>
<td>${s.name}</td>
<td>${s.age}</td>
<td>${s.email}</td>
<td><a href="addStudent.do?action=remove&id=${s.id}">刪除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
這個代碼的實現比較簡單,但是可以有很多其他的應用,所有這次就將它記錄下來。