• ベストアンサー

入力フォーム(JSP)にDB検索条件を入力し、データがなかった場合入力した値を残したままJSPに戻る方法を教えてください。

基本的にはタイトルの質問なんですが、具体的な書き方がわかりません。 今作成しているのが TOP画面(JSP) ・入力フォームに検索条件 ↓ Servlet ・入力された条件でDB検索  何か検索されれば次画面へ遷移  何も検索されなければTOP画面へ戻る というものですが、 public class LoginCheck1 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); String user = request.getParameter("user"); String pass = request.getParameter("pass"); HttpSession session = request.getSession(true); boolean check = authUser(user, pass); if (check){ /* 認証済みにセット */ session.setAttribute("login", "OK"); /* 本来のアクセス先へ飛ばす */ String target = (String)session.getAttribute("target"); response.sendRedirect(target); }else{ /* 認証に失敗したら、ログイン画面に戻す */ session.setAttribute("status", "Not Auth"); response.sendRedirect("/auth/Login"); } } protected boolean authUser(String user, String pass){ /* 取りあえずユーザー名とパスワードが入力されていれば認証する */ if (user == null || user.length() == 0 || pass == null || pass.length() == 0){ return false; } return true; } } サーブレットはこんな感じで書いてるんですが、 response.sendRedirect("/auth/Login"); の部分が悪いんでしょうか?

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

HttpServletRequestクラス、HttpSessionクラスのsetAttribute、getAttributeメソッドです。 詳細はJavaDocを見て下さい。

age_03
質問者

お礼

参考になりました。回答ありがとうございました!

その他の回答 (1)

回答No.1

>サーブレットはこんな感じで書いてるんですが、 >response.sendRedirect("/auth/Login"); >の部分が悪いんでしょうか? 質問者さんが期待する結果と実際の結果が書かれてないので、 この部分がどう悪いのかはよくわかりませんが…。 (やりたいことは伝わりますが…。) 検索結果うんぬんは抜きにして、 JSP1→Servlet→JSP2 という遷移を行うことができますか? ↑ができるならJSP1とJSP2に同じJSPを指定するだけです。 JSPから取得した入力値を表示するには、リクエストなりセッションに値をセットしてJSPで取得すれば良いでしょう。

age_03
質問者

補足

回答ありがとうございます。 期待する結果は アカウント 12345 パスワード abcde と入力してそれがDBに登録してなかった場合 アカウント 12345 パスワード abcde と入力値がそのままで戻って欲しいのですが 今は、 アカウント  パスワード と消えて表示されます。 >JSP1→Servlet→JSP2 という遷移を行うことができますか? できます。  JSP1→Servlet→JSP1となってますが。 >JSPから取得した入力値を表示するには、リクエストなりセッションに値をセットしてJSPで取得すれば良いでしょう。 どのように書けばいいんでしょうか?

