servletで request.getParameter("id");
で、パラメータを取得できますが、
反対にset.Parameter("id","123")のようなメソッドもあるんですか?

RequestDispatcher rDispatcher = req.getRequestDispatcher("showQ");
rDispatcher.forward(req, res);
を実行して、showQ の中でgetParameterしたいんです。
どうしたらいいんですか?

A 回答 (1件)

setAttribute(String name, Object o)


で設定して
getAttribute(String name)
で取得できます。(スコープはrequest)

参考URL:http://java.sun.com/j2ee/sdk_1.3/techdocs/api/in …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QRequestDispatcher.forwardメソッドで遷移する際のURL

お世話になります。
JSP/サーブレットを使用してwebアプリケーションを作成しています。

タイトルの通りRequestDispatcher.forwardメソッドで遷移する際のURL
についてうまくいかず、原因がわからない為質問させて頂きます。
ご教授宜しくお願い致します。
Aproject/jsp/login.jsp
Aproject/jsp/top.jsp
Aproject/WEB-INF/src/servlet/Login.java
という3つのファイルを使用しています。

login.jspにて<form action="../Login" method="post">で
Login.javaサーブレットにIDとパスワードを渡し、
サーブレットで認証を行ったあと
RequestDispatcher.forwardメソッドにて以下のように
遷移するようになっています。
RequestDispatcher rd = request.getRequestDispatcher("./jsp/top.jsp");
rd.forward(request, response);

遷移はうまくいくのですが、top.jspが表示される時のURLが
http://localhost:8080/Aproject/jsp/top.jspとなるはずが、
http://localhost:8080/Aproject/Login
となってしまいます。
web.xmlの記述は
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
としています。
forwardメソッドではなく、sendRedirectメソッドを使用した場合
http://localhost:8080/Aproject/jsp/top.jsp
とうまくいきます。

どのような原因が考えられますでしょうか?
宜しくお願い致します。

お世話になります。
JSP/サーブレットを使用してwebアプリケーションを作成しています。

タイトルの通りRequestDispatcher.forwardメソッドで遷移する際のURL
についてうまくいかず、原因がわからない為質問させて頂きます。
ご教授宜しくお願い致します。
Aproject/jsp/login.jsp
Aproject/jsp/top.jsp
Aproject/WEB-INF/src/servlet/Login.java
という3つのファイルを使用しています。

login.jspにて<form action="../Login" method="post">で
Login.javaサーブレットにIDとパスワードを渡し、
...続きを読む

Aベストアンサー

そういう仕様です。
RequestDispatcherはリクエスト(URL)から実体のデータ(JSP)を隠匿します。

Qrequest.getParameter()

以下のような複数選択可能なメニューを用意しました。

<form action=...>
<select name="opt" size=1 multiple>
<option value>first
<option value>second
<option value>third
</select><p>
<input type="submit">

firstとsecondを選択してボタンを押した時に、
servletのプログラムの中で、
String option=request.getParameter("opt");
と実行したら、二つのオプション(first,second)を取ってきてくれるんですか?
それとも、配列で取得しないとだめなんですか?

Aベストアンサー

参考URLに getParameter() メソッドの説明のページを紹介しておきます。
そこから一分を引用すると、

> If you use this method with a multivalued parameter, the value returned is equal to the first value in the array returned by getParameterValues.

と、言うことですので、そういう場合には、getParameterValues() メソッドを使いましょう。
多分、以下のことが質問に書かれていますから、分かっているのだと思いますが。

> それとも、配列で取得しないとだめなんですか?

参考URL:http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

Qa href="..." とServlet

HTMLファイルに以下のタグを書きました。
<A HREF="http://localhost:8080/.../servlet/test">ここ</A>

上記の「ここ」を押すと、test.javaのdoPost()ではなく、doGet()が
呼ばれるんですか?よく分からなくなってきました(x_x;)
わたしの作ったプログラムはdoPost()しか再定義していませんので、動きませんでした。(後でdoGet()を再定義したら動いたんですが)
ちなみに、IEでアドレスとして"http://localhost:8080/.../servlet/test"
を指定したら、doGet()なしで動きました。ここではdoPost()が呼ばれてるということですよね。。?
どうしてでしょうか?教えて下さい。

Aベストアンサー

私はいつも、全てのサーブレットの親クラスにこんな定義をしておきます。
いちいち、これはGetかPostか?って考えるの大変ですもんね。
こうすると、親クラスのperfomTask()で、セッション関連の共通処理とかを書いておけるし、親クラスにlog排出処理のメソッド作っておけば、全サーブレットで使えますし。

//親クラスの定義
public void doGet(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
protected void performTask(HttpServletRequest req,HttpServletResponse){
perfomTask0(req,res);
}

子クラスの定義
protected void performTask0(HttpServletRequest req,HttpServletResponse){
//処理記述
}

私はいつも、全てのサーブレットの親クラスにこんな定義をしておきます。
いちいち、これはGetかPostか?って考えるの大変ですもんね。
こうすると、親クラスのperfomTask()で、セッション関連の共通処理とかを書いておけるし、親クラスにlog排出処理のメソッド作っておけば、全サーブレットで使えますし。

//親クラスの定義
public void doGet(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse){
performTask(...続きを読む

QServletからServlet

ServletからServletを呼び出す方法がわかりません。

特殊なやり方があるのでしょうか、それともできないのでしょうか・・。

どなたか教えてください。

Aベストアンサー

リダイレクトならば
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Redirect extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse
res)throws ServletException, IOException {

res.sendRedirect("飛びたいURL");
}
}

QServletからServletへの値渡し

最近、A-ServletからB-Servletへの遷移は

response.sendRedirect("B-Servlet");

で可能だと教えて頂きました。

ですがもうひとつわからないことがあります。
このときに、B-Servletへ変数を渡したいのですがやり方がわかりません。
わかる方教えてください><

Aベストアンサー

こんにちは。world99です。 sin-da4のご認識の通りでした。
 doGet()で呼び出されたサーブレットから次のサーブレットに遷移する時は、doGet()が実行されます。同じように、doPost()で呼び出されたサーブレットは、doPost()で次のサーブレットを呼び出します。
 実は、私が試したサンプルは、doGet()とdoPost()のどちらが呼び出されても、doProcess()というメソッドを実行するように、実装しています。文章を短くするための、それを端折っていました。という訳で、この事に気がつきませんでした。
 教えているつもりだった私が逆に、教えて頂きましたねありがとうございます。orz
 あるServletから別のServeltに遷移する時に、値を引き渡すという本題の質問は、これで解決ですね♪


人気Q&Aランキング

おすすめ情報