• ベストアンサー

requestの値が削除されません…

requestの値を削除したいのですが、全く削除出来ません。 ソースは Enumeration parameterNames = request.getParameterNames(); while( parameterNames.hasMoreElements() ) { // パラメータ名取得 String name = (String)(parameterNames.nextElement()); /* 値列挙 */ String[] valueList = request.getParameterValues(name); /* パラメータ値列挙 */ for ( int i = 0 ; i < valueList.length ; i++ ) { // 値を削除 request.removeAttribute(name); } } です。 試しに request.setAttribute(name,"***"); で値をセットし、 request.removeAttribute(name); (または、request.setAttribute(name,null);) でnameを特定のパラメータで、やってみて、 request.getAttribute(name); で確認したところ、値は削除されました。 値のセットの仕方が問題なのでしょうか?? 環境は、 JDK1.3.1 oc4j1.0.2.2.1 です。 どうすれば、requestの値を削除出来るのか、ご教授お願いしますm(_ _)m

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

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

  • ベストアンサー
  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.1

// リクエストパラメータを取得(POST/GETでくる値) request.getParameterValues // セッションにデータを保存 request.setAttribute(name,"***"); // セッションのデータを削除 request.removeAttribute(name); リクエストパラメータとセッションの違いですね

schnav
質問者

お礼

ありがとうございました。 勉強になりました。

schnav
質問者

補足

なるほど、そうなんですね。 理解出来ました。 ところで、リクエストの方は削除出来ないんでしょうか??

その他の回答 (2)

  • auty
  • ベストアンサー率58% (284/486)
回答No.3

ホームページからホームページへデータを渡すとき、    query情報    request属性    session属性 がありますが、これらは有効範囲が異なります。 ANo.2 氏の言われるようにそのページが終われば自動的になくなりますので、 削除しようとするのはほとんどど無意味です。 次のページにデータを渡す必要があるときに例えば、request属性にセットするという形をとります。

schnav
質問者

お礼

有効範囲が異なるのですね。 ありがとうございました。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

> リクエストの方は削除出来ないんでしょうか?? リクエストパラメータのことですか? ひとつのリクエストの寿命は短いので、ほっといてかまいません。

schnav
質問者

お礼

セッションを消さなくてはいけない状況だったのですが、 別の方法で回避しました。 ありがとうございました。

関連するQ&A

  • JBuilderの文字化け

    JBuilderでサーブレットでパラメータを渡す際に日本語が文字化けしてしまいます。 Enumeration enum=request.getParameterNames(); while(enum.hasMoreElements()){ String key=(String)enum.nextElement(); String value=new String(request.getParameter(key).getBytes("8859_1"),"JISAutoDetect"); out.println(value); } ソースは上記のようになっていますが日本語を表示できません。直す方法がわかる方どうかよろしくお願いします。

  • parameterのunicode変換

    unicode変換について聞かせてください。 servletでparameterを受け取って、unicode変換させて、自分の 必要なparameterだけを使うということです。 いろいろHPなどを参考に調べた結果、 Hashtable data = new Hashtable(); Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String key = (String)e.nextElement(); String[] values = request.getParameterValues(key); try { data.put(key,new String(values[0].getBytes("8859_1"),"JISAutoDetect")); } catch(java.io.UnsupportedEncodingException ex) { } } との内容の変換を元に考えたのですが、自分では改造できずにいます。 上記の例では、Hashtableに収められた、変換内容の取得が、 String hinmei = (String)data.get(kye); などとすると、hinmeiのunicode変換された値がすべて取得される と思います。 しかし、自分の欲しいunicode変換された値だけを取得するには どのようにしたらよいでしょうか? 例えば、 String hinmei = (String)data.get(hinmei); String hinban = (String)data.get(hinban); というように、個別で取得したいのです。 もちろん、この他にも、parameterで送られてきている値は、あるかも 知れませんが、この場合は使わず・・・。 また、使うときには、 String hinmoku = (String)data.get(hinmoku); と追加するだけでいいようにしたいのです。 ご教授できらた幸いです。

    • ベストアンサー
    • Java
  • 【初心者】フォーム内容のファイル保存

    はじめて投稿いたします。 現在、SERVLETでアンケートフォーム(HTML)の内容を ブラウザに表示させ、その内容をテキストファイルに保存する。 ということをやっております。 以下のプログラムを書いたのですが、 アンケート内容がブラウザに表示、テキストファイルを指定した場所(C\直下)へ書き出すことも出来たのですが、その中身のアンケート内容が1項目しか書き出されません。 項目は全部で10個ほどあり、テキストボックスや、チェックボックスなどが混ざったものです。 初心者の質問で大変恐縮ですが、ここ4日ほど進んでません。。。 お分かりになる方、お願いいたします。 ECLIPSE3、Tomcat4を使用しています。 package Test; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class MaxTEST extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/plain; charset=UTF-8"); //出力設定 PrintWriter out = response.getWriter(); //繰り返しパラメを返す設定 Enumerationで名前の一覧を取得 Enumeration names = request.getParameterNames(); while(names.hasMoreElements()) { String name = (String) names.nextElement(); String[] values = (String[]) request.getParameterValues(name); for (int i = 0; i < values.length; i++) { //ファイルへの書き出し PrintWriter File = new PrintWriter(newFileOutputStream("c:/a.txt")); File.println(name + "=" + values[i]); //ブラウザへの書き出し out.println(name + "=" + values[i]); //ファイル書き出し終わり File.close(); } } } }

  • 値の取得

    先日と同じ問題を出してしまい、申し訳ございません。 iの値を取得したいですが、どうしてもservlet側を取得が出来ないです。 教えてください。 <%@page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.util.*" %> <%@ page import="blog.*" %> <html> <body> <script type="text/javascript"> <!-- function check(){ if(window.confirm('本当に削除してよろしいでしょうか?')){ // 確認ダイアログを表示 var element = document.getElementById("i") request.setAttribute("id", element);// return true; // 「OK」時は送信を実行 } else{ // 「キャンセル」時の処理 window.alert('キャンセルされました'); // 警告ダイアログを表示 return false; // 送信を中止 } } //--> </script> <center> <table> <form action="SeachServlet" method="POST"> <tr> <td>名前:<input type="text" name="name" size="40" value="<%if(request.getAttribute("name")!=null){%> <%=request.getAttribute("name")%><%}%>"></td></tr> <tr><td>日付: <select name="year"> <option><%if(request.getAttribute("year")!=null){%> <%=request.getAttribute("year")%> <%}%></option> <%Calendar cl=Calendar.getInstance(); int year = cl.get(Calendar.YEAR); for(int i=year-7; i<=year+3;i++){ %> <option value="<%=i %>"> <%=i %></option> <%} %> </select>年 <select name="month"> <option><%if(request.getAttribute("month")!=null){%> <%=request.getAttribute("month")%> <%}%></option> <% for(int i=1; i<=12;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>月 <select name="day"> <option><%if(request.getAttribute("day")!=null){%> <%=request.getAttribute("day")%> <%}%></option> <% for(int i=1; i<=31;i++){ if(i<10){%> <option value="0<%=i %>">0<%=i %></option> <%}else{%> <option value="<%=i %>"><%=i %></option> <%}}%> </select>日</td> </tr> <tr><td><input type="button" value=" 印刷 "></td> <td><input type="submit" name="seach" value=" 検索 "></td> </form> </tr> </table> <hr> <FORM> <div><input type="button" value=" 戻る " onClick="history.back()"></div> </FORM> <form action="SeachServlet" method="POST"> <% List<Loginbeans> list = (List<Loginbeans>)request.getAttribute("productlist"); if(list.isEmpty()){ out.print("該当のデータはありません。"); }else{ %> <table border="1"> <tr><th>ユーザID</th><th>名前</th><th>日付</th></tr> <% int i=0; for (Loginbeans bn : list) { i++;//この値を取得したいです %> <tr><td><%=bn.getUser_id()%><input name="use_id" type="hidden" value="<%=bn.getUser_id() %>"/></td> <td><%=bn.getName()%><input name="name" type="hidden" value="<%=bn.getName()%>"/></td> <td><%=bn.getTotal()%><input name="total" type="hidden" value="<%=bn.getTotal()%>"/></td> <td><input id="<%=i%>" type="submit" value=" 削除 " name="delete" onClick="return check()"></td> </tr> <%}}%> <input type="hidden" name ="number" value ="element"> </form> </table> </center> </body> </html> selvet側で String id = (String)request.getAttribute("id"); String ida = request.getParameter("number"); 取得できないですが・・

  • セッション管理

    失礼いたします。 セッション情報の受け渡しを勉強しています。 送り手側で 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
  • request.getについて

    jspのデータの引き渡しで以下のような現象が発生しました。 変数名"A"ではデータの引き渡しができない。 変数名"B"ではデータの引き渡しができる。 このような現象は起こり得るのでしょうか? 何が原因として考えられるでしょうか? =================================================================================================== for( ~ ) { ・・・ <td><input type="textbox" name="A" value= "test1" /></td> <td><input type="textbox" name="B" value= "test2" /></td> } ==================================================================================================↓画面遷移後 (1) String[] get_A = request.getParameterValues("A");←データを受け取れない。 (2) String[] get_B = request.getParameterValues("B");←データを受け取れる

    • ベストアンサー
    • Java
  • requestパラメータの内容変更

    はじめまして。 request.getParameter()とrequest.setAttribute()について教えてください。 サーブレット側で画面制御をするために、アクションクラスの中での処理内容によってrequestパラメータを変更しようとしています。 具体的には、submit時に ...?id=aaa とした値をサーブレット側の処理内容によって request.setAttribute("id",'bbb')などと変更したいのです。 上記の構文であっているとは思うのですが、値が変わってくれません。 request.setAttribute("id","bbb")のあと、すぐにrequest.getParameter("id")とすると"aaa"が取れるのです。 これは何か使い方が間違っているのでしょうか? ご教授よろしくお願いします。

  • Requestの取り方、どちらが好ましい?

    C♯、ASP.NETでの開発です。 string test = Request["hoge"].ToString() という取り方をしている箇所があり、これだとパラメータとしてhogeが なかった時に落ちるので string test = Request.QueryString["hoge"]; にしようと思っています。 (単純に、なければ空白としたい) 取り方は違いますが、結局のところ(値があれば)同じものが 来るのでこの対応で問題ないと思っているのですが、問題ありましたら ご指摘いただけないでしょうか。

  • VectorからデータをとりJSPへ・・

    基本的な質問ですいません。 Vector vector = new Vector(); Vector userlog = new Vector(); vector.add(answer); answerの中身は省略します。 Enumeration e = vector.elements(); while(e.hasMoreElements()){ Object obj = e.nextElement(); AA A = (AA)obj; String loglog = A.log; userlog.addElement(loglog); } request.setAttribute("logname", userlog); でAに含まれるlogを取り出し、JSPに表示したいのですが、方法が分かりません。 logic:iterateを用いるのでしょうか?参考になるサイトありましたらお願いします。 ちなみにloglogについてはSystem.out.で確認できています。

    • ベストアンサー
    • Java
  • setAttribute getAttribute 配列内容受け渡し  について 

    こんいちは。 setAttributeでセットした値をgetAttributeを使用して表示したいのですがうまくいきません。 あとsession.setAttributeとrequest.setAttributeの違いがわかりません。 session はなんとなくわかるのですが、requestがいまひとつわかりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。 下記がコーディングの内容です。 test.jsp <%@ page contentType="text/html;charset=Shift_JIS" import="java.sql.*, java.util.*" %> <% String[] desc={"aaa","bbb","ccc","ddd","eee"}; session.setAttribute("desc",desc); Vector vect = (Vector)session.getAttribute("dpt"); Iterator itr = vect.iterator(); while(itr.hasNext()) { String[] temp = (String[])itr.next(); out.println(temp[0]); out.println(temp[1]); } %> <html> <body> t_3 test </body> </html>

    • ベストアンサー
    • Java

専門家に質問してみよう