関連するQ&A

  • 入力フォーム(JSP)にDB検索条件を入力し、データがなかった場合入力した値を残したままJSPに戻る方法を教えてください。

    基本的にはタイトルの質問なんですが、具体的な書き方がわかりません。 今作成しているのが TOP画面(JSP) ・入力フォームに検索条件 ↓ Servlet ・入力された条件でDB検索  何か検索されれば次画面へ遷移  何も検索されなければTOP画面へ戻る というものですが、 public class LoginCheck1 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); String user = request.getParameter("user"); String pass = request.getParameter("pass"); HttpSession session = request.getSession(true); boolean check = authUser(user, pass); if (check){ /* 認証済みにセット */ session.setAttribute("login", "OK"); /* 本来のアクセス先へ飛ばす */ String target = (String)session.getAttribute("target"); response.sendRedirect(target); }else{ /* 認証に失敗したら、ログイン画面に戻す */ session.setAttribute("status", "Not Auth"); response.sendRedirect("/auth/Login"); } } protected boolean authUser(String user, String pass){ /* 取りあえずユーザー名とパスワードが入力されていれば認証する */ if (user == null || user.length() == 0 || pass == null || pass.length() == 0){ return false; } return true; } } サーブレットはこんな感じで書いてるんですが、 期待する結果は アカウント 12345 パスワード abcde と入力してそれがDBに登録してなかった場合 アカウント 12345 パスワード abcde と入力値がそのままで戻って欲しいのですが 今は、 アカウント  パスワード     と消えて表示されます。 response.sendRedirect("/auth/Login"); の部分が悪いんでしょうか?

    • ベストアンサー
    • Java
  • セッション管理

    失礼いたします。 セッション情報の受け渡しを勉強しています。 送り手側で HttpSession ses = request.getSession(); String login = (String)ses.getAttribute("login"); String name = (String)ses.getAttribute("name"); if( !("ttttt".equals( login )) ) {  //(以下処理) 受けて側で String name = request.getParameter("user"); String pass = request.getParameter("pass"); HttpSession ses = request.getSession(); if ( name.equals("admin") && pass.equals("hoge")) { ses.setAttribute("login","ttttt"); ses.setAttribute("name",name); out.println("<h3>ログインしました。</h3>"); } とし、セッション管理を行っています。 しかし、今ひとつこの「セッション情報」と普通のパラメーターの受け渡しの違いが分かりません。どちらも文字として次ページへ送っていますので。セッションがずっと保持されるとはソースのどういう所から分かるのでしょうか?漠然とした質問ですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • PHPのログイン処理について

    PHPのログイン処理について教えてください。 「login_auth.phpファイル」 <?php //session開始 session_start(); session_regenerate_id(true); //エラーメッセージを格納する変数を初期化 $error_message=""; //ログインボタンが押されたかを確認 if(isset($_post["sub"])){ if($_post["auth_id"] == "auth" && $_post["auth_pass"] == "1234"){ //ログインが成功した証拠をセッションに保持する $_session["login_name"] = $_post["auth_id"]; //管理者トップへWebブラウザをリダイレクトさせる $login_url = "http://{$_server["http_host"]}/reservation/auth_top.php"; header("Location: {$login_url}"); exit; } $error_message = "IDかPASSが間違えています"; } ?> <html> <body> <?php if($error_message){ print '<font color="red">'.$error_message.'</font>'; } ?> <center> <hr size="2" color="blue" width="50%"><br><br> <font size="4"><b>管理者認証画面</b></font> <br><br><hr size="2" color="blue" width="50%"><br><br> ユーザID/パスワードを入力してください。 <form action="login_auth.php" method="post"> <table border="2"> <tr> <td bgcolor="cyan">ユーザID</td> <td><input type="text" name="auth_id" value=""></td> </tr> <tr> <td bgcolor="cyan">パスワード</td> <td><input type="password" name="auth_pass" value=""></td> </tr> </table> <input type="submit" name="sub" value="ログイン"> </form> <a href="javascript:window.close();" target=_parent>閉じる</a> </center> </body> </html> 「auth_top.phpファイル」 <?php //セッションを開始する session_start(); //ログインが成功した証拠である変数のチェックを行なう if (!isset($_SESSION["login_name"])) { //変数に値がセットされていない場合は不正な処理とみなし、ブラウザをログイン画面へリダイレクトさせます $no_login_url ="http://{$_server["http_host"]}/reservation/login_auth.php"; header("Location: {$no_login_url}"); exit; } ?> 管理者画面です。 この簡単なプログラムなんですが、IDとPASSを入力しても画面が切り替わりません。 今、そこで行き詰っています。 どなたか教えていただけないでしょうか??

    • 締切済み
    • PHP
  • java servletについて

    java servletを使用したユーザ認証プログラムを作成しています。 ------------ public class CustomAuth1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ ・ ・ response.sendRedirect(response.encodeRedirectURL("./Login")); ------------ 上記のようなプログラムで「http://AAAAA/Login」のページに飛ばしたいのですが、「http://BBBBB/Login」となってしまい、リダイレクト先のURLをうまく設定できていません。 このBBBBBの部分をAAAAAに変更するにはどうすればよいでしょうか? 抽象的な表現で申し訳ありませんが、ご教授いただけますようお願いします。

  • サーブレットの【405】POSTについて

    「HTTPのGETメソッドは、このURLではサポートされていません。」のエラーが出ます。 コードは「スッキリわかるサーブレット&JSP」本の10章です。 サーブレットを右クリックで実行すると、上記のエラーが出ます。 ----------------------------------------------------------------- package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import model.LoginLogic; import model.User; @WebServlet("/Login") public class Login extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストパラメータの取得 request.setCharacterEncoding("UTF-8"); //PrintWriter out = response.getWriter(); //out.println(createHTML("POST")); //out.close(); String name = request.getParameter("name"); String pass = request.getParameter("pass"); // Userインスタンス(ユーザー情報)の生成 User user = new User(name, pass); // ログイン処理 LoginLogic loginLogic = new LoginLogic(); boolean isLogin = loginLogic.execute(user); // ログイン成功時の処理 if (isLogin) { // ユーザー情報をセッションスコープに保存 HttpSession session = request.getSession(); session.setAttribute("loginUser", user); } // ログイン結果画面にフォワード RequestDispatcher dispatcher =request.getRequestDispatcher("/WEB-INF/jsp/loginResult.jsp"); dispatcher.forward(request, response); } //private char[] createHTML(String string) { // TODO 自動生成されたメソッド・スタブ //return null; //} } ------------------------------------------------------------------------------------ ビュー <%--つぶやきトップ画面 --%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>つぶやき画面</title> </head> <body> <br><br><br><p style="text-align:center"><b>ようこそ!!つぶやきアプリへ!</b></p> <form action="Tsubuyaki/Login" method="post"> <p style="text-align:center">ユーザー名:<input type="text" name = "name"></p> <p style="text-align:center">パスワード:<input type="text" name = "pass"></p> <p style="text-align:center"><input type="submit" value="ログイン"></p> </form> </body> </html> ------------------------------------------------------------------------------------ どこがダメかご回答願います。

  • [JAVA]Servlet → JSP 文字化け発生!

    こんばんわぁ♪ サーブレットにおきまして・・・ ErrMsg = "【認証エラー】MSP情報(キーコードorパスワード)が違います!"; response.sendRedirect("../F_LogInOut.jsp?ErrMsg=" + ErrMsg); とJSPに接続します。 JSPでは・・・ <%@ page contentType="text/html; charset=Shift_JIS" %> とし、 <% if (request.getParameter("ErrMsg") != null){ out.println(request.getParameter("ErrMsg")); } %> とこれを表示します。 しかし、うまく表示できません・・・ 何ででしょうか? お願いします、お教えください。

    • ベストアンサー
    • Java
  • 空欄のテキストフィールドの判定の方法

    HTMLのフォームに入力されたテキストフィールドの値より処理を変化させる ロジックを作ろうと下記のようにプログラムしました。 テキストフィールドに何か入力して送信した場合は、elseの処理を正常に行ってくれるのですが、 未入力でsubmitした場合だと、処理が止まってブラウザ上には真っ白な画面しか表示されません。 やはり判定文が悪いのでしょうか? 未入力のテキストフィールドの判定方法を教えてください。 ----------------------------------------------------- String tf1 = request.getParameter("text1"); String tf2 = request.getParameter("text2"); if((tf1 == null) || (tf2 == null)) {  HttpSession session = request.getSession();  session.setAttribute("errmessage", "未入力の項目があります。");  RequestDispatcher dispatcher     = request.getRequestDispatcher("/err.jsp");  dispatcher.forward(request, response); } else {  //テキストフィールドに何かが入力されている場合の処理 }

    • ベストアンサー
    • Java
  • セッション管理

    度々の質問で申し訳ないです…。 「セッション管理」がどうしてもよく分かりません。 書籍やWeb上でいろんな説明を読んで頭では理解したつもりなんですが 実際使う段になるとつまづいてしまいます。 そこで質問です。 html → Servlret1 → JSP1 → Servlet1 → JSP2 → JSP3 このような遷移の中でセッション管理を行いたいと思っています。 今、JSP2までは無事にセッションオブジェクトに保存されたデータを 参照することができていますが、JSP2からJSP3に移るときに nullが渡されてしまうのです。 一度、Servlet1 へ制御を戻さなければだめなのでしょうか? 具体的なコードを以下に掲載します。 よろしくお願いします。 ========= Servlet1 でセッション開始 //セッションを得る HttpSession thisSession = req.getSession(true); //セッションに保存 req.getSession(false).setAttribute("Login","true"); ========= JSP2 で受け取る /* ここではちゃんと"true"が返ってきます。 */ //セッションオブジェクトから取り出す String login = (String)request.getSession(false).getAttribute("Login"); ========= JSP3 で受け取る /* ここで null が帰ってきてしまいます。 String login = (String)request.getSession(false).getAttribute("Login");

  • セッション

    セッションについて教えて下さい。 指定のID、パスワードでログインしようと思っています。 ソースを記載しますので、お教え下さい。 ID:aaa パスワード:111とします。 [送り側フォーム] <form action="/test2.asp" method="POST" id=form1 name=form1> <input type="text" name="id" value=""><br> <input type="password" name="passwd" value=""> <input type="submit" value="LOGIN" id=submit1 name=submit1> </form> とし、 [受け取り側、認証 test2.asp ] <% If Session("user_test") <> "1" Then Response.Redirect "/test.asp" Response.End() End If %>ここで認証を判断し、認証できなければtest.aspへもどるとし、 Dim id, passwd id = Request.Form("id") passwd = Request.Form("passwd") Session("user_login") = "id" Session("user_login") = "passwd" IF id = "aaa" and passwd = "111" THEN Session("user_test") = 1 Response.Write ("OK") ELSE Response.Write ("ちがうよ") END IF %> ID、パスワードをセッション変数にいれ、各ページで認証すると言う事をやりたいのですが、うまくいきません。 どこがわるいか、お教え下さい。 ※以前にも似たような質問をしているのですが、改善されずお手上げです。

  • Ifが正常に動作しない。

    下記のコードで、login.htmlからデータを適当に入力し てかえってくる処理が全て、空の表示になってしまう。 Ifが正常に動作しません、正常に動作するようにするにはどうすればいいのでしょうか? <login.html> <html> <body> <table> <tr> <td>id:</td> <td><input type="text" name="id"></td></tr> <tr><td>password:</td> <td><input type="password" name="pass"></td></tr> </table> <form methed="post" action="http://session.asp"> <input type="submit" name ="sb" value="login" > </form> </body> </html> session.asp <html> <body> <% if session("id")="" Or session("id")= null then if request("pass")="" Or request("id")= null then response.write "空" elseif request("pass")= "1234" then session("id")="login" response.write "ログインしました。" else response.write "違う" end if else response.write "ログインしました" response.write session("id") end if %> </body> </html>