【问题标题】:JSP displays blank dataJSP显示空白数据
【发布时间】:2017-07-06 15:21:28
【问题描述】:

我在这里发疯了想弄清楚为什么我的 JSP 没有在表中显示数据。似乎 servlet 连接到 MySQL 并填充数据,但是我无法将该数据推送到 JSP.setAttribute() 方法正在工作(对象在那里)。我无法提取特定信息并在浏览器中以格式化形式显示它。如果有人能指出如何解决这个问题......为什么 JSTL 表达式没有加载正确的信息。Eclipse 不返回任何错误并且整个应用程序编译....它只是显示空白页面。您可以在下面找到代码。

提示:我正在测试是否可以推送 LIST 并且可以显示对象。它起作用了,因此对象对 JSP 是“可见的”。当我尝试加载特定信息(用户名、密码或电子邮件)时,它返回空白。感谢您提供任何帮助/提示。

您可以在下面找到代码。

UserBean.java

package com.admin;

public class UserBean {
    private String password;
    private String firstname;
    private String lastname;
    private String email;
    private String usertype;
    private String datecreated;
    private String username;

    public UserBean(){};

    public UserBean(String username2, String password2, String firstname2, String lastname2, String email2,
            String usertype2, String datecreated2) {
    }

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getUsertype() {
        return usertype;
    }
    public void setUsertype(String usertype) {
        this.usertype = usertype;
    }
    public String getDatecreated() {
        return datecreated;
    }
    public void setDatecreated(String datecreated) {
        this.datecreated = datecreated;
    }

}

User.DAO.java

package com.admin;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.clientdb.ConnectionManager;

public class UserDAO {

    public static List<UserBean> listOfUsers()
    {
        List<UserBean> userList=new ArrayList<>();
        String query="SELECT * FROM users";

        try
        {
            Connection conn = ConnectionManager.getConnection();
            Statement stm = conn.createStatement();
            ResultSet rs = stm.executeQuery(query);

            while(rs.next())
            {
                String username=rs.getString("username");
                String password=rs.getString("password");
                String firstname=rs.getString("firstname");
                String lastname=rs.getString("lastname");
                String email=rs.getString("email");
                String usertype=rs.getString("usertype");
                String datecreated=rs.getString("date_created");

                UserBean user=new UserBean(username,password,firstname,lastname,email,usertype,datecreated);
                userList.add(user);
            }
            stm.close();
            rs.close();
            conn.close();       
        }
        catch(Exception ex){System.out.println(ex);}

        return userList;

}}

UserAdmin.java

package com.admin;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserAdmin extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            List<UserBean> userList = UserDAO.listOfUsers();
            request.getSession().setAttribute("userList",userList);
    request.getRequestDispatcher("userlist.jsp").forward(request,response);
        }
}

userlist.jsp

    <table class="table table-hover"  style="margin-top:20px;">
  <thead>
    <tr>
      <th>Username</th>
      <th>Password</th>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Email</th>
      <th>User Type</th>
      <th>Date Created</th>
    </tr>
  </thead>
  <tbody>
  <c:forEach items="${userList}" var="user">
    <tr> 
      <td><c:out value="${user.username}"/></td>
      <td><c:out value="${user.password}"/></td>
      <td><c:out value="${user.firstname}"/></td>
      <td><c:out value="${user.lastname}"/></td>
      <td><c:out value="${user.email}"/></td>
      <td><c:out value="${user.usertype}"/></td>
      <td><c:out value="${user.datecreated}"/></td>
      <td>
        <a href="reset.html" role="button" class="btn btn-primary">RESET</a>
        <!--  <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#userDeleteModal">DELETE</button>-->
        <a href="deleteUser.do?email=${user.email}" role="button" class="btn btn-danger">DELETE</a>       
      </td>
    </tr>
  </c:forEach>
  </tbody>
</table>

【问题讨论】:

    标签: java jsp servlets jstl


    【解决方案1】:

    您的 UserBean 构造函数不会为字段赋值。

    public UserBean(String username2, String password2, String firstname2, String lastname2, String email2,
            String usertype2, String datecreated2) {
        username = username2;
        password = password2; 
        // ... etc
    }
    

    你还记得导入 c:core 吗?

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    

    【讨论】:

    • 构造函数是问题!!!不敢相信我错过了它的基本原理。不再依赖 Eclipse 自动生成器。谢谢!!!
    • 很高兴能帮上忙 :-)
    【解决方案2】:

    试试这个:

     <c:forEach items="${sessionScope.userList}" var="user">
            <tr> 
              <td><c:out value="${user.username}"/></td>
              <td><c:out value="${user.password}"/></td>
              <td><c:out value="${user.firstname}"/></td>
              <td><c:out value="${user.lastname}"/></td>
              <td><c:out value="${user.email}"/></td>
              <td><c:out value="${user.usertype}"/></td>
              <td><c:out value="${user.datecreated}"/></td>
              <td>
                <a href="reset.html" role="button" class="btn btn-primary">RESET</a>
                <!--  <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#userDeleteModal">DELETE</button>-->
                <a href="deleteUser.do?email=${user.email}" role="button" class="btn btn-danger">DELETE</a>       
              </td>
            </tr>
     </c:forEach>
    

    【讨论】:

      【解决方案3】:

      &lt;c:forEach items="${sessionScope.userList}" var="user"&gt;

      【讨论】:

        猜你喜欢
        • 2020-08-13
        • 1970-01-01
        • 2016-10-15
        • 2013-02-14
        • 2019-04-15
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 2017-09-13
        相关资源
        最近更新 更多