Как запустить метод сервлета при загрузке страницы - PullRequest
2 голосов
/ 15 ноября 2009

У меня есть записи в текстовом файле, которые я хочу загрузить в выпадающий список.

Я хочу, чтобы это происходило при загрузке страницы jsp. Я мог бы легко сделать это, если бы у меня была кнопка, запускающая передачу объекта запроса сервлету. Как отправить объект запроса при загрузке страницы - нужно ли мне использовать Javascript или это я могу сделать только с помощью jps.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2009

Где вы можете заполнить его на стороне сервера. Под этим я подразумеваю, что когда вы создаете поле выбора на вашем JSP, заполните его тогда. Например:

<select id="sel1" name="animal">
<c:forEach var="animal" items="${model.animals}">
<option value="<c:out value="${animal.id}"/><c:out value="${animal.name}"/></option>
</c:forEach>
</select>

Если это невозможно, практично или нежелательно, вам необходимо использовать метод AJAX в той или иной форме. Лично я использую jQuery для этого. Например:

<select id="sel1" name="animal">
</select>

<script type="text/javascript">
$(function() {
  $.get('/server/getanimals', function(data, textStatus) {
    var sel = $("#sel1");
    for (var i=0; i<data.length; i++) {
      sel.append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
    }
  }, 'json');
});
</script>

Вышеуказанные звонки /server/getanimals на странице готовы. Ожидается, что ему будет возвращен объект JSON со списком животных, который он затем использует для заполнения поля выбора.

Есть много способов снять кожу с этой конкретной кошки.

0 голосов
/ 15 ноября 2009

Вы можете использовать метод doGet() сервлета для предварительной обработки данных в запросах GET. doPost() должен использоваться для постобработки данных в запросах POST (при отправке формы).

Пример:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    List<Option> options = optionDAO.list();
    request.setAttribute("options", options);
    request.getRequestDispatcher("page.jsp").forward(request, response);
}

Где класс Option - это просто ваш собственный класс javabean, содержащий свойства value и label. Вы также можете использовать List<Map<String, String>> вместо этого, если хотите.

В JSP вы можете использовать JSTL c:forEach для перебора списка

<select name="foo">
    <c:forEach items="${options}" var="option">
        <option value="${option.value}">${option.label}</option>
    </c:forEach>
</select>

Наконец, сопоставьте сервлет в web.xml и вызовите запрос так, чтобы он соответствовал url-pattern, например. http://example.com/contextroot/page.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...