Выполнять результаты запроса к базе данных на основе сервлетов в формате таблицы в JSP - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть требование для отображения результатов запроса к базе данных в формате таблицы в JSP. Я пробовал различные варианты, используя forEach и не смог достичь. Не могли бы вы помочь получить JSP для результатов БД из метода do Post?

Вот мой сервлет

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);

    Connection con = null;
    Statement sta = null;
    String url = "jdbc:mysql://localhost/cass_db";
    String dbdriver = "com.mysql.jdbc.Driver";
    String username = "app_user";
    String password = "passwordxxxx";

    try {
        Class.forName(dbdriver);
        con = DriverManager.getConnection(url, username, password);
        sta = con.createStatement();
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String Sql = "Select * from doctors";
    ArrayList<String> list = new ArrayList<String>();
    String FileName = "/Users/asia/Downloads/test.log";
    FileOutputStream file = new FileOutputStream(FileName);
    try {
        ResultSet rs = sta.executeQuery(Sql);
        while (rs.next()) {
            file.write(rs.getBytes(5));
            file.write(System.getProperty("line.separator").getBytes());
            list.add(rs.getString("doctor_nric"));
            list.add(rs.getString("doctor_full_name"));
            request.setAttribute("results", list);
        }
        con.close();
        file.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    request.getRequestDispatcher("./DBResults.jsp").forward(request, response);

}

}

Структура таблицы базы данных:

doctor_id, doctor_full_name, doctor_login_name, doctor_password, doctor_nric;

1, 'Daniel Ricciardo', 'dany', 'NZQbTKL2Z8pakBcUME3y/A==', 'G6345688X'

Код JSP здесь

<form action="./DBResults" name="form_DBResults" method="post">
  <label> Click here</label> <input type="submit" value="GetDBResults" id="submitBtn" />
</form>

<table border="1"> 
  <c:forEach items="${results}" var="result">
    <tr>
      <td> <c:out value="${result.doctor_nric}" /></td>
      <td> <c:out value="${result.doctor_full_name}" /> </td>
    </tr>
  </c:forEach> 
</table>

Приведенный выше jsp не отображает результаты в виде таблицы, я получаю HTTP Status 500

Внутренняя ошибка сервера @ "<td> <c:out value="${result.doctor_nric}" /></td>"

Если я использую <td> <c:out value="${result}.{doctor_nric}" /></td>, тогда я получаю результаты, подобные G6345688X.{doctor_nric}, но я ожидаю результатов переменных базы данных в формате таблицы.

Не могли бы вы помочь установить переменную БД и ее эквивалент в JSP?

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете использовать отображение таблицы JSP. Нет необходимости использовать любой для.

<display:table name="someList" id="row" requestURI="MyAction.do">      
    <display:column property="id" title="identifier"/>  
    <display:column property="description" title="Comments"/>
</display:table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...