2016-05-25 6 views
-1

まず、htmlからサーブレットにパラメータを送信したいと思います。 次に、パラメータから配列を作成し、その配列を別のサーブレットに送信したいとします。サーブレット2で印刷するだけです。 あるサーブレットから別のサーブレットに配列を送信して印刷しますか?

public void doGet(HttpServletRequest request, 
         HttpServletResponse response) throws ServletException, IOException { 
       //System.out.println("XML servlet called!"); 
       response.setContentType("text/html"); 
        response.getWriter(); 
        //read value from selection 
        String videoname = request.getParameter("video"); 
        String videoformat = request.getParameter("format"); 
        String videoquality = request.getParameter("quality"); 

        //System.out.println("Name" + videoname); 
       //System.out.println("format" + videoformat); 
       //System.out.println("quality" + videoquality); 
       String [] chain1 = {"v1","f1","q1"}; 
       String [] chain2 = {"v1","f1","q2"}; 
if (videoname.equals(chain1[0]) && (videoformat.equals(chain1[1])) && (videoquality.equals(chain1[2]))){ 

       request.setAttribute("chain",chain1); 

      } 
      }else if (videoname.equals(chain2[0]) && (videoformat.equals(chain2[1])) && (videoquality.equals(chain2[2]))){ 
       request.setAttribute("chain",chain2);} 


      RequestDispatcher dispatch = request.getRequestDispatcher("/Servlet2"); 
     dispatch.forward(request, response); 

と第二サーブレットで

、私のコードは次のとおりです:

String value = (String)request.getAttribute("chain"); 
     System.out.println("Chain is" + value); 

私の問題は、これはdoesnの `tの仕事である は、ここに私のコードです。私には2つの問題があります。 1)attribiuteを送信する方法2)同じmashinでservlet2の結果を見ることは可能ですか?私は同じプロジェクトでServlet2という名前の別のクラスを作成し、web.xmlで名前とパスを定義するだけです。それは正しいのですか?

答えて

0
  1. 属性の送信方法は? 属性を送信するために何をしていますか(request.setAttributeを使用し、次にdispatch.forwardを使用している場合)
  2. 同じプロジェクト内にServlet2という新しいサーブレットを作成し、web.xmlで正しく設定したと仮定すると、あなたはそのサーブレットのGETやPOSTメソッドで属性を取得することができるはずです。

私はあなたがServlet2とないにservlet1によって行われるべき応答を、変更しているので、あなたが問題に実行されていることを信じています。以下を削除しますあなたのコードからの行

response.setContentType("text/html"); 
response.getWriter(); 

、Servlet1の応答を処理していないためです。これはうまくいかない場合は、あなたの質問を修正し、コンパイル/実行しようとするときに得られるエラーの完全なスタックトレースを含めなければなりません。

1

サーブレットは、クライアントから送信された要求を処理するために作成されます。あなたのservlet2クラスがそのようなサービスをしていると仮定します。サーブレットにpublic static変数を宣言すると、どのクラスからでもアクセスできます。したがって、サーブレット1からクライアントにデータを送信し、クライアントからサーブレット2にデータを戻す必要はありません。 Webサーバー内のすべてのサーブレットに共通の変数がある場合は、静的変数を使用できます。サーブレット2の唯一の目的がデータを印刷している場合、それはサーブレットであってはいけません。ちょうどJavaクラスが問題ありません。

すべての要求に対して1つのサーブレットインスタンスしか作成されないことに注意してください。したがって、インスタンス固有のデータを格納するためにインスタンス変数を使用しないでください。セッションを使用してみてください。

Thisがお手伝いします。

関連する問題