0

好吧,目前我正在使用带有休眠集成的 jsp、servlet、jstl 做一个简单的应用程序,我的 servlet 方法存在问题,因为 doPost 和 doGet 需要操作(单击链接/提交按钮)才能发生。我的问题是如何在不对我的 servlet 执行任何操作的情况下获取数据库记录 onload。我想要做的是,一旦管理员(用户)单击 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>

和我的小服务程序:

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 方法。

4

1 回答 1

0

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

下一个

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

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

您必须参考 Servlet 生命周期。这里

于 2012-10-18T06:13:19.003 回答