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 回答 (2件)

私はいつも、全てのサーブレットの親クラスにこんな定義をしておきます。


いちいち、これは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){
//処理記述
}
    • good
    • 0
この回答へのお礼

おぉ~(◎0◎)!!頭いいですね!って、私が頭悪いだけなんですけど…(^^;
わざわざ、ありがとうございました!やってみます。

お礼日時:2001/12/21 15:50

a href="..."でサーブレットを開くとdoGet()が呼ばれます。


また、アドレスでhttp://...と入力した場合もdoGet()が呼ばれます。
(のはずなんですが…呼ばれてないんですよね?何故でしょう)

doPost()が呼ばれる時は、
<form method="POST" action="サーブレットのアドレス">
</form>
でフォームがsubmitされた時です。

<form method="GET" action="サーブレットのアドレス">
もしくは、methodを省略して
<form action="サーブレットのアドレス">
とした時は、doGet()が呼ばれます。

参考までに。
    • good
    • 0
この回答へのお礼

どうもありがとうございました!!
>アドレスでhttp://...と入力した場合もdoGet()が呼ばれます。
>(のはずなんですが…呼ばれてないんですよね?何故でしょう)
すみません…私のミスでしたm(_ _)m doGet()の中でdoPost()を呼んでました。
汗汗)
つまり、methodで指定しない限り、doGetなんですね。
わかりました。

お礼日時:2001/12/21 15:52

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

QFreeBSD Apacheの環境でサーブレットやJSPは使用できますか?

 Javaについての質問ですが
FreeBSD Apacheの環境でサーブレットやJSPは使用できますか?
FreeBSD Apacheの環境でのサーブレットやJSPの実装は存在しますか、という質問です。
Javaに詳しい方、どうかよろしくお願いいたします。

Aベストアンサー

FreeBSD上でサーブレットやJSPを動かすためには、
・Tomcatなどのアプリケーションサーバ(Javaサーバ)
・JVM(Java実行環境)
が必要です。

TomcatはJavaで書かれているためプラットフォーム非依存なので○○版、というのはありません。
(配布ファイルの圧縮形式でZip版とtar.gz版とWindows向けインストーラつきのexe版がありますが、中身のTomcat本体はどれも同じのはずです。)

次にFreeBSD用のJava実行環境ですが、次のところから入手できるようです。しかしSunのJVM仕様とどのくらい互換性があるのかわかりませんので、Tomcatが正しく動作するかというと、私にはわかりません。

参考URL:http://www.freebsd.org/ja/java/

QTomcat5.5でhttp://localhost:8080/myApp/でディレクトリ一覧が表示されない。

はじめまして。javaの初心者です。先ほども
Tomcat5.5の設定についての質問をさせていただいた
のですが、質問の回答者様のご返事を待たずに改めて
質問をさせていただくのは、申し訳ございません。
現在jdk1.5.0_06とTomcat 5.5.17をインストール
していまして、Tomcatの設定で苦戦しております。
http://localhost:8080/myApp/を入力すると
「HTTPステータス 404 - /myApp/」と表示されて
ディレクトリ一覧が表示されないのに
http://localhost:8080/myApp/test.htmlや
http://localhost:8080/myApp/testでサーブレット
が表示される状態になっています。おそらく
コンテキストの設定が問題になっていると思うのです
がどのようにしたら解決するのがわかりません。
どうか教えてください。お願いします。

Aベストアンサー

%CATALINA_HOME%\conf\web.xml

に以下の記述があると思います。
そのパラメータに「listings」というのがあります。
これがtrueであれば一覧は表示されfalseであれば表示されません。
ココをもう一度確認してみてください。

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

%CATALINA_HOME%\conf\web.xml

に以下の記述があると思います。
そのパラメータに「listings」というのがあります。
これがtrueであれば一覧は表示されfalseであれば表示されません。
ココをもう一度確認してみてください。

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0<...続きを読む

QApache環境でJavaサーブレットを動かすのには?

