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

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

こんにちは

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

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

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

Aベストアンサー

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

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

Qの違い

現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。

具体的には
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/>
<script type="text/javascript">
function show() {
}
</script>

こんなソースを書いていましたが、showメソッドが認識されていませんでした。

そこで
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"></script>
とかくと、後ろのメソッドも認識されました。

ここで疑問なのは</>と</script>の違いです。
この2つは何がちがうのでしょうか?

現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。

具体的には
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/>
<script type="text/javascript">
function show() {
}
</script>

こんなソースを書いていましたが、showメソッドが認識されていませんでした。

そこで
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1...続きを読む

Aベストアンサー

https://www.google.com/search?q=HTML+%E7%A9%BA%E8%A6%81%E7%B4%A0
違いっていうか。
<hoge />って書いていいのは「何もはさまないタグ」だけ。<img><link><br>…
<script>は、確かにsrc属性を設定すれば何もはさまなくはなりますが、「はさまないタグ」ではないから「/>」で終わることはできない。<img /> を<img></img>にすることはできるが逆はできません。

試してないから分からないが、質問文の記述では最初の間違ったタグが開始タグとして認識され以降3行がスクリプトとして認識され、結果文法エラーとなっているのでは。というか、その書き方でほかの部分のソースの解釈に影響出てないんですか?

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() は、サブルーチン呼び出しと変わらないはずなので、
回数に制限はないはず。

QjspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?

・jspページにあるボタンを押すとServletに値を渡す。
・Servletで処理をする。
・処理の結果を元のjspページに表示する。

というプログラムを作りたいと考えています。
jspページ→Servletで処理をする、という所までは出来たのですが
その後元のページに戻すというところで困っています。

jspページは複数(十数ページ)あり、Servletは1つです。
a.jsp→Servlet→a.jsp
b.jsp→Servlet→b.jsp
このように、どのjspページから呼ばれても、元のjspページに
戻したいのですが、どのようにすれば実現できるでしょうか?

Aベストアンサー

