Servlet获取数据库记录onload / initialization

时间:2012-10-18 06:08:46

标签: java jsp servlets jstl

目前我正在使用jsp,servlet,jstl和hibernate集成做一个简单的应用程序,因为doPost和doGet需要操作(点击链接/提交按钮),我的servlet方法有问题。我的问题是如何在不对servlet执行任何操作的情况下获取数据库记录onload。我想要做的是,一旦admin(用户)点击userlist.jsp页面,组合框将由来自数据库的记录填充,onload。

到目前为止,这就是我所拥有的: 我的Register.jsp页面

我已经实现并调用了jstl,因此我可以轻松地从数据库中遍历wole列表(记录)。

<select name="role" >
<c:forEach var="load" items="${load}">
    <option><c:out value="${load}"></c:out></option>
</c:forEach>
</select>

和我的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
loadRole(request, response);
}

这是我的方法loadRole我只是调用方法来将逻辑与请求和响应对象分开。

private void loadRole(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    HttpSession roleSession = request.getSession();
    Session session = factory.openSession();
    session.beginTransaction();

        Query query = session.createQuery("SELECT cd FROM Role");
        List load = query.list();
        roleSession.setAttribute("load", load);

        request.getRequestDispatcher("Forms/Register.jsp").forward(request, response);

    session.getTransaction().commit();
    session.close();

}

这段代码正在运行,但是在获取数据库记录之前需要先执行doPost / doGet方法。

1 个答案:

答案 0 :(得分:0)

您可以使用init()方法进行初始化。参考here

下一步

如何使用init方法将结果传递给会话?

使用service()方法。您可以检索HttpRequestHttpResponse

您必须参考Servlet生命周期。 Here