Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示从数据库从servlet检索到jsp文件的数据_Java_Jsp_Servlets_Model View Controller - Fatal编程技术网

Java 显示从数据库从servlet检索到jsp文件的数据

Java 显示从数据库从servlet检索到jsp文件的数据,java,jsp,servlets,model-view-controller,Java,Jsp,Servlets,Model View Controller,当用户单击配置文件链接时,我试图显示用户配置文件详细信息。我正在使用eclipse。也使用mvc架构。没有发生错误,但数据未显示在jsp文件中 CustomerProfileController servlet protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated

当用户单击配置文件链接时,我试图显示用户配置文件详细信息。我正在使用eclipse。也使用mvc架构。没有发生错误,但数据未显示在jsp文件中

CustomerProfileController servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String name = request.getParameter("name");
    CustomerViewQuery cvq = new CustomerViewQuery(name);

    try {
        List<Customer> customers = cvq.list();
        request.setAttribute("customers", customers); // Will be available as ${products} in JSP
        request.getRequestDispatcher("CustomerProfile.jsp").forward(request, response);
    } catch (SQLException e) {
        throw new ServletException("Cannot obtain vehicles from DB", e);
    }
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
字符串名称=request.getParameter(“名称”);
CustomerViewQuery cvq=新CustomerViewQuery(名称);
试一试{
列出客户=cvq.List();
setAttribute(“customers”,customers);//将作为${products}在JSP中提供
getRequestDispatcher(“CustomerProfile.jsp”).forward(请求,响应);
}捕获(SQLE异常){
抛出新的ServletException(“无法从DB获得车辆”,e);
}
}
CustomerViewQuery文件

package dbhelpers;

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 models.Customer;


public class CustomerViewQuery {
    DBConnection databaseCon = new DBConnection();
    String uName;
    public CustomerViewQuery(String name) {
        this.uName = name;
    }

