データの保管方法とは?

このQ&Aのポイント
  • JSP/サーブレットを使用してデータを保管する方法について学びましょう。
  • サーブレットとJSP間でのデータの受け渡しには、setAttributeメソッドとgetAttributeメソッドを使用します。
  • ただし、セッションには長期間の大量データを保管するのは避けるべきです。他の方法も考慮しましょう。
回答を見る
  • ベストアンサー

使用するデータの保管

JSP/サーブレットを勉強しています。 サーブレットからJSPにデータを渡すとき、以下のようなコードでやっています。 サーブレット側 request.setAttribute("xxxx",xxxx); や session.setAttribute("xxxx",xxxx); JSP側 request.getAttribute("xxxx"); や session.getAttribute("xxxx"); 書籍などで 「sessionにはあまりデータを保管しないほうがいい」 と書いてあったりするのですが、コードマスタ等のどこでも使うようなデータを長期にわたって保管するのに、他にやり方があるのでしょうか?

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

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

  • ベストアンサー
  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.1

1、クッキーに記録する 2、URIのパラメータに記述しておく 3、hidden属性として書き出しておく いわゆるクライアント側に記録しておいて、リクエスト時にそれを送ってもらうって方法ですね。 >sessionにはあまりデータを保管しないほうがいい なんの書籍かはわかりませんが、本に書いてあることを余り鵜呑みになされないように。 それは安易に大量のデータをSessionに保存してしまうとサーバー側のメモリを圧迫してしまうことが理由なのですが、 物理設計できっちりとデータ定義をしてアクセス数を予測できていれば、Sessionを使うことに問題はないと思います。 1日に100万アクセスをゆうに越えるようなサイトを作る場合にはSessionは避けるべきですが。

b-u-z-z
質問者

お礼

hidebu-さん、ありがとうございます。 データ量に応じて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");

  • 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

専門家に質問してみよう