StrutsからString型のPOST値を送る方法

このQ&Aのポイント
  • Strutsを使用したフレームワークから、外部サイトへString型のPOST値を送る方法がわかりません。
  • Actionクラス側でrequest.setAttributeを使用して値を設定し、JSP側でrequest.getParameterを使用して値を取得しようとしましたがうまくいきません。
  • HttpSessionを使用せずにString型のPOST値を送る方法を教えていただきたいです。
回答を見る
  • ベストアンサー

StrutsからString型のPOST値を送る

初めて投稿させていただきます。 質問事項ですが、 Strutsを使用したフレームワークから、外部サイトへ向けString型の POST値を送ろうと思っているのですが、上手く出来ません。 自分なりに考え、 Actionクラス側 request.setAttribute("aaa","aaa") JSP側 request.getParameter("aaa") 等とやってもとれません。 JSP側で<bean:write name="aaa" />とすれば取れますが、送り先が他言語の為、String型のPOST値で送るしかない状況です。 HttpSessionを使えば上手くいくのですが、出来れば使用せず作成したいと思っています。 どなたか、ご存知の方がおりましたらお教え下さい。 尚、開発環境は下記の通りです Java 1.4 Struts 1.2 Tomcat 5.0 よろしくお願いします。

noname#21838
noname#21838
  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
回答No.1

>Actionクラス側 >request.setAttribute("aaa","aaa") >JSP側 >request.getParameter("aaa") >等とやってもとれません。 setAttributeしたのならば、 request.getAttribute("aaa") とやらないと取れませんよね。 >JSP側で<bean:write name="aaa" />とすれば取れますが、送り先が他言語の為、String型のPOST値で送るしかない状況です。 以下のようにしたらダメなんでしょうか? <form method="post" action="他システム"> <input type="hidden" name="foo" value="<bean:write name="aaa" />"> <input type="submit" value="他システムへPOSTする"> </form> ちなみに、POSTされる値は、整数型、不動小数点型などはありえなくて、常に文字列です。strutsでは、ActionFormが整数型や真偽型などに変換してくれているだけです。

noname#21838
質問者

お礼

お早いご回答ありがとうございます。 >setAttributeしたのならば、 >request.getAttribute("aaa") とやらないと取れませんよね。 私の記憶では、 getParameter()はgetAttribute()のデータ(Object型)をString型として取得しているので、大丈夫だと思います。 >以下のようにしたらダメなんでしょうか? ><form method="post" action="他システム"> ><input type="hidden" name="foo" value="<bean:write >name="aaa" />"> ><input type="submit" value="他システムへPOSTする"> ></form> >ちなみに、POSTされる値は、整数型、不動小数点型などはありえなく >て、常に文字列です。strutsでは、ActionFormが整数型や真偽型など >に変換してくれているだけです。 おっしゃる通り、一度JSPへ表示させて遷移すれば可能ですが、 出来るだけ画面数を減らしたいと思っています。 ですので、JSPからボタン及びJavaScriptでのリダイレクトは極力避けようと考えています。

その他の回答 (1)

回答No.2
noname#21838
質問者

お礼

ありがとうございます。 これを記述したのは私です。(笑) とても急いで居たので@ITさんの方でもスレッドを立てました。 2重というのは確かに失礼ですね。このスレッドは閉じさせて頂きます。 fdsjaklfjas様、pcbeginner様ご返答ありがとうございました。