Windows2000のマシンに「Apache for Win32(Ver1.3)」と「JDK1.3」をインストールし、
そのサーバで実際にJavaサーブレットで作成したページを表示させようとしました。
しかし、サーブレットのソース(****.java)を「javac」でコンパイルしたところ、
エラーが発生して、うまく動作されませんでした。
雑誌にあったサンプルをコンパイルしたので文法的には当たっているので、
問題は環境にあるように思えるのですが、他にインストールするものはあるのでしょうか?

Aベストアンサー

サーブレットのコンパイルには、JDKとは別に、JSDKが必要です。
また、サーブレットを実行するのも、確か、Apacheだけでは無理です。
(昔は無理でした)
で、JRun、Apache JServ等のサーブレットエンジンと呼ばれるものを
インストールする必要があります。
(Tomcatを入れるのがいいのかな?)

QHTTPステータス 404 - /servlet/Testが表示される

はじめまして。Javaの初心者です。
どうしてもわからないことがあります。それは、
最初にTest.jspを実行して送信ボタンを押すと、
サーブレットからforwardされてきた「あああああ」
が表示されるのですが、再び送信ボタンを押すと、
「HTTPステータス 404 - /servlet/Test」が表示
されます。なぜなのでしょうか?また、どのようにす
れば、404エラーを出すことがなく実行できるのが
どうか教えてください。お願いします。

*************************************************
<%-- Test.jsp --%>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<html>
<head>
<title>Test</title>
</head>
<body>

<form method="POST" action="/servlet/Test">
<input type="submit" name="submit" value="送信"/><br/>
</form>

<% if(request.getParameter("submit") != null)
{ %>
<hr/>
<%= (String)request.getAttribute("b") %>
<% } %>
</body>
</html>
*************************************************
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;

public final class Test extends HttpServlet
{
public void doPost
(
HttpServletRequest request,
HttpServletResponse response
)
throws IOException,ServletException
{
request.setAttribute("b","あああああ");

ServletContext sc = this.getServletContext();
RequestDispatcher rd
= sc.getRequestDispatcher("/Test.jsp");
rd.forward(request,response);
}
}
*************************************************

はじめまして。Javaの初心者です。
どうしてもわからないことがあります。それは、
最初にTest.jspを実行して送信ボタンを押すと、
サーブレットからforwardされてきた「あああああ」
が表示されるのですが、再び送信ボタンを押すと、
「HTTPステータス 404 - /servlet/Test」が表示
されます。なぜなのでしょうか?また、どのようにす
れば、404エラーを出すことがなく実行できるのが
どうか教えてください。お願いします。

*************************************************
<%-- Test.jsp --%>
...続きを読む

Aベストアンサー

問題ないみたいです。
当方の環境
C:\PracticeA
   ├\example\Test.jsp
   └\WEB-INF\classes\Test.class

action="/servlet/Test"
→action="/practiceA/Test"
sc.getRequestDispatcher("/Test.jsp");
→sc.getRequestDispatcher("/example/Test.jsp");

web.xml
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>

Qサーブレットforward時の実行メソッドについて

初歩的な質問で失礼します。

サーブレットAに doGet, doPost, serviceメソッドを実装しています。
サーブレットBのdoPostメソッド内にて
サーブレットAにforwardを実行する場合に、
呼出されるのはサーブレットAのどのメソッドですか?

JSPへのforwardはできたのですが、
サーブレットへのforwardができず悩んでいます。

サーブレットのAPIを読んでもいまいちわかりません。
何かメソッドに関する制約があるのでしょうか?
上の質問は全くマト外れでしょうか?

追加ですが・・・
サーブレットからforwardされたサーブレットで、
そこからさらにJSPへforwardすることはできますか?

Apache2.0.43+tomcat4.1.12+Java1.4.0_01です。

Aベストアンサー

> サーブレットBのdoPostメソッド内にて
> サーブレットAにforwardを実行する場合に、
> 呼出されるのはサーブレットAのどのメソッドですか?

doPost() のはず。実際には、forward するときの HttpServletRequest#getMethod() で取得できる文字列に従うはず。

> JSPへのforwardはできたのですが、
> サーブレットへのforwardができず悩んでいます。

forward に関して、servlet と JSP の違いはないはず(というか、JSP は自動コンパイルされる servlet だし)。
getRequestDispatcher() してるパスが間違っているのだと思います。

