Dear.Uu6927 2021-11-19 13:20 采纳率: 0%
浏览 39

服务器错误,真的不知道怎么改了,请各位看下!

数据库连接正常



img

实体类是


```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")
  • 写回答

5条回答 默认 最新

  • 欧阳小伙 2021-11-19 13:45
    关注

    你确认下你的findAll有没有查到数据。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月19日

悬赏问题

  • ¥15 vscode的问题提问
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM