tomcatに関してですが、現在サーブレットからjspを呼び出すようなことをしたいと思い、web.xmlを以下のように設定し、”http:localhost:8080/servlet/Login”としても『HTTP Status 404 - 』が返却されます。jspからサーブレットを呼び出すことはできるのですが・・・(この場合、jspファイルをWEB-INFの直下にディレクトリを作成するとやはりアクセスができませんでした。WEB-INFと同レベルに置けばアクセスは可能でした。)。
どなたかわかる方がいれば教えて下さい!
よろしくお願いします。


---------------
環境
---------------
Windows2000Server
eclipse ver2.1.1
tomcat ver4.1

---------------
ディレクトリ構成
---------------
WEB-INF
Lclasses
| LLogin_serv.java
Ljsp
LLogin.jsp


---------------
web.xml
---------------
<?xml version="1.0" encoding="shift_jis"?>
<!DOCTYPE web-app
PUBLIC "-//SUN Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>serv.Login_serv</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Login</servlet>
<url-pattern>Login</url-pattern>
</servlet-mapping>
</web-app>

補足:tomcat-confにあるweb.xmlの『invoker』はコメントを外し有効にしてます。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

上記の書き方を使うなら、invokerは関係ないです。



<url-pattern>/Login</url-pattern>
と直して、
http:localhost:8080/webapps/Login
でアクセスしてください。
webappsの部分は、Webアプリケーション名が入ると思います(ROOTコンテキストに指定してあれば不要です)が、web.xmlではなくserver.xmlの設定によって決まるので、上記だけでは分かりません。
server.xmlの
<Context path="hoge" docBase="hoge" debug="0" reloadable="true" />
のあたりをご確認ください。

invokerを使うなら、
http:localhost:8080/webapps/servlet/serv.Login_serv
ですね。
こちらも、webappsの部分はご確認ください。

この回答への補足

回答ありがとうございました。
web.xmlの設定
<url-pattern>/Login</url-pattern>
は気づいて修正しましたが、一向に変化がありません。
ちなみに、server.xmlの設定は、
<Context path="/webinfo" reloadable="true" docBase="C:\app\eclipse\workspace\webinfo" workDir="C:\app\eclipse\workspace\webinfo\work\org\apache\jsp" />
のように設定されており、これはEclipseが自動で行っていました。
やはりまだ何か設定で足りない部分があるのでしょうか?

補足日時:2003/10/29 17:59
    • good
    • 0

返答いただいた内容からですと、serv.Login_servには、以下のどちからでアクセス可能かと思います。



http://localhost:8080/webinfo/servlet/serv.Login …
http://localhost:8080/webinfo/Login

もしダメなら、
serv.Login_serv
というクラス名が正しいことを確認してください。

一行目に、
package serv;
という宣言があり、コンパイル後のクラスファイルが、
C:\app\eclipse\workspace\webinfo\WEB-INF\classes\serv\Login_serv.class
にありますでしょうか?
classesディレクトリ直下ではなく、servディレクトリ以下に置かないといけません。


以下、情報がちょっと分からなくなってきているのですが、

> jspファイルをWEB-INFの直下にディレクトリを作成するとやはりアクセスができませんでした。

WEB-INFディレクトリは、直接外部からのアクセスを許可しないディレクトリです。
このディレクトリにjspファイルやhtmlを置いても使えません。

> /System/servlet/html/login.html
これは上記リクエストの結果のエラーでしょうか?
上記ともかぶりますが、invokerを使っている以上、htmlファイルを/servletというURIで呼び出すのは間違いです。
servlet-mappingなどを使うのは、直接呼び出せないWEB-INF/classes以下に置いたclassファイルを実行させるためで、jspやhtmlを呼び出すためには使いません。
ドキュメントルート(C:\app\eclipse\workspace\webinfo)直下やWEB-INF以外のディレクトリを作って直接スアクセスしてください。

> http://localhost:8080/System/servlet/Login
WebアプリケーションはSystemじゃなくて、webinfoなんですよね?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
つまりJSPファイルやHTMLはWEB-INF直下に置くのではなく、WEB-INF同レベルのディレクトリを作成しファイルを配置し、アクセスすると言うことですね。
(サーブレットからJSP等を呼び出す場合も同じと言うことでしょうか?)
確かに、WEB-INF同レベルのディレクトリを作成しそこにJSPやHTMLを配置すれば、アクセスは可能でした。

WEB-INF同レベルのディレクトリに配置した場合のセキュリティ面が気になった為、WEB-INF直下に置いてました。

> http://localhost:8080/System/servlet/Login
> WebアプリケーションはSystemじゃなくて、webinfoなんですよね?
すいません。誤記でした。

お礼日時:2003/10/30 14:16

あとJSPは単体でも動くはずですので


想定されるURLを打ち込んでみてください。

たぶんsendRedirect(パス)のパスがおかしいと思います。
これはドキュメントルートからのパスではなく
コンテキストルートからのパスが入ったと思います。

サーブレットが呼び出せないのでしょうか?
それともその後のJSPが呼び出せないのでしょか?
404エラーが出たときのアドレス欄にはなんと表示されていますか?

この回答への補足

URLは
http://localhost:8080/System/servlet/Login
としてあり大丈夫だと思います。
しかし404エラー表示後のURLも変化はありませんでした。
エラーの内容からしてディレクトリが認識されていないと思うのですが・・・。
エラー内容
The requested resource (/System/servlet/html/login.html) is not available

>たぶんsendRedirect(パス)のパスがおかしいと思います。
>これはドキュメントルートからのパスではなくコンテキストルートからのパスが入ったと思います。
すいません。上記のパスを確認するにはいったいどうしたら良いのでしょうか?

補足日時:2003/10/30 10:53
    • good
    • 0

URLは



http://localhost.....
です。

スラッシュがぬけてませんか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

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

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

QTomcatは起動しますが初期index画面が表示できません

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection refused
--------------------
Description: Connection refused
と表示されてしまいます。

下記に参考になるかわかりませんが、各種起動状態を記載いたします。アドバイスよろしくお願い申し上げます。

◆コマンドプロンプトで
>ping localhostと入力すると、
-----
Pinging yamamoto [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----

と表示されます。また、
>telnet localhost 8080の場合は
-----
接続中: localhost...ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗し
ました
-----
と表示されます。

お手数ですが、よろしくお願い申し上げます。

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection re...続きを読む

Aベストアンサー

>Tomcatは起動しますが
とのことですが、Tomcatが起動していないと思います。

pingが通るのはTomcatと無関係で、PCが立ち上がっていれば帰ってくると思います。

telnet localhost 8080
で接続できないとのことなので、Tomcatが起動できていないのではないでしょうか?

QTomcatでのHTMLの表示

Tomcatで、HTMLファイルをwebappsディレクトリに作って、http://localhost8080/webapps/ファイル名.htmlというアドレスで表示しようとしたんですけど、HTTP404とエラー表示がされます。
http://localhost:8080にはアクセスできるんで、インストールは成功してると思うんですけど、何が原因なのでしょうか?

Aベストアンサー

#2です。。
記載しましたが、まったく間違った情報でした。すみません。
webapps/ROOTがデフォルトルートなので、そこに入れないと、http://localhost:8080/ファイル名.htmlには出来なかったですね。。

http://localhost8080/webapps/ファイル名.html
とするためには、TomcatのServer.xmlファイルに
<Context path="/webapps" workDir="フルパスディレクトリ" />
とか記載しないといけないかもしれません。

そのディレクトリに、ファイル名.htmlを配置になります。 間違った情報を掲載してしまいまして申し訳有りません。

Q1文字って1バイトだったっけ?

タイトルの通りなんですが
私の記憶では1文字1バイトで漢字が2バイトだったような・・・。
アルファベットは?数字は?わかんないので教えてください。
それと、1バイト=8ビットですよね?
ちょっと興味があるので暇のある方がおられましたら詳しく教えてほしいです。

よろしくおねがいいたします。

Aベストアンサー

全角文字(英語・漢字・数字問わず):2バイト
半角文字:1バイト
では無いでしょうか?

>1バイト=8ビット
その通りです

http://www.pc-view.net/Help/manual/0082.html
などもありますので参考までに

参考URL:http://www.pc-view.net/Help/manual/0082.html

QTomcatのクラスパス

OSの環境変数で指定したclasspathと
Tomcatのクラスパスは違うようですが、
Tomcatの場合web.xmlに記述するのでしょうか?

1つのjavaクラスを、サーブレットから、
Runtime.getRuntime().exec()
で実行したい場合、Tomcatのweb.xmlなどにクラスパスを指定するのでなく、-classpathを指定した方が良いのでしょうか?

Aベストアンサー

>10分ぐらいかかるbatch処理を動かしたいのですが、
>ブラウザを砂時計にしたくない為、非同期にバックグラウンドでbatch処理を動かそうと思いRuntime.exec()を使用しようと思ったのですが、

Threadを使って別スレッドで処理をするのが普通だと思います。
Runtime.exec()を使うのも一つの手ではありますが、
リクエストの度にプロセスが生成されてしまうので、
サーバに負荷がかかります。
ServletのdoGetやdoPostなどで、スレッドを生成して、生成されたThreadの中で、時間のかかる処理を
行なえば、良いと思います。

QJSPからクラス(サーブレット)を呼び出す方法

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動きました。

【フォルダ構成 (Tomcat 6.0\webappsの直下) 】

javaroad
---------- index.jsp
---------- WEB-INF
-------------------- web.xml
-------------------- classes
---------------------------- HelloServlet.class

【index.jsp】
<%@ page contentType="text/html;charset=Shift_JIS" %>
<jsp:useBean id="GSBean" class="Testaaa.GetSetBean" />
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<form method="post" action="/Hello">
<input type="text" name="name1" maxlength="10" style="ime-mode: disabled">
<jsp:setProperty name="GSBean" property="userID" param="name1" />
<br><br>
<input type="submit" value="submit">
</form>
</body>
</html>

【web.xml】
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>

</web-app>

【HelloServlet.class】
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println(new java.util.Date());
out.println("</BODY>");
out.println("</HTML>");
}

以下試して駄目だったパスの一覧です。
<form method="post" action="Hello">
<form method="post" action="/Hello">
<form method="post" action="../servlet/Hello">
<form method="post" action="HelloServlet">
<form method="post" action="/HelloServlet">
<form method="post" action="../servlet/HelloServlet">
<form method="post" action="WEB-INF\classes/HelloServlet">
<form method="post" action="http://localhost:8080/javaroad/Hello">

JSPからクラス(サーブレット)を呼び出そうとしてるんですが
以下のエラーになってしまいます。
The requested resource (/Hello) is not available.

ネットで調べてみたら、パスの指定の仕方が悪いんじゃないかって感じがするので
色々パスを弄ってみましたが、ずっとavailableになります。
わかる方いらっしゃったらアドバイスよろしくお願いします。

※usebeanはこのエラーの前の段階で、getとset両方動くのを確認しています。
※「http://localhost:8080/javaroad/Hello」を直接WEBブラウザのURLに入れたら動...続きを読む

Aベストアンサー

<form method="get" action="Hello">

ではないでしょうか。

QdoGetとdoPostの違い

それぞれブラウザからのリクエストの種類に対応する
メソッドがdoGet,doPost。
doGetはブラウザからGETでそのサーブレットに
リクエストがあった時に、処理が始まるメソッド、
doPostは同じようにPOSTを受け取った時に動き出す

・・・・・ということなのですが、
doGetもdoPostも、中身のコーディングの仕方としては
同様でいいのでしょうか?
いま、doGetでリクエストに対応する処理をうけつけて
いるのですが、255バイトまでなのでdoPostのほうが
いいということがかかれていました。

