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と関連する良く見られている質問

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<...続きを読む

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>

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だけをやっているうちなら...続きを読む

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

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

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

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

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

Aベストアンサー

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

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


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

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ランキング

おすすめ情報