数据库连接正常
实体类是
```java
package javabean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import DBHelper.DBHelper;
public class Bean_User {
private String id;
private String name;
private String password;
private int age;
private String birth;
//定义用户信息
private Connection conn = null;
private PreparedStatement stmt = null; //放SQL语句
public Bean_User() {
try {
conn = DBHelper.getConnection(); //自动调用DBHelper.getConnection(),实现连接数据库服务器;
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public Connection getConn() {
return conn;
}
public void setConn(Connection conn) {
this.conn = conn;
}
public PreparedStatement getStmt() {
return stmt;
}
public void setStmt(PreparedStatement stmt) {
this.stmt = stmt;
}
//增删改查的方法:
//查找所有用户方法
public List<Bean_User> findAll() {//无参
ArrayList<Bean_User> userList = new ArrayList<Bean_User>();
String sql = "select * from user";
try {
ResultSet rs = null; //返回记录不止一条时,就需要定义结果集用来存在若干条记录,通过rs.getXXX方法获取相应的字段值,注意类型要匹配
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next()) {
Bean_User user = new Bean_User();
user.setId(rs.getString("id"));//注意类型要匹配
user.setName(rs.getString("name")); //将数据集的记录字段值赋值给类的属性
user.setPassword(rs.getString("password"));
user.setAge(rs.getInt("age"));
user.setBirth(rs.getString("birth"));
userList.add(user); //将一个个user添加到list里面
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return userList; //userlist是ArrayList<User> 的实例化对象,要和List<User>匹配,写方法的时候要注意方法的返回值类型匹配
}
//查找用户的方法,需要传入id
public Bean_User find(String id) {
Bean_User user = new Bean_User();
String sql = "select * from user where id=?";
try {
ResultSet rs = null;
stmt=conn.prepareStatement(sql);
stmt.setString(1, id); //将参数id传递给sql中的第1个参数
rs=stmt.executeQuery(); //执行sql语句
while(rs.next()) {
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setAge(rs.getInt("age"));
user.setBirth(rs.getString("birth"));
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return user;
}
//更新方法,需要传进id、用户名、密码、年龄、生日
public boolean update(String id,String name,String password,int age,String birth) {
Bean_User user = new Bean_User();
user.setId(id);
user.setName(name);//用set的方法直接给user
user.setPassword(password);
user.setAge(age);
user.setBirth(birth);
String sql = "update user set name=?,password=?,age=?,date=? where id=?";
boolean flag=false;//flag默认为false
try {
stmt=conn.prepareStatement(sql);//将更新后的值赋值给其ID所在的字段
stmt.setString(1,user.getId());
stmt.setString(2,user.getName());
stmt.setString(3, user.getPassword());
stmt.setInt(4, user.getAge());
stmt.setString(5, user.getBirth());
if(stmt.executeUpdate()!=0) { //更新成功flag为true
flag=true;
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return flag;
}
//删除方法,需要传进id
public boolean delete(String id) {
String sql = "delete from user where id=?";
boolean flag=false;
try {
stmt=conn.prepareStatement(sql);
stmt.setString(1, id);
if(stmt.executeUpdate()!=0) {
flag=true;
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return flag;
}
//添加方法,需要传进id,用户名、密码、年龄、生日
public boolean insert(String id,String name,String password,int age,String date) {
Bean_User user = new Bean_User();
user.setId(id);
user.setName(name);
user.setPassword(password);
user.setAge(age);
user.setBirth(birth);
String sql = "insert into user(id,name,password,age,birth) values (?,?,?,?,?)";
boolean flag=false;
try {
stmt=conn.prepareStatement(sql);
stmt.setString(1,user.getId());
stmt.setString(2,user.getName());
stmt.setString(3, user.getPassword());
stmt.setInt(4, user.getAge());
stmt.setString(5, user.getBirth());
if(stmt.executeUpdate()!=0) {
flag=true;
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
return flag;
}
}
servlet是这样的:
package servlet;
import java.io.IOException;
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 javabean.Bean_User;
/**
* Servlet implementation class Ser_User
*/
@WebServlet("/Ser_User")
public class Ser_User extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public Ser_User() {
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
//获取本次操作的类型
String type = request.getParameter("type");
//调用Bean_User中的增删改查方法:
//添加
if(type.equals("insert")) {
boolean flag = false;
Bean_User user = new Bean_User();
flag = user.insert((String)request.getParameter("id"),(String)request.getParameter("name"), (String)request.getParameter("password"), Integer.parseInt(request.getParameter("age")),(String)request.getParameter("birth"));
//将添加是否成功的信息传回
request.setAttribute("msg", flag);
request.getRequestDispatcher("./UserServlet?type=findAll").forward(request, response);//添加用户成功后,显示所有用户信息
}
//删除
if(type.equals("delete")) {
boolean flag = false;
Bean_User user = new Bean_User();
flag = user.delete((String)request.getParameter("id"));
//将删除是否成功的信息传回
request.setAttribute("msg", flag);
request.getRequestDispatcher("./UserServlet?type=findAll").forward(request, response);//删除用户成功后,显示所有用户信息
}
//更新
if(type.equals("update")) {
boolean flag = false;
Bean_User user = new Bean_User();
flag = user.insert((String)request.getParameter("id"),(String)request.getParameter("name"), (String)request.getParameter("password"), Integer.parseInt(request.getParameter("age")),(String)request.getParameter("birth"));
//将更新是否成功的信息传回
request.setAttribute("msg", flag);
request.getRequestDispatcher("./UserServlet?type=findAll").forward(request, response);//修改用户信息成功后,显示所有用户信息
}
//查找
if(type.equals("find")) {
Bean_User user = new Bean_User();
//将查找到的对象传回
request.setAttribute("user", user);
request.getRequestDispatcher("./user_info.jsp").forward(request, response); //跳转到单独显示这个user信息的jsp页面
}
//查找所有
if(type.equals("findAll")) {
//创建service对象,并使用它的查找方法
Bean_User user = new Bean_User();
List<Bean_User> userList = user.findAll();
//将查找到的集合传回
request.setAttribute("userList", userList);
request.getRequestDispatcher("./user_list.jsp").forward(request, response);//跳转到显示userlsit(所有user)信息的jsp页面
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
jsp如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" import="java.util.*,javabean.Bean_User" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<title>欢迎使用User管理系统</title>
</head>
<body>
<div>
<form action="./Ser_User?type=insert" method="post">
用户ID<input type="text" name="id" style="width:10%;height:5%">
用户名<input type="text" name="name" style="width:10%;height:5%">
密码<input type="text" name="password" style="width:10%;height:5%">
年龄<input type="text" name="age" style="width:10%;height:5%">
生日<input type="text" name="date" style="width:10%;height:5%">
<button type="submit" class="btn btn-default">添加用户</button>
</form>
</div>
<br>
<div>
<form action="./Ser_User?type=update" method="post">
用户ID<input type="text" name="id" style="width:10%;height:5%">
用户名<input type="text" name="name" style="width:10%;height:5%">
密码<input type="text" name="password" style="width:10%;height:5%">
年龄<input type="text" name="age" style="width:10%;height:5%">
生日<input type="text" name="date" style="width:10%;height:5%">
<button type="submit" class="btn btn-default">修改信息</button>
</form>
</div>
<br>
<div>
<form action="./Ser_User?type=find" method="post">
用户ID<input type="text" name="id" style="width:10%;height:5%">
<button type="submit" class="btn btn-default">查询用户</button>
</form>
</div>
<br>
<div>
<form action="./Ser_User?type=delete" method="post">
用户ID<input type="text" name="id" style="width:10%;height:5%">
<button type="submit" class="btn btn-default">删除用户</button>
</form>
</div>
<br>
<!-- 遍历userList集合,输出所有用户 -->
<%
List<Bean_User> userList = (ArrayList<Bean_User>)request.getAttribute("userList");
%>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr><th>用户ID</th><th>用户名</th><th>密码</th><th>年龄</th><th>生日</th></tr>
</thead>
<%
for(Bean_User user : userList){
%>
<tr>
<td><%=user.getId() %></td>
<td><%=user.getName() %></td>
<td><%=user.getPassword() %></td>
<td><%=user.getAge() %></td>
<td><%=user.getBirth() %></td>
</tr>
<%
}
%>
</table>
</div>
</div>
</div>
</body>
</html>
运行后错误情况是这样的:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/651779892736192.png "#left")