現在、私は jsp、サーブレット、jstl を hibernate 統合で使用する単純なアプリケーションを実行しています。私の質問は、サーブレットで何もせずにオンロードでデータベース レコードを取得するにはどうすればよいかということです。私がやりたいことは、管理者(ユーザー)が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 メソッドを実行する必要があります。