【问题标题】:Servlet fetching database records onload/initializationServlet 在加载/初始化时获取数据库记录
【发布时间】:2012-10-18 06:08:46
【问题描述】:

目前我正在使用带有休眠集成的 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>

还有我的 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 方法。

【问题讨论】:

    标签: java jsp servlets jstl


    【解决方案1】:

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

    下一步

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

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

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

    【讨论】:

    • 在 init 方法中我不能调用 httpServletRequest 和 httpServletResponse,如何使用 init 方法将结果传递给会话?抱歉,我是 servlet 的新手...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2010-11-30
    • 2010-10-02
    • 2016-04-27
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多