如何在 Derby DB 的 jsp 页面上显示表格内容?

时间:2021-02-03 20:26:53

标签: java jsp derby

我有 2 个页面,一个 userAdmin 和一个 productAdmin,当我点击进入它们时,页面会加载,但它没有显示来自 Derby DB 的任何相关数据。为了这个例子,我将展示用户数据。 Image of the page - table is not being populated 表格的布局不是很好,但它是讲师给我们的作业的基本代码。一旦我解决了这个问题,我会让它看起来更好。它也应该有编辑和删除用户的链接,但它目前只显示添加 所以这里是所有相关的代码/信息

用户以管理员身份登录并转到管理员页面并单击“userAdmin” - 这将转到 userAdminServlet

public class userAdminServlet extends HttpServlet {

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    
    String action = request.getParameter("action");
    UserManager uServ = new UserManager();
    
    String url = null;
    String query = null; 
    
    if (action == null)
        request.getRequestDispatcher("/userAdmin.jsp").forward(request, response);
    
    // Code from https://stackoverflow.com/questions/13108960/java-add-all-table-data-into-list
    if (action.equals("listUsers")){
        ArrayList<User> users = uServ.getAllUsers();
        request.setAttribute("users", users);
        request.getRequestDispatcher("/userAdmin.jsp").forward(request, response);
        
    }
        
    
    
    if (action.equals("add")){
        request.getRequestDispatcher("/addUser.jsp").forward(request, response);
    }
    
    if (action.equals("delete")){
        deleteUser(request,response);
        ArrayList<User> users = uServ.getAllUsers();
        request.setAttribute("users", users);
        request.getRequestDispatcher("/userAdmin.jsp").forward(request, response);
    }
    
    if (action.equals("insertUser")){
        insertUser(request,response);
        ArrayList<User> users = uServ.getAllUsers();
        request.setAttribute("users", users);
        request.getRequestDispatcher("/userAdmin.jsp").forward(request, response);
    }
    
    if (action.equals("updateCompleteUser")){
        updateUser(request,response);
        ArrayList<User> users = uServ.getAllUsers();
        request.setAttribute("users", users);
        request.getRequestDispatcher("/userAdmin.jsp").forward(request, response);
    }
    if (action.equals("edit")){
        String userId = request.getParameter("id");
        
        if (userId == null)
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        else {
            long uId = 0;
            uServ = new UserManager();
            User oldUser = uServ.getUser(uId);
            request.setAttribute("oldUser", oldUser);
            request.getRequestDispatcher("/editUser.jsp").forward(request, response);
        }
           
    }
    else
        request.getRequestDispatcher("/userAdmin.jsp").forward(request, response);
  
   
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
 * Handles the HTTP <code>GET</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request,response);
   
}

private void insertUser(HttpServletRequest request, HttpServletResponse response){
    
    String email = request.getParameter("email");
    String password = request.getParameter("password");
    String firstName = request.getParameter("firstName");
    String lastName = request.getParameter("lastName");
    String userType = request.getParameter("userType");
    
    User newUser = new User();
    newUser.setEmail(email);
    newUser.setPassword(password);
    newUser.setFirstName(firstName);
    newUser.setLastName(lastName);
    newUser.setUserType(userType);
    
    UserManager uServ = new UserManager();
    uServ.insertUser(newUser);
    
    
    
}

private void updateUser(HttpServletRequest request, HttpServletResponse response){
    
    long id = Long.parseLong(request.getParameter("id"));
    String email = request.getParameter("email");
    String password = request.getParameter("password");
    String firstName = request.getParameter("firstName");
    String lastName = request.getParameter("lastName");
    String userType = request.getParameter("userType");
    
    User newUser = new User();
    newUser.setId(id);
    newUser.setEmail(email);
    newUser.setPassword(password);
    newUser.setFirstName(firstName);
    newUser.setLastName(lastName);
    newUser.setUserType(userType);
    
    UserManager uServ = new UserManager();
    uServ.updateUser(newUser);
    
    
    
}

