現在Javaの学習をしている者です。
ログイン機能を作成しているのですが、
ログインの入力チェックをサーブレット側で掛けて、チェックに引っ掛かったらエラーメッセージをJSPに渡す所まで実装ができているというが現状です。メッセージはArrayListで渡しています。
そこで、JSPのページでエラーメッセージを表示後に、ページの更新を掛けた際には、そのメッセージが消えるようにしたいのですが、
更新を掛けてもメッセージが残り続けたままとなってしまいます。
こちらについて詳しい方いらっしゃればご教授お願いします。
【Login.jsp】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.ArrayList"%> <% ArrayList<String> errorMsg = (ArrayList<String>) request.getAttribute("errorMsg"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ログイン画面</title> <style> h1 { font-size: 18px } h2 { font-size: 14px } </style> </head> <body> <h2>ログイン画面</h2> <% HttpSession sesssion = request.getSession(); if (session.getAttribute("sessionerror") != null) { %> <%=session.getAttribute("sessionerror")%> <% } %> <% if (errorMsg != null) { for (int i = 0; i < errorMsg.size(); i++) { %> <ul><%=errorMsg.get(i)%></ul> <% } } %> <form method="POST" action="LoginAction" name="validataion"> <table> <tr> <td>ユーザーID:</td> <td><input type="text" name="user_id"></td> </tr> <tr> <td>パスワード:</td> <td><input type="password" name="user_pass"></td> </tr> <tr> <td> <tr> <td><input type="submit" value="ログイン"></td> </tr> </table> </form> </body> </html> ``` 【LoginAction.java】 ``` package main; import java.io.IOException; import java.util.ArrayList; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; /** * Servlet implementation class LoginAction */ @WebServlet("/LoginAction") public class LoginAction extends HttpServlet { private static final long serialVersionUID = 1L; //バリデーションのためのエラーメッセージ final String BLANK_USRID_MSG = "ユーザーIDが入力されていません。"; final String BLANK_PASSWORD_MSG = "パスワードが入力されていません。"; /** * Default constructor. */ public LoginAction() { } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //ログインページからユーザーIDとパスワードを取得 String user_id = null; String user_pass = null; user_id = request.getParameter("user_id"); user_pass = request.getParameter("user_pass"); //セッションを生成 HttpSession ses = request.getSession(); ses.setAttribute("user_id", user_id); ses.setAttribute("user_pass", user_pass); //エラーメッセージを格納する配列 ArrayList<String> errorMsg = new ArrayList<String>(); //バリデーション if (user_id.isEmpty() && user_pass.isEmpty()) { //ユーザーIDおよびパスワードの入力フォームが空白の状態でログインボタンを押下場合 errorMsg.add(BLANK_USRID_MSG); errorMsg.add(BLANK_PASSWORD_MSG); } else { //別ページに遷移 RequestDispatcher dispatcher = request.getRequestDispatcher ("/MainPage"); dispatcher.forward(request, response); } //バリデーションに引っかかった場合エラーメッセージをログインページに返す request.setAttribute("errorMsg", errorMsg); RequestDispatcher dispatcher = request.getRequestDispatcher("/"); dispatcher.forward(request, response); } } ```
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/24 01:30
2021/10/24 05:12