関連するQ&A

  • セッション管理

    失礼いたします。 セッション情報の受け渡しを勉強しています。 送り手側で 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パラメータの内容変更

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

  • Strutsの設定エラーについて

    現在、Java開発環境及びStrutsフレームワークの設定を行なっていたのですが、動作確認用のJSPを実行すると以下のエラーが表示されてしまいます。 HTTPステータス500- << 説明 >> The server encountered an internal error () that prevented it from fulfilling this request. << 原因1 >> javax.servlet.ServletException: アクション /BeginAction に対応するマッピングが見つかりません org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.input_jsp._jspService(input_jsp.java:75)  <--- 略 ---> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) ※もうひとつ同様の原因が表示されていますが、長文となるため省略しています。 今回、Strutsを設定するにあたり、以下のページを真似て設定しました。 http://www.atmarkit.co.jp/fjava/rensai3/struts01/struts01_2.html また動作確認用のJSPは次に示すURLの"input.jsp"を使用させて頂いています。 http://www.atmarkit.co.jp/fjava/rensai3/struts02/struts02_1.html ※現在は、Strutsを使用しないJSPは正常に実行されます。 動作環境は、 OS:WindowsXP pro sp2 Tomcat:5.5.17 Java:J2SDK1.4.2_12 Stuts:1.3.5 です。 原因/対応策のご教授をお願い致します。

  • strutsについて

    eclipseとTomcat、strutsの勉強をしているのですがjspをブラウザからhttpで実行すると 「タグ "html:errors" にタグハンドラクラス "org.apache.struts.taglib.html.ErrorsTag" をロードできません」 とエラーがでてしまいます。 html:errorsをコメントアウトして実行すると、その次に使用しているhtml:formを使用している箇所でエラーになってしまいます。 struts.jarは関連させていますし。tblも関連させていると思っています。いろいろ検索してみたのですが対処方法がわかりません。 <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> これをjspに記載していますが、WEB-INF配下にtldファイルがあれば特に問題ありませんよね?ファイル構成も大丈夫だとは思うのですが。 有識者がおりましたらご教授お願いします。情報が不足しているので指摘をお願いします。

  • servletからjspへオブジェクトの配列情報を送る方法

    いつもお世話になっております。echo2002です。 さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか? ”servletで作成したオブジェクトの配列をjspにforwardして表示させる” こんなような処理を考えています。 構成:FileListServletクラス, FileInfomationクラス, disp.jsp FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、 それぞれgetなどのアクセサメソッドを持つとします。 FileListServletクラスでの処理 FileInfomationクラスの配列を作成し、各情報をsetする。 HttpServletRequestにsetAttributeでFileInfomation情報を付加し、 disp.jspへforwardする。 ※以下の方法を考えています。 request.setAttribute("fileinfo1", fileinfo[0]); request.setAttribute("fileinfo2", fileinfo[1]); request.setAttribute("fileinfo3", fileinfo[2]); ・・・ (配列でsetAttributeできるのかわからなかったので、  とにかくファイルの数分setAttributeしてみました) getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res) わからないこと: disp.jspでどのようにFileInfomationの情報を取得し、 内容を参照できるのかがよくわからないのです。 jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、 返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね? 突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。 オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、 それもご教授いただけますでしょうか。 よろしくお願いいたします。jsp難しいです・・・。

    • ベストアンサー
    • Java
  • 空欄のテキストフィールドの判定の方法

    HTMLのフォームに入力されたテキストフィールドの値より処理を変化させる ロジックを作ろうと下記のようにプログラムしました。 テキストフィールドに何か入力して送信した場合は、elseの処理を正常に行ってくれるのですが、 未入力でsubmitした場合だと、処理が止まってブラウザ上には真っ白な画面しか表示されません。 やはり判定文が悪いのでしょうか? 未入力のテキストフィールドの判定方法を教えてください。 ----------------------------------------------------- String tf1 = request.getParameter("text1"); String tf2 = request.getParameter("text2"); if((tf1 == null) || (tf2 == null)) {  HttpSession session = request.getSession();  session.setAttribute("errmessage", "未入力の項目があります。");  RequestDispatcher dispatcher     = request.getRequestDispatcher("/err.jsp");  dispatcher.forward(request, response); } else {  //テキストフィールドに何かが入力されている場合の処理 }

    • ベストアンサー
    • Java
  • JSPからのパラメータチェック

    いつもお世話になっております。 開発環境はeclipse SDK。OSはWInXP。 現在JSPより送られてきた値のチェックを行うプログラミングをしているのですがうまくいきません。 JSP側で"すべて"という文字列を送信してサーブレットでその文字列を受け取り、if文で判定を行おうとしています。 デバッグでみるとサーブレットにきちんと"すべて”の文字が送られてきています。 サーブレット内のif文をどうしてもとおりません。 問題のif文は以下のような感じです。 String msg = request.getParameter("msg"); if(msg == "すべて") msg = "すべてが入力されました"; request.setAttribute("msg",msg); JSPから送られている"すべて"とデバッグで調べても同じに見えます。 型がおかしいのかと思い、ためしに以下のようなことをしてみました。 String msg = request.getParameter("msg"); String chekmsg = "すべて"; if(msg == chekmsg) msg ="すべてが入力されました"; request.setAttribute("msg",msg); としても結果が同じです。 残る可能性は、デバッグモードで見ると、msgとchekmsgのhashの数字が違うところぐらいです。 お分かりなる方がいましたらよろしくお願いいたします。

    • ベストアンサー
    • 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
  • セッション変数について

    セッション変数の扱いについて困っていることがあります。 ichiran.jspの画面(商品一覧表) りんご→nyuryoku.jsp?shohinmei=ringoへのリンク みかん→nyuryoku.jsp?shohinmei=mikanへのリンク nyuryoku.jsp String shohinmei=request.getParameter("shohinmei"); session.setAttribute("shohinmei",shohinmei); ... <form method="post" action="koushin.jsp"> ...入力フォーム </fotm> koushin.jsp HttpSession hs=request.getSession(true); String shohinmei=(String)hs.getAttribute("shohinmei"); データ更新のSQLをかける ichiran.jspの画面で 1.りんごを右クリックして新しいウィンドウで開く 2.みかんを右クリックして新しいウィンドウで開く 3.りんごの入力画面を開いているブラウザのSubmitをクリック ↓ 2の時点でsession変数shohinmeiにmikanが入っているので、 りんごのはずがみかんのほうに更新がかかってしまう。 りんごとみかんの入力画面を並列に開いたときに、 それぞれ別のセッションとして生成され、りんごとみかんに関するshohinmeiの 変数領域が別々に確保されるようにする方法はないものでしょうか?

    • ベストアンサー
    • Java
  • サーブレットの【405】POSTについて

    「HTTPのGETメソッドは、このURLではサポートされていません。」のエラーが出ます。 コードは「スッキリわかるサーブレット&JSP」本の10章です。 サーブレットを右クリックで実行すると、上記のエラーが出ます。 ----------------------------------------------------------------- package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import model.LoginLogic; import model.User; @WebServlet("/Login") public class Login extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストパラメータの取得 request.setCharacterEncoding("UTF-8"); //PrintWriter out = response.getWriter(); //out.println(createHTML("POST")); //out.close(); String name = request.getParameter("name"); String pass = request.getParameter("pass"); // Userインスタンス(ユーザー情報)の生成 User user = new User(name, pass); // ログイン処理 LoginLogic loginLogic = new LoginLogic(); boolean isLogin = loginLogic.execute(user); // ログイン成功時の処理 if (isLogin) { // ユーザー情報をセッションスコープに保存 HttpSession session = request.getSession(); session.setAttribute("loginUser", user); } // ログイン結果画面にフォワード RequestDispatcher dispatcher =request.getRequestDispatcher("/WEB-INF/jsp/loginResult.jsp"); dispatcher.forward(request, response); } //private char[] createHTML(String string) { // TODO 自動生成されたメソッド・スタブ //return null; //} } ------------------------------------------------------------------------------------ ビュー <%--つぶやきトップ画面 --%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>つぶやき画面</title> </head> <body> <br><br><br><p style="text-align:center"><b>ようこそ!!つぶやきアプリへ!</b></p> <form action="Tsubuyaki/Login" method="post"> <p style="text-align:center">ユーザー名:<input type="text" name = "name"></p> <p style="text-align:center">パスワード:<input type="text" name = "pass"></p> <p style="text-align:center"><input type="submit" value="ログイン"></p> </form> </body> </html> ------------------------------------------------------------------------------------ どこがダメかご回答願います。

専門家に質問してみよう