如何解决如何在 Derby DB 的 jsp 页面上显示表格内容?
我有 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",response);
}
if (action.equals("insertUser")){
insertUser(request,response);
}
if (action.equals("updateCompleteUser")){
updateUser(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,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,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')",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.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 导入,但是此页面中的所有代码都无法正确格式化以发布!
<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>
很有可能只是一个小错误或其他原因,因为在他给我们的示例项目中,一切都运行良好并显示在页面上,我已经看了好几天了,所以我会很感激一对新的眼睛看到我哪里出错了,任何帮助都将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。