private void deleteUser(HttpServletRequest request, HttpServletResponse response){
    
    long userId = Long.parseLong(request.getParameter("id"));
    UserManager uServ = new UserManager();
    uServ.deleteUser(userId);
    return;

}

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

/**
 * Returns a short description of the servlet.
 *
 * @return a String containing servlet description
 */
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>

}

这是 UserDAO 代码:

public class UserDAO {

public User getUserByEmail(String email) {

    DBManager dmbgr = new DBManager();
    Connection con = dmbgr.getConnection();
    long userID = 0;
    String password = null;
    String firstName = null;
    String lastName = null;
    String userType = null;
    User tempUser = new User();

    String query = "SELECT * FROM USERDATA WHERE EMAIL=" + "'" + email + "'";
    try {
        PreparedStatement stmt = con.prepareStatement(query);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            userID = (rs.getLong(1));
            password = (rs.getString(3));
            firstName = (rs.getString(4));
            lastName = (rs.getString(5));
            userType = (rs.getString(6));
        }

    } catch (SQLException e) {
        e.printStackTrace();
    }

    tempUser.setEmail(email);
    tempUser.setId(userID);
    tempUser.setFirstName(firstName);
    tempUser.setLastName(lastName);
    tempUser.setPassword(password);
    tempUser.setUserType(userType);
    return tempUser;

}

public User getUserById(long userId) {

    DBManager dmbgr = new DBManager();
    Connection con = dmbgr.getConnection();
    String email = null;
    String password = null;
    String firstName = null;
    String lastName = null;
    String userType = null;
    User tempUser = new User();

    String query = String.format("SELECT * FROM USERDATA WHERE USER_ID=%d", userId);
    try {
        PreparedStatement stmt = con.prepareStatement(query);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            email = (rs.getString(2));
            password = (rs.getString(3));
            firstName = (rs.getString(4));
            lastName = (rs.getString(5));
            userType = (rs.getString(6));
        }

    } catch (SQLException e) {
        e.printStackTrace();
    }
    tempUser.setId(userId);
    tempUser.setEmail(email);
    tempUser.setPassword(password);
    tempUser.setFirstName(firstName);
    tempUser.setLastName(lastName);
    tempUser.setUserType(userType);
    return tempUser;

}

public ArrayList<User> getAllUsers() {

    DBManager dm = new DBManager();
    Connection con = dm.getConnection();

    int userID = 0;
    String email = null;
    String password = null;
    String firstName = null;
    String lastName = null;
    String userType = null;
    User tempUser = new User();

    ArrayList<User> userData = new ArrayList();

    String query = "SELECT * FROM USERDATA";
    try {
        PreparedStatement stmt = con.prepareStatement(query);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            userID = (rs.getInt(1));
            email = (rs.getString(2));
            password = (rs.getString(3));
            firstName = (rs.getString(4));
            lastName = (rs.getString(5));
            userType = (rs.getString(6));

            tempUser.setId(userID);
            tempUser.setEmail(email);
            tempUser.setFirstName(firstName);
            tempUser.setLastName(lastName);
            tempUser.setPassword(password);
            tempUser.setUserType(userType);
            userData.add(tempUser);
        }

    } catch (SQLException e) {
        e.printStackTrace();
    }

    return userData;

}

