JSPのIF構文を使ってログイン認証画面を作成する方法

このQ&Aのポイント
  • JSPのIF構文を使用してログイン認証でパスワードによって表示するJSPを分岐させる方法について解説します。
  • 具体的なコード例を交えながら、IF文を使用して<FORM method="post" action="view.jsp">と<FORM method="post" action="viewx.jsp">で分岐させる手順を説明します。
  • さらに、JDBCドライバをロードしデータベースへのアクセスやSQLの実行、結果の表示までをコードで示します。
回答を見る
  • ベストアンサー

JSPのIF構文教えて下さい!

こんにちわ。 現在、ログイン認証でPWによって次に表示するJSPを作りたいのですが、お恥ずかしい事にIF構文を差し込む所が分かりません。。。 <FORM method="post" action="view.jsp">と<FORM method="post" action="viewx.jsp">で分けるイメージです。 自分でもやってみましたが処理が分岐しません。 勉強不足ですみませんがお知恵をお貸し下さい!お願い致します。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <html> <head> <title>検索結果一覧</title></head> <BODY bgcolor="#ffffcc"> <CENTER> <span style="font-size:24pt;color:#cc99cc"><B>検索結果一覧</B></span> <CENTER><%=request.getParameter("str")%></br> <br><br> <TABLE border="3" BORDERCOLOR="#9999ff" cellspacing="1" cellpadding="1"> <TR> <TD><span style="font-size:11pt;color:#336000">F1</span></TD> <TD><span style="font-size:11pt;color:#336000">F2</span></TD> <TD><span style="font-size:11pt;color:#336000">F3</span></TD> </TR> <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Name","ID","pw"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); String param = (request.getParameter("param")); String pass = (request.getParameter("password")); // SQL()を実行して、結果を得る rs = stmt.executeQuery ("SELECT * FROM table where 番号='"+ param +"'"); // 得られた結果をレコードごとに表示 while (rs.next()){ %> <FORM method="post" action="view.jsp"> <input type="hidden" name="num" value="<%= rs.getString("id")%>"> <tr> <%-- レコードの区分フィールドはNull --%> <td></td> <%-- レコードのF1フィールドを表示 --%> <td><%= rs.getString("F1")%></td> <%-- レコードのF2フィールドを表示 --%> <td><%= rs.getString("F2")%></td> <%-- 詳細ボタンを表示 --%> <td><input type="submit" value="詳細表示"></td> </tr> </form> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </table> <br></br> <center> <INPUT TYPE="button" NAME="btn3" value="戻る" onClick="JavaScript:history.back()"> </body> </html>

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

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

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

この辺が参考になりそうです。 http://java-house.jp/ml/archive/j-h-b/047577.html JSP(<FORM>)→JSP(getParameter()の値によってforward先を変えている)。

参考URL:
http://java-house.jp/ml/archive/j-h-b/047577.html
earlgyreprince
質問者

お礼

なるほど! コントロールするJSPを別に作成すると言うやり方ですね? 作成した所、上手くいきました☆ 勉強になりました♪ ありがとうございました☆

earlgyreprince
質問者

補足

ありがとうございます☆ 試してみたいと思います!!