> サーブレットからforwardされたサーブレットで、
> そこからさらにJSPへforwardすることはできますか?

コンテナの実装次第だけど、forward() は、サブルーチン呼び出しと変わらないはずなので、
回数に制限はないはず。

Qlocalhostに:8080をつけないとStrutsは動かない?

Strutsを勉強しております。

書籍のサンプルソースを解析している状況ですが、疑問に思ったことがあります。
書籍には以下のアドレスにアクセスしてサンプルを動かせとあります。
http://localhost:8080/1-1/view/Hello.jsp
ここでlocalhostの後の8080は必須なのでしょうか?
8080を外すとjspファイルの表示だけはできるのですが、Sturtuとしての処理は動きませんでした。

Strutsを勉強して先には自分で作ったHPを公開したいと思っていますが、8080をつけなければならないとなるとカッコが悪いなぁと心配しています。
どなたかご存知の方がおりましたら教えてください。

Aベストアンサー

>ここでlocalhostの後の8080は必須なのでしょうか?

別に必須ということではないです。
あなたのサーバの設定により必須になっているだけです。

本来、URLの書式はホスト名の後に「:ポート番号」が必要です。
URL内に指定されたポート番号により、どのサービスかを特定しているのです。
URLで8080番を指定しているのは、あなたのサーバのTomcatが
8080番ポートで動くようになっているからです。


これはJSPやStrutsの知識ではなく、サーバやネットワークの知識です。
Javaだけをやっているうちならまだしも、
「自宅サーバを作って公開する」などということを、もしも考えているなら、
ポート番号の知識などは、「知っていないとカッコ悪い」くらいのものです。
No1さんもおっしゃっていたように、サーバの公開を考えているなら、
ネットワークの知識は「一般教養」くらいに考えて勉強することをお勧めします。

※「なぜ通常のURLにはポート番号が付いていないのか」、については説明してません。
ポート番号について調べればすぐ分かると思いますので、
自分で調べてみてください。

参考URL:http://ichimura.chi.its.hiroshima-cu.ac.jp/webdb/non8080.html

>ここでlocalhostの後の8080は必須なのでしょうか?

別に必須ということではないです。
あなたのサーバの設定により必須になっているだけです。

本来、URLの書式はホスト名の後に「:ポート番号」が必要です。
URL内に指定されたポート番号により、どのサービスかを特定しているのです。
URLで8080番を指定しているのは、あなたのサーバのTomcatが
8080番ポートで動くようになっているからです。


これはJSPやStrutsの知識ではなく、サーバやネットワークの知識です。
Javaだけをやっているうちなら...続きを読む

Qサーブレットを動せるレンタルサーバについて

サーブレットを動せるレンタルサーバについて

現在、ロリポップ(チカッパプラン)という月額500円程度の(PHPやMySQLが使える)レンタルサーバを借りていますが、共用サーバですのでサーブレットが動かせないです。(tomcatやJDKをインストールすること自体不可能)

そこでレンタルサーバでサーブレットを動かそうとする場合、高価な専用レンタルサーバを借り、
tomcatのインストールやJDKの設定を全部自分でやらないといけないのでしょうか?
最初から既にサーブレットが動く環境(Apache+tomcat)がデフォルトで用意されすぐに利用できるようなレンタルサーバは通常ないものでしょうか?

現在、ローカル環境を2つ構築しており、(2)のようなサーブレットが動作する環境が最初から整ったレンタルサーバがないものかと考えています。
普通はレンタルサーバを借りてサーブレットを動かそうとすれば、tomcatやらJDKやら自分で専用サーバにインストール&設定するものなんでしょうか?それ以外に手法はありますか?

ローカル環境は2つ構築していています。
(1) windows7 Xampp(Apache2.2+tomcat7連携)JDK6
(2) 自宅サーバ:centOS5.6 Apache2.2+tomcat5.5連携 JDK5 

サーブレットを動せるレンタルサーバについて

現在、ロリポップ(チカッパプラン)という月額500円程度の(PHPやMySQLが使える)レンタルサーバを借りていますが、共用サーバですのでサーブレットが動かせないです。(tomcatやJDKをインストールすること自体不可能)

