Извлечение данных из базы данных в текстовое поле или текстовую область в Java - PullRequest
2 голосов
/ 23 ноября 2010

Я знаю, что мы можем извлечь текст из текстового поля или текстовой области, а затем вставить данные в таблицу.Как мы можем сделать обратное?То есть, как поместить все данные обратно в определенные текстовые поля или области из базы данных на основе какого-либо условия?сделать мини-проект.Это проект информационной системы HR.Я должен иметь возможность обновлять данные сотрудника на основе его удостоверения личности.Пока я спроектировал и представил это следующим образом: есть выпадающий список идентификаторов.Я выбираю один и нажимаю OK, используя обработчик формы.Затем он пересылает сервлету, который отображает форму, которую я сделал при добавлении сотрудника.Только вместо того, чтобы быть пустыми, эти текстовые поля состоят из данных, которые я вставил при добавлении вышеупомянутого сотрудника.Итак, теперь, как мне извлечь эти значения столбца и поместить его обратно в текстовые поля.Я экспериментировал с установкой значений полей в качестве имен атрибутов столбцов, но все, что отображается, это имя, а не значение.Например, когда я устанавливаю значение = firstname (как указано в моей базе данных), данные в текстовом поле - это «firstname», а не то, что на самом деле является именем сотрудника.Может быть, я поступаю неправильно.Может кто-нибудь сказать, пожалуйста, как именно получить эти значения?

Ответы [ 3 ]

1 голос
/ 24 ноября 2010

Используйте метод doGet() сервлета для предварительной обработки запроса (вы должны вызвать URL этого сервлета в браузере).

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Employee employee = getItSomehow();
    request.setAttribute("employee", employee);
    request.getRequestDispatcher("/WEB-INF/edit.jsp").forward(request, response);
}

Используйте JSP EL, чтобы отобразить его в атрибуте value поля ввода HTML.

<input name="firstname" value="${employee.firstname}" />

Однако это открывает двери для XSS атак .Используйте JSTL fn:escapeXml(), чтобы предотвратить это.

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<input name="firstname" value="${fn:escapeXml(employee.firstname)}" />

См. Также:

0 голосов
/ 19 июня 2011

Вы можете получить данные в JSP следующим образом:

  1. получение данных в объекте bean
  2. установить объект bean в объекте запроса
  3. отправить запрос в JSP

Следуйте этому коду:

<%
    forumbean bean=(forumbean)request.getAttribute("userdata");
    String name=bean.getName();
    out.print("<input type='text' id='name' name='name' value='"+name+"'>");
%>

Вы также можете использовать язык выражений, чтобы избежать тега scriplet.

0 голосов
/ 16 декабря 2010

Кажется, что у BalusC есть хороший ответ, но я хотел бы немного подробнее рассказать о методе getItSomehow (). Поскольку вы не указали, какую базу данных вы используете, я дам вам пример того, как это сделать, если вы используете mysql.

[Шаг 1]: простой поиск в Google расскажет вам, как получить правильный jdbc

    try{
        Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException e){
        throw new AssertionError(e);
    }

[Шаг 2]: Теперь вы получите соединение с БД и получите готовый оператор

        String url = "jdbc:mysql:///"+database_name;
        Connection con = DriverManager.getConnection(url);

        Statement stmnt = con.createStatement();

[Шаг 3]: Наконец, вы выполните оператор select

        ResultSet rs = stmnt.executeQuery(
             "SELECT "+ "values you want to retrieve separated by commas"
           +" FROM "+ "table name"
           +" WHERE "+ "condition eg. id=123";

Теперь, когда у вас есть набор результатов в объекте ResultSet, вы можете проанализировать его, чтобы получить запрошенные вами данные. Вы можете использовать следующее:

        if(rs.next()){
               employee.setXXXX(rs.getString("XXXX"));
               employee.setYYYY(rs.getString("YYYY"));
         }
...