これは、ブラウザ:Servletのメソッドで対応してれば
いいだけで、結局は送信量の違いだけですか?
そのへんがよくわかってないので教えてください。

ちなみに、doGetでやってる処理は、

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

//Bean(workBean)のインスタンス作成
wk = new work_Bean();
//Bean処理実行
wk.Work();





//BeanをJSPに渡すためにHttpServletRequestオブジェクトにセット
request.setAttribute("wk",wk) ;

//ViewであるJSPを呼び出す
RequestDispatcher rDispatcher =
request.getRequestDispatcher("/kanri_JSP.jsp");
rDispatcher.forward(request,response);

こんなかんじでしてます。
あとは、ネットで、人のサンプルとかみると
doGetメソッドに処理をかいており、doPostでは
doGet(request,response);として
doGetをよんでたりするんですが、
これは、PostでもGetと同様の処理ができると
いうことですか?
基本的な質問過ぎるかとおもいますがおしえてください。

それぞれブラウザからのリクエストの種類に対応する
メソッドがdoGet,doPost。
doGetはブラウザからGETでそのサーブレットに
リクエストがあった時に、処理が始まるメソッド、
doPostは同じようにPOSTを受け取った時に動き出す

・・・・・ということなのですが、
doGetもdoPostも、中身のコーディングの仕方としては
同様でいいのでしょうか?
いま、doGetでリクエストに対応する処理をうけつけて
いるのですが、255バイトまでなのでdoPostのほうが
いいということがかかれていました。

これは、ブ...続きを読む

Aベストアンサー

GET と POST では、パラメータをプログラムに渡す仕組みが全く違います。
仕組みが違うので渡せるパラメータの大きさが違う、等の違いが出てきます。

ですが、Servlet では、その違いを request オブジェクトが全部隠してくれて
いるので、気にしなくて良いです。つまり、同じことができて、呼出され方が
違う、と。

普通は、html や JSP の方も、Servlet を意識して書くでしょうから、
どちらかだけの実装で良いのですが、汎用的(呼ぶ人を特定しない)な Servlet
を書こうと思ったら、両方を実装しておく、と理解しておけば良いです。


ちなみに、GET で渡せるパラメータの大きさは 255 バイトと決っているわけでは
ないし、POST で渡せるパラメータの大きさに制限が無い、というわけでもあり
ません。

GET の制限は、どちらかというとブラウザ側の実装によって決ってくることで、
POST に制限があるとしたらサーバ側(例えば、Servlet コンテナ)の実装に
よってきます。

Q読込ファイルのパスについて

 ファイルからテキストファイルを読み込んで、フォームから入力されたデータと照合し、ファイルにあればログインするというようなwebアプリを作ろうとしています。

しかし、テキストファイルが読み込まれてないようで、正しいパスワードを入力してもログインできません。読み込むファイルへのパス指定は絶対パスなのでしょうか、呼び出し元からの相対パスを指定するのでしょうか?

また、テキストファイルを置くディレクトリは決まっているのでしょうか?(「WEB-INFより上の階層に置く」など)

ちなみにサーバ環境はLinux+tomcat3.2.1+apache

---------------------------------------------------------------

public class LoginDataBeans {

///////// UserDataクラス /////////

private class UserData{
public String user_id;
public String password;
}

///////// メンバ変数 /////////

ArrayList userList;
private static final String logFilename = "/tomcat/logindata";←ここのパスは「絶対パス」?、それともこのファイルからの「相対パス」?

///////// コンストラクタ /////////

public LoginDataBeans(){
String item;
userList = new ArrayList();
try{
BufferedReader in = new BufferedReader(new FileReader(logFilename));
while((item = (String)in.readLine()) != null){
UserData udat = new UserData();
StringTokenizer st = new StringTokenizer(item);
udat.user_id = st.nextToken();
udat.password = st.nextToken();
userList.add(udat);
}
in.close();
}
catch(IOException e){
e.printStackTrace();
}
}

 ファイルからテキストファイルを読み込んで、フォームから入力されたデータと照合し、ファイルにあればログインするというようなwebアプリを作ろうとしています。

しかし、テキストファイルが読み込まれてないようで、正しいパスワードを入力してもログインできません。読み込むファイルへのパス指定は絶対パスなのでしょうか、呼び出し元からの相対パスを指定するのでしょうか?

また、テキストファイルを置くディレクトリは決まっているのでしょうか?(「WEB-INFより上の階層に置く」など)

ちなみ...続きを読む

Aベストアンサー

ファイルのパス名を絶対パスで指定するか、相対パスで指定するかというのはどちらでも問題なく出来るはずです。

絶対パスであれば、ファイルが存在する場合には問題なくアクセスできるはずですが、相対パスで指定する場合には環境に応じてファイルをどこに置くかが変わってきます。

サーバの環境がtomcat+apacheということで、tomcatが単独ではなくapcheにアドオンで動いているようなので、この場合相対パスのルート位置は、apache.confで指定したサーブレットのルート位置になっていませんか?

---- apache.conf ----
Alias serv_dir "/xxx/yyy"
----------------------
なら、相対パスのルートは、/xxx/yyy の位置


個人的には、ファイルにアクセスするようなサーブレットを作成する場合、web.xmlファイルに<init-param>を記述して、そこに絶対パスを記述し、サーブレット側では、getInitparameter()メソッドを使ってルート位置を取得して作業するようにしています。

-- web.xml --
   :
<init-param>
<param-name>DataDir</param-name>
<param-value>/servlet/data/</param-value>
</init-param>
   :
--------------

-- Servlet ----
public void init(ServletConfig config) {
   :
 String DataDir = config.getInitParameter("DataDir");
 String DataFile = DataDir + "datafile";
   :
}
---------------

こうしておけば、ディレクトリ構造が変わった場合にも、web.xmlの記述を修正するだけで動作するので。。。

どうでしょうか?

ファイルのパス名を絶対パスで指定するか、相対パスで指定するかというのはどちらでも問題なく出来るはずです。

絶対パスであれば、ファイルが存在する場合には問題なくアクセスできるはずですが、相対パスで指定する場合には環境に応じてファイルをどこに置くかが変わってきます。

サーバの環境がtomcat+apacheということで、tomcatが単独ではなくapcheにアドオンで動いているようなので、この場合相対パスのルート位置は、apache.confで指定したサーブレットのルート位置になっていませんか?

---- apa...続きを読む

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が動かない

下記のようなサーブレットを作成し、web.xmlも記述して動かしてみようとしたところ下記のようなエラーが発生して動きません。(Win2000、Tomcat4.1)

~~~HelloWorldServlet.java
package test_servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

res.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = res.getWriter();

out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
for (int i = 1; i <= 10; i++) {
out.println("Hello World" + Integer.toString(i));
}
out.println("</body>");
out.println("</html>");
}
}

~~~web.xml
<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
<servlet-name>HellowWorld</servlet-name>
<servlet-class>test_servlet.HelloWorldServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>HellowWorld</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
</web-app>

~~~http://localhost:8080/hello接続時のスタック
javax.servlet.ServletException: クラス test_servlet.HelloWorldServlet はサーブレットではありません

下記のようなサーブレットを作成し、web.xmlも記述して動かしてみようとしたところ下記のようなエラーが発生して動きません。(Win2000、Tomcat4.1)

~~~HelloWorldServlet.java
package test_servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet {

public void doGet(HttpServletRequest req, Http...続きを読む

Aベストアンサー

>public class HelloWorldServlet {

 サーブレットクラスは javax.servlet.http.HttpServlet の派生クラスとして定義する必要があります。

参考URL:http://www.atmarkit.co.jp/fjava/rensai/was05/was05_1.html


人気Q&Aランキング