今回は、「Webシステムのログイン(2)―リダイレクトとフォワードの違い―」です。
ユーザーがログインしたときに、メニュー画面へリダイレクトしてみましょう。
今まではJSPを呼び出すときにフォワードを使ってきましたが、これとは別のリダイレクトを使ってメニュー画面へ移動します。
■動画はこちら
■動画で使用しているソースコード
サーブレット(Sv20.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; public class Sv20 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //ログインページを表示 ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/WEB-INF/jsp/sv20.jsp"); rd.forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //入力パラメーターを取得 String userId = req.getParameter("txtUserId"); String password = req.getParameter("txtPassword"); //ユーザIDとパスワードのチェック LoginChecker checker = new LoginChecker(); if( checker.isValid(userId, password) ) { //セッションを作成して、ユーザID、ユーザ名を追加 HttpSession session = req.getSession(true); session.setAttribute("USER_ID", userId); session.setAttribute("USER_NAME", checker.getUserName()); //メニューへリダイレクト resp.sendRedirect("./sv21"); } else { //メッセージをセット req.setAttribute("message", "IDまたはパスワードが違います"); //ログインのエラーページを表示 ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/WEB-INF/jsp/sv20_err.jsp"); rd.forward(req, resp); } } } |