データの保管方法とは?
- JSP/サーブレットを使用してデータを保管する方法について学びましょう。
- サーブレットとJSP間でのデータの受け渡しには、setAttributeメソッドとgetAttributeメソッドを使用します。
- ただし、セッションには長期間の大量データを保管するのは避けるべきです。他の方法も考慮しましょう。
- ベストアンサー
使用するデータの保管
JSP/サーブレットを勉強しています。 サーブレットからJSPにデータを渡すとき、以下のようなコードでやっています。 サーブレット側 request.setAttribute("xxxx",xxxx); や session.setAttribute("xxxx",xxxx); JSP側 request.getAttribute("xxxx"); や session.getAttribute("xxxx"); 書籍などで 「sessionにはあまりデータを保管しないほうがいい」 と書いてあったりするのですが、コードマスタ等のどこでも使うようなデータを長期にわたって保管するのに、他にやり方があるのでしょうか?
- b-u-z-z
- お礼率65% (44/67)
- Java
- 回答数1
- ありがとう数3
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1、クッキーに記録する 2、URIのパラメータに記述しておく 3、hidden属性として書き出しておく いわゆるクライアント側に記録しておいて、リクエスト時にそれを送ってもらうって方法ですね。 >sessionにはあまりデータを保管しないほうがいい なんの書籍かはわかりませんが、本に書いてあることを余り鵜呑みになされないように。 それは安易に大量のデータをSessionに保存してしまうとサーバー側のメモリを圧迫してしまうことが理由なのですが、 物理設計できっちりとデータ定義をしてアクセス数を予測できていれば、Sessionを使うことに問題はないと思います。 1日に100万アクセスをゆうに越えるようなサイトを作る場合にはSessionは避けるべきですが。
関連するQ&A
- ServletからJSPへのデータの受け渡し
サーブレットにてDBから取得したデータをJSP側に受け渡しをしたいのですが、いろいろと本を読んだり、ネットで情報を調べたりしているのですが、配列データを受け渡す方法が良くわかりません。 どなたか、ココに説明されているHPがある!や、こうすればよいなどのアドバイスをいただければ幸いです。 自分で調べてみたところ以下のところまでは作ったのですが、この後がわからなくなってしまいました。 Servlet側 Enumeration enu_dat = vector.elements(); request.setAttribute("enu_dat", enu_dat); JSP側 session = request.getSession(true); Enumeration data_dat = (Enumeration request.getAttribute("enu_dat"); JSP側で受け取ったとき data_datは「null」 enu_datは「java.util.Vector$1@a2bd15」 のようになっています。
- ベストアンサー
- 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");
- 締切済み
- 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
- サーブレットから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
- Servlet-JSP のセッション管理
すいません。 セッションというものを使ってみたいなと思い、 本などを、見よう見真似で下のようなものを作ってみましたが、 まったく動きません。どこがいけませんか? ーーservlet-ー HttpSession session = req.getSession(); if (session.isNew()) { session.setAttribute("test","ssm3u"); } ーーforwardされるJSP-ー <% HttpSession session = request.getSession(); %> <%= (String)session.getAttribute("test"); %> "ssm3u"と出したいのですが、全然違うのでしょうか? 自分ではCookieを利用するセッション管理を作ったつもりです・・
- ベストアンサー
- Java
- core:setでセットした値をサーブレットで取得
こんにちは。 JSP内で <core:set var="変数" value="値" scope="request" />した「変数」を JSPからリクエストされたサーブレットで取得したいとき request.getAttribute("変数"); ではダメなのですか!? 宜しくお願いします
- ベストアンサー
- Java
- リクエストからArrayListのデータが取得出来ない
いつもお世話になっております。 表題の通り、リクエストからArrayListのデータが取得出来ないのです。 javaで、 ArrayList cmArray = new ArrayList(); データベースからデータ取得 request.setAttribute("category",cmArray.toArray()); jspで ArrayList list = new ArrayList(); list = (List)request.getAttribute("category"); と取得しようとしています。 そうすると、java.lang.ClassCastExceptionが発生してしまいます。 どなたか分かる方がいましたら、ご教授下さい。 よろしくお願い致します。
- ベストアンサー
- Java
- 静的ページからのサーブレット起動について
今、JSPとサーブレットの勉強を行っております。 サーブレット側でデータを取得して JSP側で表示を行いたいと思っているのですが フォームアクション等を行わずに、JSP⇒サーブレット⇒JSPと 実施する事は可能でしょうか? URLアクセス ⇒ JSPからサーブレットの処理を呼び出し ⇒ サーブレットから クラスを利用してデータを取得 ⇒ JSPへデータを渡して表示 というように、URLアクセスのみで一連の処理を行いたいです。 サーブレットからJSPにセッション経由でデータを渡して表示する事や JSPからクラスを利用する方法では成功していますが できるだけMVCモデルに準拠した方法で行いたく思っており かつ、コントローラとしてサーブレットを使ってみたくて このような事に挑戦しております。 可能かどうかだけでもわかると非常に有難いですので ご存知の方、どうかよろしくお願い致します。
- ベストアンサー
- 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
- javaでDBから取得したデータのJSP表示
JAVAでDBから取得し ArrayList shikakuCdList = shikakuCd_Data(); request.setAttribute("shikakuCdList", shikakuCdList); JSPでコンボボックスに表示しようと思います <% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%> <% for ( int i = 0; i < bumonlist.size(); i++ ){%> <option value=" (1)ここの記述方法も "></option> <% }%> という記述にしていますが、うまく動きません。 よろしくお願いします。
- ベストアンサー
- Java
お礼
hidebu-さん、ありがとうございます。 データ量に応じてsessionも使い分ければ良いのですね。