アプリ版:「スタンプのみでお礼する」機能のリリースについて

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』はコメントを外し有効にしてます。

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

URLは



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

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

あと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

返答いただいた内容からですと、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

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