如何在页面加载时触发servlet方法

时间:2009-11-15 05:04:20

标签: java events servlets

我在文本文件中有条目,我想将其加载到下拉框中。

我希望在加载jsp页面时发生这种情况。如果我有一个触发请求对象传递给servlet的按钮,我可以很容易地做到这一点。如何在页面加载时发送请求对象 - 我是否需要使用Javascript或者这是我可以用jps做的事情。

2 个答案:

答案 0 :(得分: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对象,然后用它来填充选择框。

有很多方法可以为这只特殊的猫提供皮肤。

答案 1 :(得分: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类只是您自己的包含属性valuelabel的javabean类。如果您愿意,也可以使用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中映射servlet并调用请求,使其与url-pattern匹配,例如http://example.com/contextroot/page