    public List<Customer> list() throws SQLException {
        List<Customer> customers = new ArrayList<Customer>();
        try (
            Connection con = databaseCon.dbconnect();
            PreparedStatement pst = con.prepareStatement("SELECT * FROM customers WHERE username='\"+uName+\"'");
            ResultSet resultSet = pst.executeQuery();
        ) {
            while (resultSet.next()) {
                Customer customer = new Customer();
                customer.setId(resultSet.getInt("id"));
                customer.setName(resultSet.getString("name"));
                customer.setEmail(resultSet.getString("email"));
                customer.setAddress(resultSet.getString("address"));
                customer.setSex(resultSet.getString("sex"));
                customer.setBday(resultSet.getString("bday"));
                customer.setTelephone(resultSet.getString("telephone"));
                customer.setUsername(resultSet.getString("username"));
                customer.setPassword(resultSet.getString("password"));
                customers.add(customer);
            }
        }catch(SQLException e) {
            e.printStackTrace();
        }

        return customers;
    }

}
包dbhelpers;
导入java.sql.Connection;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.util.ArrayList;
导入java.util.List;
进口型号、客户;
公共类CustomerViewQuery{
DBConnection databaseCon=新的DBConnection();
字符串uName;
公共CustomerViewQuery(字符串名称){
this.uName=名称;
}
public List()引发SQLException{
列出客户=新建ArrayList();
试一试(
Connection con=databaseCon.dbconnect();
PreparedStatement pst=con.prepareStatement(“从用户名为“\”+uName+\””的客户中选择*”;
ResultSet ResultSet=pst.executeQuery();
) {
while(resultSet.next()){
客户=新客户();
customer.setId(resultSet.getInt(“id”);
customer.setName(resultSet.getString(“name”);
customer.setEmail(resultSet.getString(“email”);
customer.setAddress(resultSet.getString(“地址”);
customer.setSex(resultSet.getString(“sex”);
customer.setBday(resultSet.getString(“bday”);
customer.setTelephone(resultSet.getString(“电话”);
customer.setUsername(resultSet.getString(“用户名”);
customer.setPassword(resultSet.getString(“password”);
客户。添加(客户);
}
}捕获(SQLE异常){
e、 printStackTrace();
}
返回客户;
}
}
getter和setter位于Customer.java文件中

我没有收到任何错误,但CustomerProfile.jsp文件中也没有显示任何内容。这是密码

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

<c:forEach items="${customers}" var="customer">

</c:forEach>

<div class="container mt-5"><br>
    <form role="form" action="CustomerController" data-toggle="validator" method="post" id="registerForm">
        <div class="form-group row">
            <label for="name" class="col-sm-2 col-form-label">Name</label>
            <div class="col-sm-10">
              <input type="text" name="name" value="${customer.name}" placeholder="Name">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Email</label>
            <div class="col-sm-10">
              <input type="email" name="email" value="${customer.email}" placeholder="Email">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Address</label>
            <div class="col-sm-10">
              <input type="text" name="address" value="${customer.address}" placeholder="Address">
            </div>
          </div>
          <div class="form-group row">
            <label for="sex" class="col-sm-2 col-form-label">Sex</label>
            <div class="col-sm-10">
              <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline1" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline1">Male</label>
                </div>
                <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline2" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline2">Female</label>
              </div>
            </div>
          </div>
           <div class="form-group row">
            <label for="birthdate" class="col-sm-2 col-form-label">Birthdate</label>
            <div class="col-sm-10">
              <input type="date" name="bday" value="${customer.bday}" placeholder="Birthdate" required>
            </div>
          </div>
          <div class="form-group row">
            <label for="telephone" class="col-sm-2 col-form-label">Telephone</label>
            <div class="col-sm-10">
              <input type="text" name="tele" value="${customer.telephone}" placeholder="Telephone">
            </div>
          </div>
          <div class="form-group row">
            <label for="username" class="col-sm-2 col-form-label">Username</label>
            <div class="col-sm-10">
              <input type="text" name="username" value="${customer.username}" placeholder="Username">
            </div>
          </div>
          <div class="form-group row">
            <label for="passowrd" class="col-sm-2 col-form-label">Password</label>
            <div class="col-sm-10">
              <input type="password" name="password" value="${customer.password}" id="inputPassword" placeholder="Password" data-minlength="6">
              <div class="invalid-feedback">
                Please provide a valid city.
              </div>
            </div>
          </div>
        <button type="submit" class="btn btn-primary btn-block btn-large">Sign me up.</button>
    </form><br>
</div>


名称 电子邮件 地址 性 男性 女性 生日 电话 用户名 密码 请提供一个有效的城市。 给我报名。

在这里,我用您的代码更改了一些内容。现在应该可以了。让我知道

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = request.getParameter("name");
CustomerViewQuery cvq=新建CustomerViewQuery()

CustomerServiceWQuery类中名为“getCustomer”的新方法

public class CustomerViewQuery {


   public Customer getCustomer(String name) throws SQLException {

   Customer customer = new Customer();

    try(Connection con = DBConnection.dbconnect()) {

        PreparedStatement pst = con.prepareStatement("SELECT * FROM customers WHERE username=?;");
        pst.setString(1, name); //set name like this (The '1' means first occurance of a question mark '?')
        ResultSet resultSet = pst.executeQuery();

        while (resultSet.next()) {

            customer.setId(resultSet.getInt("id"));
            customer.setName(resultSet.getString("name"));
            customer.setEmail(resultSet.getString("email"));
            customer.setAddress(resultSet.getString("address"));
            customer.setSex(resultSet.getString("sex"));
            customer.setBday(resultSet.getString("bday"));
            customer.setTelephone(resultSet.getString("telephone"));
            customer.setUsername(resultSet.getString("username"));
            customer.setPassword(resultSet.getString("password"));

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

    return customer;
   }

}
此处没有任何更改,只是删除了JSTL forEach标记,因为不再需要它

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


<div class="container mt-5"><br>
    <form role="form" action="CustomerController" data-toggle="validator" method="post" id="registerForm">
        <div class="form-group row">
            <label for="name" class="col-sm-2 col-form-label">Name</label>
            <div class="col-sm-10">
              <input type="text" name="name" value="${customer.name}" placeholder="Name">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Email</label>
            <div class="col-sm-10">
              <input type="email" name="email" value="${customer.email}" placeholder="Email">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Address</label>
            <div class="col-sm-10">
              <input type="text" name="address" value="${customer.address}" placeholder="Address">
            </div>
          </div>
          <div class="form-group row">
            <label for="sex" class="col-sm-2 col-form-label">Sex</label>
            <div class="col-sm-10">
              <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline1" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline1">Male</label>
                </div>
                <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline2" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline2">Female</label>
              </div>
            </div>
          </div>
           <div class="form-group row">
            <label for="birthdate" class="col-sm-2 col-form-label">Birthdate</label>
            <div class="col-sm-10">
              <input type="date" name="bday" value="${customer.bday}" placeholder="Birthdate" required>
            </div>
          </div>
          <div class="form-group row">
            <label for="telephone" class="col-sm-2 col-form-label">Telephone</label>
            <div class="col-sm-10">
              <input type="text" name="tele" value="${customer.telephone}" placeholder="Telephone">
            </div>
          </div>
          <div class="form-group row">
            <label for="username" class="col-sm-2 col-form-label">Username</label>
            <div class="col-sm-10">
              <input type="text" name="username" value="${customer.username}" placeholder="Username">
            </div>
          </div>
          <div class="form-group row">
            <label for="passowrd" class="col-sm-2 col-form-label">Password</label>
            <div class="col-sm-10">
              <input type="password" name="password" value="${customer.password}" id="inputPassword" placeholder="Password" data-minlength="6">
              <div class="invalid-feedback">
                Please provide a valid city.
              </div>
            </div>
          </div>
        <button type="submit" class="btn btn-primary btn-block btn-large">Sign me up.</button>
    </form><br>
</div>


名称 电子邮件 地址 性 男性 女性 生日 电话 用户名 密码 请提供一个有效的城市。 给我报名。

谢谢,它成功了!尽管我还有另一个问题,但如何在不使用循环的情况下在jsp文件中显示数据?因为我在查询中只得到一个数据集。很高兴听到这个消息。如果有帮助,请随意投票/标记为正确答案。我现在将编辑它,向您展示如何在没有循环的情况下完成它。5分钟
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<c:forEach items="${customers}" var="customer">

<div class="container mt-5"><br>
    <form role="form" action="CustomerController" data-toggle="validator" method="post" id="registerForm">
        <div class="form-group row">
            <label for="name" class="col-sm-2 col-form-label">Name</label>
            <div class="col-sm-10">
              <input type="text" name="name" value="${customer.name}" placeholder="Name">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Email</label>
            <div class="col-sm-10">
              <input type="email" name="email" value="${customer.email}" placeholder="Email">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Address</label>
            <div class="col-sm-10">
              <input type="text" name="address" value="${customer.address}" placeholder="Address">
            </div>
          </div>
          <div class="form-group row">
            <label for="sex" class="col-sm-2 col-form-label">Sex</label>
            <div class="col-sm-10">
              <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline1" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline1">Male</label>
                </div>
                <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline2" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline2">Female</label>
              </div>
            </div>
          </div>
           <div class="form-group row">
            <label for="birthdate" class="col-sm-2 col-form-label">Birthdate</label>
            <div class="col-sm-10">
              <input type="date" name="bday" value="${customer.bday}" placeholder="Birthdate" required>
            </div>
          </div>
          <div class="form-group row">
            <label for="telephone" class="col-sm-2 col-form-label">Telephone</label>
            <div class="col-sm-10">
              <input type="text" name="tele" value="${customer.telephone}" placeholder="Telephone">
            </div>
          </div>
          <div class="form-group row">
            <label for="username" class="col-sm-2 col-form-label">Username</label>
            <div class="col-sm-10">
              <input type="text" name="username" value="${customer.username}" placeholder="Username">
            </div>
          </div>
          <div class="form-group row">
            <label for="passowrd" class="col-sm-2 col-form-label">Password</label>
            <div class="col-sm-10">
              <input type="password" name="password" value="${customer.password}" id="inputPassword" placeholder="Password" data-minlength="6">
              <div class="invalid-feedback">
                Please provide a valid city.
              </div>
            </div>
          </div>
        <button type="submit" class="btn btn-primary btn-block btn-large">Sign me up.</button>
    </form><br>
</div>

</c:forEach>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = request.getParameter("name");
CustomerViewQuery cvq = new CustomerViewQuery();

 try {
   //not list required this time, created a new method called 'getCustomer'
    Customer customer = cvq.getCustomer(name);
    request.setAttribute("customer", customer); 
    request.getRequestDispatcher("CustomerProfile.jsp").forward(request, response);

     } catch (SQLException e) {
    throw new ServletException("Cannot obtain vehicles from DB", e);
     }
}
public class CustomerViewQuery {


   public Customer getCustomer(String name) throws SQLException {

   Customer customer = new Customer();

    try(Connection con = DBConnection.dbconnect()) {

        PreparedStatement pst = con.prepareStatement("SELECT * FROM customers WHERE username=?;");
        pst.setString(1, name); //set name like this (The '1' means first occurance of a question mark '?')
        ResultSet resultSet = pst.executeQuery();

        while (resultSet.next()) {

            customer.setId(resultSet.getInt("id"));
            customer.setName(resultSet.getString("name"));
            customer.setEmail(resultSet.getString("email"));
            customer.setAddress(resultSet.getString("address"));
            customer.setSex(resultSet.getString("sex"));
            customer.setBday(resultSet.getString("bday"));
            customer.setTelephone(resultSet.getString("telephone"));
            customer.setUsername(resultSet.getString("username"));
            customer.setPassword(resultSet.getString("password"));

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

    return customer;
   }

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


<div class="container mt-5"><br>
    <form role="form" action="CustomerController" data-toggle="validator" method="post" id="registerForm">
        <div class="form-group row">
            <label for="name" class="col-sm-2 col-form-label">Name</label>
            <div class="col-sm-10">
              <input type="text" name="name" value="${customer.name}" placeholder="Name">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Email</label>
            <div class="col-sm-10">
              <input type="email" name="email" value="${customer.email}" placeholder="Email">
            </div>
          </div>
          <div class="form-group row">
            <label for="email" class="col-sm-2 col-form-label">Address</label>
            <div class="col-sm-10">
              <input type="text" name="address" value="${customer.address}" placeholder="Address">
            </div>
          </div>
          <div class="form-group row">
            <label for="sex" class="col-sm-2 col-form-label">Sex</label>
            <div class="col-sm-10">
              <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline1" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline1">Male</label>
                </div>
                <div class="custom-control custom-radio custom-control-inline">
                  <input name="sex" type="radio" value="${customer.sex}" id="customRadioInline2" class="custom-control-input">
                  <label class="custom-control-label" for="customRadioInline2">Female</label>
              </div>
            </div>
          </div>
           <div class="form-group row">
            <label for="birthdate" class="col-sm-2 col-form-label">Birthdate</label>
            <div class="col-sm-10">
              <input type="date" name="bday" value="${customer.bday}" placeholder="Birthdate" required>
            </div>
          </div>
          <div class="form-group row">
            <label for="telephone" class="col-sm-2 col-form-label">Telephone</label>
            <div class="col-sm-10">
              <input type="text" name="tele" value="${customer.telephone}" placeholder="Telephone">
            </div>
          </div>
          <div class="form-group row">
            <label for="username" class="col-sm-2 col-form-label">Username</label>
            <div class="col-sm-10">
              <input type="text" name="username" value="${customer.username}" placeholder="Username">
            </div>
          </div>
          <div class="form-group row">
            <label for="passowrd" class="col-sm-2 col-form-label">Password</label>
            <div class="col-sm-10">
              <input type="password" name="password" value="${customer.password}" id="inputPassword" placeholder="Password" data-minlength="6">
              <div class="invalid-feedback">
                Please provide a valid city.
              </div>
            </div>
          </div>
        <button type="submit" class="btn btn-primary btn-block btn-large">Sign me up.</button>
    </form><br>
</div>