
やりたいこと
ログインID,パスワードが違う場合
サーブレットからjspにセッションの値を渡す。
その後、リダイレクトしてきたhtmlで、エラーを表示
今の状態
エラーが表示されません。
javascriptで書いたほかのエラーは、表示されます。
よろしくお願いします。
javascript
1<script type="text/javascript"> 2 3 function formcheck(){ 4 //必須チェック 5 if(document.Form1.userId.value == "" || document.Form1.pass.value == ""){ 6 // 7 if(session == null){ 8 Human h = (Human) session.getAttribute("human"); 9 document.getElementById('input_error').innerHTML = "h.getName()"; 10 } 11 document.getElementById('input_error').innerHTML = "ログインIDまたはパスワードは必須です。"; 12 return false; 13 } 14 return true; //送信を実行 15 } 16</script> 17コード
html
1 <html> 2 <body> 3 <h1>業務報告システム</h1> 4 <span id="input_error"></span> 5 <%@ page import="servlet.Human" %> 6 <form name = "Form1" action="/gyomuhokoku/LoginServlet" method="post" onsubmit="return formcheck()"><br> 7 8 ユーザーID:<input type="text" name="userId" id="notice-input-1"> <br> 9 パスワード:<input type="text" name="pass" id="notice-input-2"> <br> 10 11 <button type=submit>ログイン</button> 12 </form> 13</body> 14</html>
java
1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13import model.AccountLogic; 14import model.Login; 15 16@WebServlet("/LoginServlet") 17public class LoginServlet extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 protected void doGet(HttpServletRequest request, 21 HttpServletResponse response) 22 throws ServletException, IOException { 23 24 //フォワード 25 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/Login.jsp"); 26 dispatcher.forward(request, response); 27 } 28 29 protected void doPost(HttpServletRequest request, 30 HttpServletResponse response) 31 throws ServletException, IOException { 32 33 Human human = new Human(); 34 human.setName("ログインIDまたはパスワードが違います。"); 35 36 37 38 //リクエストパラメータの取得 39 request.setCharacterEncoding("UTF-8"); 40 String userId = request.getParameter("userId"); 41 String pass = request.getParameter("pass"); 42 43 44 //ログイン処理の実行 45 Login rs = new Login(); 46 rs.setUserId(userId); 47 rs.setPass(pass); 48 AccountLogic bo = new AccountLogic(); 49 boolean result = bo.execute(rs); 50 51 //ログインの成否によって処理を分岐 52 if (result) { //ログイン成功時 53 54 //セッションスコープにユーザーIDを保存 55 HttpSession session = request.getSession(); 56 session.setAttribute("userId", userId); 57 58 //フォワード 59 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/ListScreen.jsp"); 60 dispatcher.forward(request, response); 61 } else { 62 //ログイン失敗時 63 //リダイレクト 64 65 HttpSession session = request.getSession(); 66 session.setAttribute("human",human); 67 response.sendRedirect("/gyomuhokoku/LoginServlet"); 68 } 69 } 70 }
java
1//Todo Humanは、とりあえず動かすための暫定の名前です。後で変更します。 2 3package servlet; 4import java.io.Serializable; 5 6 public class Human implements Serializable{ 7 private String name; 8 9 public Human() {} 10 public Human(String name) { 11 this.name = name; 12 } 13 public String getName() {return name;} 14 public void setName(String name) {this.name = name;} 15 16} 17