関連するQ&A

  • JSPのIF文を教えて下さい

    こんばんわ。 JSPにてIF文を使ったDBテーブル表示のWEBを作成したのですが クローズの行でエラーが表示されてしまいます。 エラー内容は「型の開始が不正」ですというものです。 知識不足で恐縮ですがご教示願います。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <HTML> <HEAD> <TITLE>一覧</TITLE></HEAD> <CENTER> <B>一覧</B> <TABLE border="3" BORDERCOLOR="#9999ff"> <TR> <TD>年齢</TD> <TD>電話番号</TD> </TR> String year = request.getParameter("年齢"); String namber = request.getParameter("電話番号"); <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver://sqlserverName;DatabaseName=NAME","ID","PW"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); if(year.length() >= 0){ %> // SQL()を実行して、結果を得る rs = stmt.executeQuery("SELECT * FROM テーブルA where 年齢='"+ paramA +"'"); rs = stmt.executeQuery("SELECT * FROM テーブルB where 年齢='"+ paramA +"'"); <% } else if(namber.length() >= 0){ %> rs = stmt.executeQuery("SELECT * FROM テーブルA where 電話番号='"+ paramC +"'"); rs = stmt.executeQuery("SELECT * FROM テーブルB where 電話番号='"+ paramC +"'"); <% } %> // 得られた結果をレコードごとに表示 while (rs.next()){ String aa = rs.getString("名前"); String bb = rs.getString("住所"); %> <TR bgcolor="#ccffcc"> <FORM method="post" action="Next.jsp"> <input type="hidden" name="num" value="<%= rs.getString("ID")%>"> <%-- 年齢フィールドの表示 --%> <TD><%= aa %></TD> <%-- 電話番号フィールドの表示 --%> <TD><%= bb %></TD> <TD align="center"> </form> </TD> </TR> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • Java
  • JSPで複数のSQL実行について教えて下さい

    JSPで複数のSQLを実行したいと思い、作ってみましたがページが全く表示されません。 SQL分が違う気がするのですがどこが悪いのか分りません。 ご教示下さいませ。ソースのせます。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <HTML> <HEAD> <TITLE>結果</TITLE></HEAD> <BODY> <CENTER> <B>結果</B> <TABLE border="3"> <TR> <TD>年齢</TD> <TD>氏名</TD> </TR> <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver:ServerName;DatabaseName=Name","ID","PW"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); if (request.getParameter("buttonA") != null) { // テキストボックスの値を取得 String paramA = request.getParameter("NamA"); // SQL()を実行して、結果を得る rs = stmt.executeQuery("SELECT * FROM TABLE_A where 年齢='"+ paramA +"'"); rs = stmt.executeQuery("SELECT * FROM TABLE_B where 年齢='"+ paramA +"'"); } if (request.getParameter("buttonB") != null) { // テキストボックスの値を取得 String param = request.getParameter("NamB"); // getParameterの値を文字列へ変換 String paramB = new String(param.getBytes("ISO-8859-1"),"Shift_JIS"); rs = stmt.executeQuery("SELECT * FROM TABLE_A where 氏名 like '%"+ paramB +"%'"); rs = stmt.executeQuery("SELECT * FROM TABLE_B where 氏名 like '%"+ paramB +"%'"); } // 得られた結果をレコードごとに表示 while (rs.next()){ String year = rs.getString("年齢"); String name = rs.getString("氏名"); %> <TR> <FORM method="post" action="Next.jsp"> <TD><%= year %></TD> <TD><%= name %></TD> </form> </TD> </TR> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • Java
  • 【JSPがブラウザで表示されません】

    こんばんわ。 教えて頂きたいのですが、以下のjspを記述しましたが番号・名前・電話番号の項目表示のみで肝心のテーブル内容が表示されません。 何が原因かわからず困っています。 教えて下さい!お願い致します。 <%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <html> <head><title>テーブル_JSP版</title></head> <body> <P>データベース一覧</P> <table border='1'><tr><th>番号</th><th>名前</th><th>電話番号</th></tr> <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Name","ID","PW"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); // SQL()を実行して、結果を得る rs = stmt.executeQuery( "SELECT 番号, 名前, 電話番号 FROM Table"); // 得られた結果をレコードごとに表示 while (rs.next()) { %> <tr> <%-- レコードのCUSTOMER_NUMフィールドを表示 --%> <td><%= rs.getString("番号")%></td> <%-- レコードのNAMEフィールドを表示 --%> <td><%= rs.getString("名前")%></td> <%-- レコードのPHONEフィールドを表示 --%> <td><%= rs.getString("電話番号")%></td> </tr> <% } } catch (Exception e) { e.printStackTrace(); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </table> </body> </html>

    • ベストアンサー
    • Java
  • JSPからMYSQLへの接続について

    はじめまして 初めて質問をさせていただきます。 qazxsw1と申します。 タイトルの通り、JSPからMYSQLに接続するプログラムなのですが、下記のようなエラーが出て、その後試行錯誤しましたがやはりうまくいきません。 java.sql.SQLException: Access denied for user 'mysql'@'localhost' (using password: YES) 参考にさせていただいたサイトは以下の通りです。 http://www.hellohiro.com/jspdb.htm mysql-connector-java-○.○-bin.jarファイルは[Tomcatのフォルダ]\shared\libにあります。 バージョンはTomcat4.1、MySQL Server4.1です。 ソースコードは以下の通りです。 データベース名、ユーザ名、パスワードは伏せてあります。 お手数ですが、詳しい方がいらっしゃいましたらよろしくお願いします。  <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="java.sql.*" %> <% Connection con = null; Statement stmt = null; try { // ドライバクラスをロード Class.forName("org.gjt.mm.mysql.Driver"); // データベースへ接続 String url = "jdbc:mysql:///データベース名?useUnicode=true&characterEncoding=SJIS"; con = DriverManager.getConnection(url, "ユーザ名", "パスワード"); // ステートメントオブジェクトを生成 stmt = con.createStatement(); // 全ての行を検索するSQL文を作成 String sql = "SELECT * FROM kaiin_tbl"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); %> <html> <head> <title>JSPでDB接続</title> </head> <body> <table border="1"> <tr> <th>NO</th> <th>言語</th> <th>メッセージ</th> </tr> <% // 検索された行数分ループ while(rs.next()){ %> <tr> <td><%=rs.getInt("NO") %></td> <td><%=rs.getString("LANGUAGE") %></td> <td><%=rs.getString("MESSAGE") %></td> </tr> <% } // end while %> </table> </body> </html> <% } catch (Exception e) { out.println("<font color=red><h3>エラー!</h3></font>" + e); e.printStackTrace(); } finally { // データベースへの接続をクローズします try { if (stmt!=null) { stmt.close(); } if (con!=null) { con.close(); } } catch (Exception e) { e.printStackTrace(); } } %>

  • JSPのDB接続

    いつもお世話になっております。 只今、JSPでoracleに接続しデータを表示するプログラムを作っていますが、 コンパイルエラーが出てしまい、いろいろと原因を探ってはみたものの うまくいきませんでした。ソースは以下の通りです。 <HTML> <HEAD> </HEAD> <BODY> <%@page import="java.sql.*" %> <CENTER> <% ResultSet rs = null; Class.forName("oracle.jdbc.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/BIT21"); Statement stmt = con.createStatement(); // 実行して結果セットを取得する rs = stmt.executeQuery("SELECT * FROM BOOKMST"); // 結果セットの分だけループして表示する while (rs.next()) { %> <BR> <%= rs.getString("PICTURE") %><BR> <%= rs.getString("SALEDATE") %><BR> <%= rs.getString("PRICE") %><br> <%= rs.getString("ISBNCODE") %><BR> <BR> <% } con.close(); %> </CENTER> </BODY> </HTML> エラーは javax.servlet.ServletException: コールの引数が無効です。 と出てしまいます。 原因がわかる方どうかご教授願います。

    • ベストアンサー
    • Java
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

  • jspのエラー

    <%@ page contentType="text/html; charset=UTF-8" import="java.io.*, java.sql.*" %> <% Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql://localhost/database1?user=user1&password=password1&useUnicode=true&characterEncoding=UTF-8"); Statement stmt=con.createStatement(); ResultSet result=stmt.executeQuery("select * from table1;"); %> <table> <tr> <th>country</th> <th>city</th> </tr> <% while(result.next()) { %> <tr> <td> <%= result.getString(1) %></td> <td> <%= result.getString(2) %></td> </tr> <% } stmt.close(); con.close(); %> </table> でエラーがでてデータベースに接続できません メッセージは以下の通りです org.apache.jasper.JasperException: Exception in JSP: /gomitable1.jsp:12 11: Class.forName("com.mysql.jdbc.Driver"); 12: Connection con=DriverManager.getConnection("jdbc:mysql://localhost/database1?user=user1&password=password1&useUnicode=true&characterEncoding=UTF-8"); 13: Statement stmt=con.createStatement(); 14: ResultSet result=stmt.executeQuery("select * from table1;"); 15: %> 原因 javax.servlet.ServletException: Error during query: Unexpected Exception: java.io.CharConversionException message given: null このメッセージの意味もわかりません 何が悪いのでしょうか?

    • ベストアンサー
    • Java
  • 【SQLServer接続のJSPの記述を教えて下さい!】

    いつもありがとうござます。 今回、SQLServerのテーブルを使用したjspを作成しているのですが MS ACCESSしか使用した事がなく設定が分からなく困っています。 ソースはこんな感じです。 <%@ page contentType="text/html;charset=Windows-31J" %> <HTML> <HEAD> <TITLE>一覧</TITLE> </HEAD> <BODY bgcolor="#ffffcc"> <CENTER> <%@page import="java.sql.*"%> <% class.forName("sun.jdbc.odbc.JbdcOdbcDriver"); Connection con = DriverManager.getConnection(test,no,nono); string sql = "select * from T_Transfer"; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()){ out.print(rs.getString("F1")); out.print(rs.getString("F2")); out.print(rs.getString("F3")); out.print(rs.getString("F4")); out.print(rs.getString("F5")); out.print(rs.getString("F6")); out.print(rs.getString("F7")); } con.close(); %> </CENTER> </BODY> </HTML> コンパイルできないとのエラーがでます。 xmlは記述が分からないので一切触っていません。 上記ソースの場合のxmlの記述もご教授下さい。 宜しくお願い致します!

    • ベストアンサー
    • Java
  • JSPとサーブレットの連携

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("windows-31j"); response.setContentType("text/html;charset=windows-31j"); PrintWriter out=response.getWriter(); request.setCharacterEncoding("windows-31j"); String st = request.getParameter("ti"); String s2 = request.getParameter("ho"); String s3 = request.getParameter("ke"); Connection con = null; ResultSet rs = null; Statement stmt = null; try { String url = "jdbc:mysql:///o?user=&password=2&useUnicode=true&characterEncoding=windows-31J"; con = (Connection) DriverManager.getConnection(url); stmt = (Statement) con.createStatement(); String sql = "INSERT INTO o_tb(tiiki,houmon,keiyaku) VALUES('" + request.getParameter("ti")+ "','" + request.getParameter("ho")+ "','" + request.getParameter("ke")+ "') "; int rss=0; rss = stmt.executeUpdate(sql); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } JSPから上記のサーブレットに値を渡し、DB格納までは上手くいきました。 ですが当然上記だと真っ白なサーブレットページが表示されるだけです。 JSPのボタンを押し→サーブレットでDB格納したら、またJSPページを表示させたいんですが、どうしたらいいですか??

    • ベストアンサー
    • Java
  • コンパイルエラー

    現在勉強の為、JSPでショッピングカートを作成中です。 その中でDBからデータを読み込み商品一覧を出すプログラムを作っていますが、コンパイルエラーが出てしまいうまくできません。 ソースは <%@ page import="java.sql.*" %> <% Connection con = null; ResultSet rs = null; Class.forName("oracle.jdbc.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin//localhost:1521/bit21"); Statement stmt = con.createStatement(); // 実行して結果セットを取得する rs = stmt.executeQuery("SELECT * FROM BOOKMST"); // 結果セットの分だけループして表示する while (rs.next()) { %> <%= rs.getstring("SALEDATE") %> <table> <tr align="center"><td>定価:</TD><TD><%= rs.getstring("PRICE") %></TD><TD>円</td></tr> </td></tr></TABLE> <% } con.close(); %> でエラー内容は C:\tomcat-5.0.28\work\Catalina\localhost\bookshop\org\apache\jsp\lineup_jsp.java :84: シンボルを解決できません。 シンボル: メソッド getstring (java.lang.String) 場所 : java.sql.ResultSet の インタフェース out.print( rs.getstring("PRICE") ); ^ です。 どこが間違っているのかわからず困っています。 どなたかご教授お願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう