• 締切済み

JSP内でfor文を使用し、出力結果にそれぞれ違う値を入れ、サーブレットで受け取りたいです。分かる方教えてください。

JSP内でfor文を使用し、出力された値それぞれに違う値を設定し、それをサーブレットで受け取りたいのですが? 分かる方教えてください。 <%Integer N = 0; Integer I = (Integer)session.getAttribute("I"); %> <%for(int i=0; i<list.size(); i++){ ListBeanServlet lBean = (ListBeanServlet) list.get(i);N++;%> <a href="/myHtml/ResultS" ><font size="3" color="white"> <c:set var="param" /><%=N%>/<%=lBean.getLMusic()></font></a><br> <%session.setAttribute("param",N); } %> この様に変数Nに値をいれ、N++で各結果に数字符合をして、 出力結果<a href>ひとつひとつに値を設定しようと思うのですが。 Nの値がやはりfor文の最期の値になってしまい。 出力結果の値が全て同じになってしまいます。 (1)List.sizeは不定数です。 (2)form/hiddenを使ってみたものの、変数の値がnullになってしまう。 <% for(int i=I-1; i<list.size(); i++){ ListBeanServlet lBean = (ListBeanServlet) urList.get(i);%> <param name="FileName" value="<%=lBean.getUrl()%>"> <%} %> 同じJSP内の違う場所にサーブレットを使用し送り、 クリックした<a herf>によって違う設定をしたいのですが? 分かる方教えてください。

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

みんなの回答

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

ウェブアプリケーションの動作の基本 (1)ウェブブラウザから、サーブレットコンテナへリクエストが送られます (2)JSPはサーバサイドで実行されます。 (3)JSPの実行結果は、HTMLとして、ウェブブラウザへ送信されます。 (4)HTML内の、<a href>をクリックする処理は、ウェブブラウザ上でユーザが行います。 (4)<a href>をクリックすると、また、ウェブブラウザから、サーブレットコンテナへ新しいリクエストが送られます。...以下(1)へと続く。 この流れがわかっていますか? わかっているなら、ウェブアプリケーションのメカニズムに合った、処理の流れに設計し直せばよいですよ。

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

> 同じJSP内の違う場所にサーブレットを使用し送り、 > クリックした<a herf>によって違う設定をしたいのですが? > 分かる方教えてください。 日本語として、間違っているようですよ。 何を言いたいのでしょうか。 ウェブアプリケーションのメカニズムを理解していないかと、推測します。 そちらから、勉強されてみては、いかがでしょう。

GENto2
質問者

補足

確かに、、、。 日本語も勉強しなおします。 (1)JSP内でfor文を使用 (2)Nをインクリメント (3)for文によって出力される<a herf>各自に値を設定 (4)一度その値をサーブレットに送る (5)値をIに挿入する (5)元のJSP内Getメソッドにセットして値を引き出す この作業をしたいと思っているのですが、 どうしてもNの値がfor文内の一番最後のインクリメント後のNになってしまい、各<a herf>に違う値が入れられないと言う状況です。 簡単に説明すると「ブラウザ側で、表示された<a herf>をクリックする毎に違うデータを参照したい」のですが。 わかりますか? お願いします、教えてください。