public void insertUser(User newUser) {

    DBManager dmbgr = new DBManager();
    Connection con = dmbgr.getConnection();
    Statement stmt = null;

    try {

        stmt = con.createStatement();
        String sql = String.format("INSERT INTO USERDATA(EMAIL,PASSWORD,FIRSTNAME,LASTNAME,USERTYPE) "
                + "VALUES('%s','%s','%s','%s','%s')", newUser.getEmail(), newUser.getPassword(), newUser.getFirstName(), newUser.getLastName(), newUser.getUserType());
        stmt.executeUpdate(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

public void updateUser(User newUser) {

    DBManager dmbgr = new DBManager();
    Connection con = dmbgr.getConnection();
    Statement stmt = null;

    try {

        stmt = con.createStatement();
        String sql = String.format("UPDATE USERDATA SET email='%s',password='%s',fname='%s',lname='%s',usertype='%s' where user_id=%d ", newUser.getEmail(), newUser.getPassword(), newUser.getFirstName(), newUser.getLastName(), newUser.getUserType(), newUser.getId());
        stmt.executeUpdate(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

public void deleteUser(long userId) {

    DBManager dmbgr = new DBManager();
    Connection con = dmbgr.getConnection();
    Statement stmt = null;

    try {

        stmt = con.createStatement();
        String sql = String.format("DELETE FROM USERDATA WHERE USER_ID=%d", userId);
        stmt.executeUpdate(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            stmt.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

}

这是用户管理器代码:

public class UserManager {

/**
 * This will take a username and select from user table This will return
 * three possible statuses, login correct, unknown user or password
 * incorrect
 *
 * @param email
 * @param password
 * @return
 */
public User loginUser(String email, String password) {

    UserDAO userDAO = new UserDAO();
    User user = userDAO.getUserByEmail(email);
    if (user.getPassword().equals(password)) {
        return user;
    } else {
        return null;
    }
}

public User getUser(long userId) {
    UserDAO userDAO = new UserDAO();
    User user = userDAO.getUserById(userId);
    return user;
}

public ArrayList<User> getAllUsers() {

    UserDAO uDao = new UserDAO();
    ArrayList<User> userList = uDao.getAllUsers();
    return userList;

}

public void insertUser(User nUser) {
    UserDAO uDao = new UserDAO();
    uDao.insertUser(nUser);
    

}

public void updateUser(User nUser) {
    UserDAO uDao = new UserDAO();
    uDao.updateUser(nUser);
 

}

public void deleteUser(long userId) {
    UserDAO uDao = new UserDAO();
    uDao.deleteUser(userId);
    

}

}

最后,这是输出所有内容的 userAdmin.jsp 文件 - 我将只发布相关代码,无论如何我都包含了 jstl 导入,但是此页面中的所有代码都无法正确格式化以发布!< /p>

    <div class="container bg-light">
        <div class="row">
            <div class="col-lg-12">
                <h1 class="my-4">User Administration</h1>
                <div class="row">
                    <table class="table table-bordered">
                        <thead>
                            <tr>
                                <th scope="col">ID</th>
                                <th scope="col">First Name</th>
                                <th scope="col">Last Name</th>
                                <th scope="col">Email</th>
                                <th scope="col">Action</th>
                            </tr>
                        </thead>
                                                 
                        <tbody>
                            <c:forEach items="${User}" var="user">
                                <c:url value="/userAdminServlet" var="editUserUrl">
                                    <c:param name="action" value="edit"/>
                                    <c:param name="id" value="${user.id}"/>
                                </c:url>
                                <c:url value="/userAdminServlet" var="deleteUserUrl">
                                    <c:param name="action" value="delete"/>
                                    <c:param name="id" value="${user.id}"/>
                                </c:url>
                                <tr>
                                    <td scope="row">${user.id}</td>
                                    <td>${user.email}</td>
                                    <td>${user.firstName}</td>
                                    <td>${user.lastName}</td>
                                    <td><a href="${editUserUrl}"> Edit</a><a href="${deleteUserUrl}">Delete</a></td>
                                </tr>
                            </c:forEach>
                            <tr>
                                <td></td>
                                <td></td>
                                <td></td>
                                <td></td>
                                <c:url value="/userAdminServlet" var="addUserUrl">
                                    <c:param name="action" value="add"/>
                                </c:url>
                                <td><a href="${addUserUrl}"> Add </a></td>

                            </tr>
                        </tbody>
                    </table>      

                </div>
                <!-- /.row -->

            </div>
            <!-- /.col-lg-9 -->

        </div>
        <!-- /.row -->

    </div>
    <!-- /.container -->
    <div class="col-lg-12">
        <br/>
    </div>

    

很有可能只是一个小错误或其他原因,因为在他给我们的示例项目中,一切都运行良好并显示在页面上,我已经看了好几天了,所以我会很感激一对新的眼睛看到我哪里出错了,任何帮助都将不胜感激!

0 个答案:

没有答案
相关问题