2009-11-15 4 views
2

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

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

ответ

2

Где вы можете заполнить его на сервере. Под этим я подразумеваю, что когда вы создаете поле выбора на своем 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

Спасибо, у вас есть хорошие ссылки на jQuery для этого, я сделаю несколько Google, но если вы можете помочь, это будет очень ценится. – Ankur

+0

Какая структура Java Web вы используете? – cletus

+0

Не использовать какой-либо фреймворк, потому что я не знаю, как это сделать - я изучаю Spring, но тем временем я просто использую jsp-страницы, вызываемые из сервлета. Когда я застреваю, я пишу в объект сеанса. – Ankur

0

Вы можете использовать метод Servlet 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 вы можете использовать JSTLc: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.

Смежные вопросы