doGetメソッドなら
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class サーブレット名 extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.sendRedirect(new URI(req.getHeader("referer")).getPath());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
(JDKやサーバーなどの環境、eclipse等を使用しているかなど、詳しく書いたほうがいいですよ^^!ロジック自体はもっといいものがあるかどうか検討してみてください。sendRedirectメソッドはリクエスト属性を保持しないので、必要な場合はRequestDispatcher#forwardメソッドの使用も考えられます。その場合はパスの記述が/アプリ名/ファイル名ではなく/ファイル名 になりますが(余談))

doGetメソッドなら
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class サーブレット名 extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.sendRedirect(new URI(req.getHeader("referer")).getPath());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
(JDKやサーバーなどの環境、eclipse等を使用しているかなど、詳し...続きを読む

QJavaサーブレットのライフサイクルについて

Javaサーブレットのライフサイクルについての質問です。
まだJavaサーブレットの開発に携わってから間もないので、不足な点がありましたら申し訳ございません。

サーブレットは一度アクセスするとサーブレットコンテナ上で動作を続けますが(コンテナ上で実体が常駐する)、サーブレットがデータベースと接続しているという前提での文ですが、サーブレットの中のdoPostメソッド内でtry~catch~finally文のfinallyのところでデータベースの切断(close()メソッドで)等のリソースの開放を行い、それ以降はそのサーブレットにアクセスが無くなったとしたら、サーブレットはどの位の期間でライフサイクルが終了するのでしょうか。

サーブレットではdestroyメソッドでサーブレットの消滅がされると思いますが、サーブレットへのアクセスがそれ以降無かったりしても、もう一度アクセスされたりしても、ライフサイクルを考えるとdestroyを入れた方がよいのか、という事もどうすればよいのか分からなくて・・・。

是非、サーブレットのライフサイクルに関して詳しい方がいらっしゃいましたら、ご教授宜しくお願いします。

Javaサーブレットのライフサイクルについての質問です。
まだJavaサーブレットの開発に携わってから間もないので、不足な点がありましたら申し訳ございません。

サーブレットは一度アクセスするとサーブレットコンテナ上で動作を続けますが(コンテナ上で実体が常駐する)、サーブレットがデータベースと接続しているという前提での文ですが、サーブレットの中のdoPostメソッド内でtry~catch~finally文のfinallyのところでデータベースの切断(close()メソッドで)等のリソースの開放を行い、それ以降はその...続きを読む

Aベストアンサー

一言で言えばサーブレットエンジンの設定次第、でしょうか。
各社からWebアプリケーションサーバーが出ていますが、大体どれもDBのコネクションプールやスレッドプール機能を持っています。
またこれによりサーブレット自体が直接DBと接続するのではなく、リソースの管理はWebアプリケーションサーバーが行うことになります。
不要な(=未使用)のサーブレットは設定された時間やリソースに空きが無ければ古いものから順に捨てられて(=destroy)いきます。

詳しい設定方法やデフォルト値についてはお使いのアプリケーションサーバー製品のマニュアルをご覧ください。

QServletからJSPに遷移させた後もServletに制御を戻したいんですが

Java初心者です。宜しくお願いします。
現在、ServletからJSPに対してIncludeまたはForward
した後にServlet側にて処理を継続させる方法が
ないか調べています。
Forwardは×かなというところ
まではわかったのですがIncludeで行った場合
Servlet → JSPに遷移させた後に呼び出し元の
Servletに制御を戻す事は可能でしょうか。
また、一般的な方法がありましたらご教授お願いします。

宜しくお願いします。

Aベストアンサー

なぜそうしたいか?
というのがわからないので、適切な回答になっているか分かりませんが、

サーブレット
リクエストを受け取る

(継続させたい)処理を行う

JSPを返す

となっているんですよね?(今は)

サーブレット         スレッド
リクエストを受け取る

スレッドを生成して開始させる→処理を行う
↓              ↓
JSPを返す         処理を継続して行う

とすれば、サーブレットはスレッドを起動・開始すればすぐ処理が戻ってきますので、JSPを返した後も処理が継続できるのでは?

ただし、サーバーのリソースなどを考慮して下さいね。

Qサーブレットコンテナのメモリ解放について

お世話になっております。
今回質問させていただきたいのはサーブレットコンテナ上のメモリ解放についてです。サーブレットの動作フローとしては、

(1)クライアントからHTTPリクエストが投げられる。
(2)Webサーバがリクエストを受け取り、コンテナへリクエストを委譲する。
(3)サーブレットコンテナは、リクエストとレスポンスのラッパーオブジェクトを生成し、リクエストへリクエスト情報をマッピングする。
(4)(3)で生成したリクエスト/レスポンスオブジェクトをサーブレットへ参照渡しする。
(5)サーブレットが処理を実行する
(6)レスポンスを生成し、クライアントへ返す。

という流れかと思いますが、この際に(3)で生成されるラッパーオブジェクトや、ロードされたサーブレットが解放されるのは、レスポンスを返した後なのでしょうか。それとも次のリクエストに備え、オブジェクト本体は確保されたまま、次のマッピングに備えるのでしょうか。(サーブレットの解放はコンテナが終了した際?)
はたまた、やはりJava特有のガベージコレクションが働き、メモリ解放はガベージコレクションのタイミングで行われるのでしょうか、、

よろしくお願い致します。。m(._.)m

お世話になっております。
今回質問させていただきたいのはサーブレットコンテナ上のメモリ解放についてです。サーブレットの動作フローとしては、

(1)クライアントからHTTPリクエストが投げられる。
(2)Webサーバがリクエストを受け取り、コンテナへリクエストを委譲する。
(3)サーブレットコンテナは、リクエストとレスポンスのラッパーオブジェクトを生成し、リクエストへリクエスト情報をマッピングする。
(4)(3)で生成したリクエスト/レスポンスオブジェクトをサーブレットへ参照渡しする。
(5)サー...続きを読む

Aベストアンサー

サーブレット自体のアンロードは、明示的にサーブレットをシャットダウンしたとき以外は行われません。
基本的に、サーバが生きてる限りずーっとオンメモリです。

リクエスト/レスポンスのラッパーオブジェクトは基本的には(サーブレットでブールするような仕組みで作らない限り)破棄されると思います。
オブジェクトの破棄は、Javaの仕様通りにGCが行います。

Q 内に書くことはできません」

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてしまいます。
エラーが表示されるタグは下記のようなものです。

<script type="text/javascript">
document.write('<img src="http://~/w3a/writelog.php?ref='+document.referrer+'" width="1" height="1" />');
</script> >

アクセスログは普通に取得できているので問題ないのですが、もし上記エラーを回避する方法があればご教授下さい。よろしくお願いします。

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてし...続きを読む

Aベストアンサー

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタグがエスケープされていないため、これがスクリプトの一部ではなく文書構成要素だと判断されるからです。XHTML 1.0 のスキーマは、script 要素内に img 要素が出現することを許していません。もちろん、スクリプトとしても正しく動作しません。

従って、XML のルールに従ってエスケープする必要があります。特に「<」と「&」は必ずエスケープしなければなりません。

document.write('&lt;img .... />');

ですが面倒なことに、「ニセモノの XHTML」ではこれが動作しなくなります。「ニセモノの XHTML」は、HTML との互換性のために script 要素内の「<」「&」をうまく扱ってくれるのですが、それが仇となり、上記では「&lt;」が「<」に戻りません。

ならば、コメント区間にするのはどうでしょう。XML でもコメント内なら「<」「&」が現れても大丈夫です(ただし「--」だけは駄目です)。

<script type="text/javascript"><!--
document.write('<img .... />');
//--></script>

「ニセモノの XHTML」ならこれでも構いません。しかし、「ホンモノの XHTML」では、コメントは本当に破棄されてしまい、上記では動作すらしなくなります。

そこで、XML/HTML のルールを使わず、JavaScript のルールでエスケープすることを考えます。

document.write('\u003Cimg .... />');

これなら大丈夫でしょう。XML/HTML に限らず、言語が混在する際は必ず適切なエスケープを施す必要があります。エスケープを避けたければ外部スクリプトにして下さい。


なお、ここには別の問題があります。そもそも「ホンモノの XHTML」では、document.write を使用できません。これは HTML 互換の機能だからです(HTML5 に明記されています)。

XHTML を採用するのであれば、それが「ホンモノ」でも「ニセモノ」でも大丈夫なよう、document.write に頼らないコードを作成して下さい。あるいは try...catch で括るなどして、「ニセモノ」として処理されたときのみコードが動作するよう工夫して下さい。あるいはいっそ、XHTML を止めるのも 1 つの選択でしょう。

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタ...続きを読む

Qjava JSP/サーブレット

Javaの参考書をやったのですが(参考書:やさ○いJava)、これはアプレットと聞きました。アプレットは現場では殆ど使われないと聞き、JSP/サーブレットは現場で使うと聞いたのでJSP/サーブレットをやっています。
でも、構文が少し違います。
***********************************
例えば、Javaなら表示するときには
System.out.printlnでしたが、
JSP/サーブレットでは違う構文です。
また、Javaならファイルが一つしかありませんでした。(コンパイルするとclassファイルができる)
JSP/サーブレットは、スーパークラスやサブクラスは
別のファイルになっています。
************************************
JSP/サーブレットはプログラム言語なんですか?
JSP/サーブレットの中にもJavaの構文があるんですが、先にも述べたようにJavaと違う構文も含まれています。
ちょっと戸惑っています。
しかも、JSP/サーブレットに関する参考書が本屋さんで殆ど見られないのです。
お勧めの参考書などあればいいのですが、
数が少ないためか見当たりません。
それで、とりあえづ「10日で覚○るJSP/サーブレット」という本を買ったのですが、9割がたJSPです。
1割がサーブレットです。
こうなってくると意味がわからなくなってきます。
現場ではサーブレットと聞いていたのに、そのサーブレットが1割しか載っていない。え!?どういうこと!?更にはJSPとサーブレットの書き方も少し違うような気が・・・・。
もう何が何かさっぱりわからなくなってきました。
結局何を勉強すれば良いのか?
そもそも、JSPとは?サーブレットとは?
ネットで調べはしたもののピンときません。
現場でJavaをやりたいのですが、独学方法というか、
アドバイスを宜しくお願いします。

Javaの参考書をやったのですが(参考書:やさ○いJava)、これはアプレットと聞きました。アプレットは現場では殆ど使われないと聞き、JSP/サーブレットは現場で使うと聞いたのでJSP/サーブレットをやっています。
でも、構文が少し違います。
***********************************
例えば、Javaなら表示するときには
System.out.printlnでしたが、
JSP/サーブレットでは違う構文です。
また、Javaならファイルが一つしかありませんでした。(コンパイルするとclassファイルができる)
JSP/サーブレットは、ス...続きを読む

Aベストアンサー

今、現場でJAVAをやっています。
前の方々も書いていらっしゃいますが、まずはJAVAを勉強してからJSP&サーブレットを勉強した方がいいです。
あと、JSPを単独で使用することもありますが、大体がフレームワークを使っています。各社の独自のフレームワークを構築しているところもありますが、(大手だとほとんどそう)StrutsベースかStrutsを使用してのプログラミングです。JSPをやるのであればStrutsは覚えておくと武器にはなりますね。大体JAVAが出来る人はほとんどJSP等はわかりますので。

また、最近はJAVAのアプリの開発は少ないという声を結構聞きますが、仕事があるところはありますね。
逆にWevばかりやってきて、Swingやawtが出来ないJAVAの技術者の方とか結構いらっしゃってます。JAVAを極めるのであれば、Swingやawtもしっかり覚えていた方がいいと思います。

Qstruts関連 web.xmlに複数の

struts関連 web.xmlに複数の<servlet-mapping>を記述する方法について

初歩的なことなのかもしれませんが質問させてください。
Struts1.3.5での質問なのですが、web.xmlにURLパターンを複数記述している場合に
servlet-mapping の記載位置が後の方のURLパターンが、
JSPのFormタグで生成されるパスに設定されてしまい、原因が分からず困っています。

現象としては、
例えば、web.xmlの<servlet-mapping>にそれぞれ異なる
URLパターンを[/abc/*]→[/xyz/*]の順で記述している場合、

web.xml(抜粋)----------------------------------------------
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/xyz/*</url-pattern>
</servlet-mapping>
----------------------------------------------------------

URLパターンが[/abc/*]となる以下のURLをブラウザで表示した所、
[https:/localhost/{コンテキストルート}/abc/LoginAction]

表示されたJSP内で指定しているformタグのアクションパスが
web.xmlで記載したURLパターンのパスではなく、
web.xmlで後の方に記載した別のURLパターンのパス(/xyz/)が設定されてしまいます。

・表示されるJSP内で指定しているアクションパス
<html:form action="/LoginAction">
上記で生成されるHTML
<form name="LoginForm" method="post" action="/コンテキスト名/xyz/LoginAction">
     
web.xmlでURLパターンを[/xyz/*]→[/abc/*]の順で記述した場合は、
正しくURLパターンで記述したパスが設定されます。

<form name="LoginForm" method="post" action="/コンテキスト名/abc/LoginAction">

ただし、この場合はURLパターンが[/xyz/*]のURLを表示した場合に
<form ~ action="/{コンテキストルート}/abc/LoginAction">となってしまいます。

どなたかこうした現象について回避策をご存知の方はいらっしゃらないでしょうか?

struts関連 web.xmlに複数の<servlet-mapping>を記述する方法について

初歩的なことなのかもしれませんが質問させてください。
Struts1.3.5での質問なのですが、web.xmlにURLパターンを複数記述している場合に
servlet-mapping の記載位置が後の方のURLパターンが、
JSPのFormタグで生成されるパスに設定されてしまい、原因が分からず困っています。

現象としては、
例えば、web.xmlの<servlet-mapping>にそれぞれ異なる
URLパターンを[/abc/*]→[/xyz/*]の順で記述している場合、

web.xml(抜粋)---------------...
続きを読む

Aベストアンサー

<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>servlet.TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>init</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>reference</servlet-name>
<url-pattern>/xyz/*</url-pattern>
</servlet-mapping>


このように、サーブレット名を切り分けてみてはどうでしょうか?
web.xml内の他の要素からも参照されるため、
サーブレット名は他と重複しない名前をつけないとだめです。

<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>servlet.TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>init</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>reference</servlet-name>
<url-pattern>/xyz/*</url-pattern>
</servlet-mapping>


...続きを読む


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

人気Q&Aランキング