関連するQ&A

  • jspでのパラメータでの値渡しについて

    最近、JSPについて勉強していていろいろ作っているのですが、 JSPでサーブレットに値を渡そうとしたのですが、内容がNULLになってしまいます。 HTMLとJSPでは a hrefでのパラメータ渡し方が違うんでしょうか? select.jspからTest.javaへ値を渡したいです。 <a href="/testPrj/Test?myans=ア&toi"><font size="5">ア</font></a> <a href="/testPrj/Test?myans=イ&toi"><font size="5">イ</font></a> <a href="/testPrj/Test?myans=ウ&toi"><font size="5">ウ</font></a> <a href="/testPrj/Test?myans=エ&toi"><font size="5">エ</font></a> とselect.jspでやっており、(変数toiは"問 ○○"みたいな感じです) String myans=(String)req.getParameter("myans"); と サーブレットで受け取ろうとしています。 いろいろとやってみたのですが、サーブレット側で受け取ったmyansを表示させるとnullに なっていました。 よろしくお願いします。

  • JSPからサーブレットにリンクで値を渡す方法

    JSPでget、postではなく、リンクを利用して値を渡す方法はありますでしょうか。 <%--sidを渡してリンク先に飛ぶ--%> <% request.setAttribute("sid",sid) %> <a href="/Keijiban/Connect" target="_self" ><%=sname%></a> というような方法でやっているのですができません。 サーブレットに処理を任せる値を渡し、処理結果をJSPに使うという 処理にしたいのです。 アドレスの後ろに値をつけようと思ったのですが、URLリライティングなので使えません。 何か良い方法などがありましたら、教えてください。 よろしくお願いします。

  • サーブレットからJSPへ情報を渡す

    サーブレットからJSPへ情報を渡すことについて質問がございます。 ■質問は、ブラウザからサーブレットにリクエストして      モデルからデータを取り出しJSPがモデルを参照して      ブラウザに結果を表示し、ブラウザの画面のボタンを      クリックすると、またサーブレットにリクエストが      いくようにしたいのですが、      そのJSPから二度目のサーブレットへのリクエスト及び      リクエストする際にデータを渡すのですが、      JSPからサーブレットへ飛んでくれず404エラーがでます。      ★どうしたら、JSPからサーブレットへ飛んで       くれるでしょうか? ■簡単な流れでかきますと   リクエスト(hidden value="patu") ブラウザ  →  サーブレット  →  モデル ←→ テキスト           ↓           ↑(参照)   ブラウザ ← ← JSP →→→→→  上記の流れは一回の流れですが、次JSPからまたサーブレットへ  actionし、(hidden value="patu")をして同じ流れを  くりかえしたいのです。 ■JSPではどのようになっているかと申しますと <form action="http:://localhost:8080/sotu/TextServlet"method="POST"> <input type="image" src="NEXTquiz.gif" value="次の問題"     onclick="http://localhost:8080/sotu/TextServlet'"> <iuput type="hidden" name="patu" value="yonyc.getPatu()"> </form> となっております。 ■サーブレットでは protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {  String kye = request.getParameter("patu");//value受け取り MondaiSC mondaisc = new MondaiSC(); //モデルクラス生成  mondaisc . mondaisc.DefaultQuiz(kye, i); //モデルにキーを渡す ArrayList textList = mondaisc.getTextList();  //モデルクラスからテキストの情報が入っているArrayListを受ける り  HttpSession session =request.getSession();//sessionに入れる  session.setAttribute("text",textList);  RequestDispatcher rd =getServletContext().getRequestDispatcher("/yomi.jsp"); } このyomi.jspからまたサーブレットへ同じリクエストをおくりたいの です。  ところが飛んでくれません。  恐らく、JSPでの記述の仕方に問題があるのではないこと思っており ますが、どなたかアドバイスをお願い致します。  宜しくお願い致します。

    • ベストアンサー
    • Java
  • リンクの値→サーブレット

    いつもお世話になっております。 今回もよろしくお願いいたします。 (1)jsp画面のリンクの値をServletへおくる (2)ServletでDBアクセスし、処理を行う (3)(2)で処理した値をBeanに格納する (4)jsp画面でBeanの値を取得する といった流れをしています。 [(1)のjspでのコード(一部)] <form name= henkou method="post" action="../servlet/RequestServSession"> <a href= "../henkou.jsp"> <input type=hidden name=MySubmit> <jsp:getProperty name="reqObject" property="id" /> </a> </form> <script language="JavaScript"> function func(MyCommand){ document.henkou.MySubmit.value=MyCommand; document.henkou.submit(); } </script> [(2)Servletのコード(一部)] String strId = (String)request.getParameter("MySubmit"); String strSesId = new String(strId.getBytes("iso-8859-1"),("Shift_JIS")); int intId = (Integer.parseInt(strId));           ・           ・           ・ //処理された値をBeanに格納 HttpSession session = request.getSession(); *1→session.setAttribute("id",sid); *2→session.setAttribute("name",name); *3→session.setAttribute("biko",biko);           ・           ・           ・ などを実行すると、(4)では   *1→ 0   *2→ null   *3→ null が表示されます。 リンクの値がServletへきちんと送れていないのだと思い、jsp→Servletのみで実行したところ、 "Http-500エラー NullPointerException" が発生します。 どのようにしたらうまく値をおくることができるのでしょうか? どなたかご教授のほどよろしくお願いいたします。 

    • ベストアンサー
    • Java
  • for文を使用して値を代入したいです。教えてください。

    5桁の10進数文字を16進数に変換するコードを作成したのですが、コード上の「商と余りを配列に代入」の箇所をfor文で作成したいのですが、うまくいかず1文1文のコードになってしまいました。「商と余りを配列に代入」する箇所に、当てはまるfor文のコードの所だけ、書き換えたいので教えていただけないでしょうか? //10進数文字を数字の16進数で表示// #include "stdafx.h" #define HEX 5 //「function」:入力文字された文字の処理// char ToInt( char cInt) { int mal=0; switch (cInt){ case '0': mal=0; break; case '1': mal=1; break; case '2': mal=2; break; case '3': mal=3; break; case '4': mal=4; break; case '5': mal=5; break; case '6': mal=6; break; case '7': mal=7; break; case '8': mal=8; break; case '9': mal=9; break; } return (mal); } //「function」:入力文字された文字数// char HexInt( char eInt) { char mul=0; switch (eInt){ case 0: mul='0'; break; case 1: mul='1'; break; case 2: mul='2'; break; case 3: mul='3'; break; case 4: mul='4'; break; case 5: mul='5'; break; case 6: mul='6'; break; case 7: mul='7'; break; case 8: mul='8'; break; case 9: mul='9'; break; case 10: mul='A'; break; case 11: mul='B'; break; case 12: mul='C'; break; case 13: mul='D'; break; case 14: mul='E'; break; case 15: mul='F'; break; } return (mul); } //「function」:桁数の計算(10×指数を計算)// int HexAcc( int n ) { int i; int ans=1; for( i=0; i<n; i++ ){ ans *= 10; } return (ans); } int _tmain(int argc, _TCHAR* argv[]) { int i=0,n=0,j=0,k=0,s=0,m=0; char decimal[255], ditto[255],sub[255],temp[255],flip[255],na[255]; int u=0,odd=0; int a=0,b=0; int sam1=0,sam2=0,sam3=0,sam4=0,sam5=0; int mas1=0,mas2=0,mas3=0,mas4=0,mas5=0; if( argc > 1 ){ decimal[s] = argv[1][i]; } else{ printf("10進数を入力してください。\n"); return 1; } for( k=0; k<=HEX; k++ ){ sub[k] = '0'; } for( k=0; k<=HEX; k++ ){ temp[k] = '0'; } for( k=0; k<=HEX; k++ ){ flip[k] = '0'; } for( k=0; k<=HEX; k++ ){ na[k] = '0'; } for( i=0; argv[1][i] != '\0'; i++ ){ decimal[i] = argv[1][i]; } decimal[i] = '\0'; for( i=0; decimal[i] != '\0'; i++ ){ if( decimal[i] != ' ' ){ ditto[n] = decimal[i]; n++; } } ditto[n]='\0'; for( n=0; ditto[n] != '\0'; n++ ){ if(( ditto[n] == '0' ) || ( ditto[n] == '1' ) || ( ditto[n] == '2' ) || ( ditto[n] == '3' ) || ( ditto[n] == '4' ) || ( ditto[n] == '5' ) || ( ditto[n] == '6' ) || ( ditto[n] == '7' ) || ( ditto[n] == '8' ) || ( ditto[n] == '9' )){ }else{ printf("エラー\n 10進数を入力してください。\n"); return 0; } } for( n=0; ditto[n] != '\0'; n++ ){ m = m + 1 ; } if( m <= HEX ){ }else{ printf("エラー\n入力文字数は、%d文字以内にしてください。\n",HEX); return 0; } for( n=0; ditto[n] != '\0'; n++){ sub[HEX-m+n] = ditto[n]; } sub[HEX] = '\0'; int ans=0, add=0; for( n=0; sub[n] != '\0'; n++){ ans = ToInt(sub[n]); add += ans * HexAcc(HEX-n-1); } //商と余りを配列に代入// sam1 = add / 16; mas1 = add - sam1 *16; temp[0] = mas1; sam2 = sam1 / 16; mas2 = sam1 - sam2 * 16; temp[1] = mas2; sam3 = sam2 / 16; mas3 = sam2 - sam3 * 16; temp[2] = mas3; sam4 = sam3 / 16; mas4 = sam3 - sam4 * 16; temp[3] = mas4; sam5 = sam4 / 16; mas5 = sam4 - sam5 * 16; temp[4] = mas5; //商と余りを配列に代入・ここまでfor文に変更したいです// temp[5]='\0'; for( a=0; a<2; a++ ){ b = temp[a]; temp[a] = temp[4-a]; temp[4-a] = b; } temp[n]='\0'; for( n=0; sub[n] != '\0'; n++){ na[n] = HexInt(temp[n]); } na[5]='\0'; printf("\n10進数文字を16進数で変換した値は %s \n",na); }

  • サーブレットのリストをJSPを渡すとき認識しない

    org.apache.jasper.JasperException: Exception in JSP: /keiji/Top.jsp:41 38: List list = (List)request.getAttribute("Beansid"); 39: %> 40: <% 41: for(int i=0; i<list.size(); i++){ 42: Beans bean = (Beans)list.get(i); 43: bean.getsid(); <%@page import="package.Beans"%> <%@page import= "java.util.*" %>とインポートを使用しました。 ArrayListとIteratorも使用できませんでした。 WindowsXP Tomcat5.5、JSP2.0です。 JavaSE all in one Eclipse3.4 です。 これは、サンプルのコピーを使用しました。 出来る限り何をやってもだめで、調べても見つかりません。 JSPの問題かSEの問題か、さっぱりわかりません。 分かる方いましたら、教えてください。よろしくお願いします。

  • 配列の値の削除について

    JSP間でデータの受け渡しの際に、配列の要素で0以外の値だけを受け渡したいと考えています。 例えば、 for (int i = 0; i < list.size(); i++) {  in[i] = ((Integer)list.get(i)).intValue(); } で、inの中の0の要素を削除というようなことをして、session.setAttributeで送りたいと考えているのですが、 よく解らず、困っています。 アドバイス頂けたら幸いです。 宜しくお願いします。

    • ベストアンサー
    • Java
  • プログラミング for文

    プログラミング for文 プログラミングの問題です。 「自然数nを入力し、以下のようなパターンが出力されるようなプログラムをfor文を使って作成せよ。」 (例:n=3のとき) % ./a.out n: 3 * ** *** *__* **_** ****** *__*__* **_**_** ********* (例:n=4のとき) % ./a.out n: 4 * ** *** **** *___* **__** ***_*** ******** *___*___* **__**__** ***_***_*** ************ *___*___*___* **__**__**__** ***_***_***_*** **************** (_で空白を表しましたが、上手く見られないかもしれません…。小さい直角三角形が下に行くにつれ1個ずつ増え、全体的にみると大きい直角三角形が見えるイメージです。) つまり、n=3なら、 * ** *** を単位として、1~3行目にはこれが1つ、4~6行目にはこれが2つ、7~9行目にはこれが3つあります。 一般に、 * ** *** … ********(←n個) を単位とし、n^2-2~n^2行目にこれがn個あるようなパターンです。 私はまず、単位パターンをプログラムしました。 #include <stdio.h> main() { ___int n, i, j; ___printf("n: "); ___scanf("%d", &n); ___for (i=1; i<=n; i++) { ______for (j=1; j<=i; j++) { _________printf("*"); ______} ______printf("\n"); ___} } (_は空白です) しかし、単位パターンを横に2個、3個と並べるプログラムが分かりません。 さらにfor文を使い、3重、4重にするのですか?どなたか教えてください。

  • JSPから値を送ったときのServletでの受け取り方について

    JSPから<form>で値を送って、それをServletでgetParameterで受け取る処理を しているのですが、 JSPから送る値がいくつあるかわからない場合、Servlet側ではどのように 受け取る方法があるでしょうか? 例えば、 <form action="<%= response.encodeURL("/mimi/abc") %>" method="post"> <% for(int i=0;i<attr.size();i++) { //attr.size()にはいくつ入ってるか不明として String strNameAtr = (String)attr.elementAt(i) ; %> 値 <input type="text" value="<%= strNameAtr %>" name="xmlValueAttr_"+"<%= i %>"><br> <% } %> <input type="submit" value="変更" name="getText"> </form> これを、Servletで受け取る場合、どのように受け取れるでしょうか? xmlValueAttr_iの"i"の部分はいくつまで入っているかわからないので、 普通の処理だと、対応できません。 いい方法があったら、教えてください、お願いします。

    • ベストアンサー
    • Java
  • javaのfor文

    nの値の和を求めるのはこれ以外に書き方はありますか? import java.util.*; class SampleGoo{ public static void main(String args[]){ Scanner std = new Scanner(System.in); System.out.print("整数値:");int n = std.nextInt(); int ans = 0; for (int i = 1;i <= n;i++){ ans = ans + i; } System.out.println(Integer.toString(ans)); } }

専門家に質問してみよう