そこでレンタルサーバでサーブレットを動かそうとする場合、高価な専用レンタルサーバを借り、
tomcatのインストールやJDKの設定を全部自分でやらないといけないのでしょうか?
最初から既にサーブレットが動く環境(Apache+tomcat)がデフォル...続きを読む

Aベストアンサー

最初から環境が整ってるというわけではありませんが最近は比較的安価にVPSが提供されてますが、それではダメなんでしょうか?

Qhttp://www.skuare.net/test/horizont

http://www.skuare.net/test/horizontinyscrolling.html
上記のサイト様で使用しているjavascriptを使ってデザインを考えています。

上記のサイト様は、メニューとコンテンツが同じフレーム内(階層)にありますが、
これを、メニューとコンテンツを別々のフレームに入れ(コンテンツ部分はインフレームに入れたいです。)、メニューを常に見える状態にしたいです。
(添付画像参照)

上記の状態までは、問題なくページを作れています。
しかし、色々試してはみたのですが、フレームに入れるとなかなかうまく行かず困っています。
どのように直せば良いでしょうか…

どうぞ宜しくお願い致します。

Aベストアンサー

このjavascriptを使って親からiframeコンテンツ内部をスクロール制御するよう
直すのは結構たいへんそうです。

私なら、iframeコンテンツのhtmlの中に、このjavascriptと、
スクロールナビゲーションリンクのタグを非表示で、そのまんま
設置しておいて、


親にも設置したナビゲーションリンクから、iframe内のナビゲーションリンク
をjavascriptで突っつきます。

QJava サーブレット間の値の受渡について

こんにちは

サーブレットAからサーブレットBへ値を渡して、
サーブレットAで、戻り値を取得したいと考えています。

条件としては、
・サーブレットBの改修はできない
・サーブレットBへはGet,Postで値を渡すことができ、
戻り値を数値で貰える
というものです。

サーブレットA側からサーブレットBへリダイレクトするやり方はわかったのですが、それだと処理が完全にサーブレットBに移ってしまい、戻り値に応じた処理がサーブレットA側で行えないのです。
一般的なプログラミングのように、コールして戻り値に応じて処理を分ける・・といったことは出来ないのでしょうか?

Aベストアンサー

サーブレットAからBへリダイレクトしたのでは、そのままページを移るだけですからお望みのような働きにはなりません。

どうしてもというなら、サーブレットAの中から、URLConnectionでサーブレットBに接続をし、結果を受け取って処理する、というような形になるかと思います。要するに、サーブレットAの内部から、HTTPでサーブレットBにアクセスするわけです。

QHTTPステータス 404 - /servlet/Testについて

はじめまして。Javaの初心者です。
どうしてもわからないことがあります。それは、
最初にJSPページでHTMLフォームにデータを入力して
<input type="submit"/>タグでサーブレットに送信し
て、サーブレットでHTMLフォームのデータ
を使用して処理を行わせてから再び最初のJSPページ
にリクエストを転送(forward)すると、サーブレット
での処理結果が表示されるのですが、そのあと再び
HTMLフォームにデータを入力して
<input type="submit"/>タグでサーブレットに送信す
ると、「HTTPステータス 404 -/servlet/Test」などと
表示され、サーブレットが利用可能でなくなります。
なぜなのでしょうか?どのようにしたら解決できるの
かどうか教えてください。お願いします。

Aベストアンサー

HTMLフォームからサーブレットにアクセスするには、URLを全て書くと、
http://ホスト名/アプリケーション名/サーブレット名
って感じでURLを指定しますね。(本当はポート番号とかもあるけど省略)
エラー内容で、"/servlet/Test"と出ているので、アプリケーション名の部分が指定されていないのではないでしょうか?
JSPから forward したときは、アプリケーションの内部での指定だったので、/servlet/Test でサーブレットに転送できたのだと思います。
HTMLのフォームから送信するときは、アプリケーション名も含めて、URLを
/アプリケーション名/servlet/Test
とするか、HTMLからの相対パスで指定すればいいと思います。
HTMLがアプリケーションのルートにあるのなら、
servet/Test
でアクセスできると思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング