内部ブラウザは正常に表示されるのに、ブラウザではエラーになる
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 3,196

退会済みユーザー
Eclipseで勉強中です。
Eclipseでsample.htmlを/実行/サーバーで実行/すると
内部ブラウザhttp://localhost:8080/web_b/sample.htmlで
フォーム送信画面が出て、何か打ち込んで送信すると
内部ブラウザはhttp://localhost:8080/web_b/sampleで
送信した数字とともに以下のように表示されます。
" 送信結果
これはSampleServletの表示です。
入力された数字:123
OtherServletです。
渡された値は、「123」です。
合計値:7626(-1はエラー)
これはSampleServletの表示です。
以上。
"
エクスポートでwarファイルをC:\Users\nakamura\Desktop\web_b.war
につくりTomcat のwebappsにコピーして、
次にEclipseのサーバーを止めて,programfiles/Tomcatを起動して、
ブラウザでhttp://localhost:8080/web_b/sample.html
と打ち込んでも表示されなくて、エラーになります。
どこか名前の付け方が間違っているとおもうのですが、ekuripse自体がエラーに
なって動かなるのが怖いので、どこが悪いのでしょうか。
昨日もekuripseのエラーを直すのに四苦八苦しました。明日朝からやる予定です。
よろしくお願いいたします。
//sample.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>数字を入力</title>
</head>
<body>
<h1>数字を送信</h1>
<form action="sample" method="POST">
入力:<input type="text" size=20 name="text1"> <input type=submit
value="送信">
</form>
</body>
</html>
//Servlet1
package sample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/sample")
public class Servlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
public Servlet1() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
super.doGet(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String str = request.getParameter("text1");
out.println("<html><body>");
out.println("<h1>送信結果</h1>");
out.println("<H2>これはSampleServletの表示です。</h2>");
out.println("<p>入力された数字:" + str + "</p>");
out.println("<hr>");
ServletContext con = this.getServletContext();
con.setAttribute("param1", str);
RequestDispatcher dis = con.getRequestDispatcher("/other");
dis.include(request, response);
out.println("<hr>");
out.println("<H2>これはSampleServletの表示です。</h2>");
out.println("<p>以上。</p>");
out.println("</body></html>");
}
}
//OtherServlet
package sample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/other")
public class OtherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public OtherServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
super.doGet(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
ServletContext con = this.getServletContext();
String param = (String) con.getAttribute("param1");
out.println("<h1>OtherServletです。</h1>");
out.println("<p>渡された値は、「" + param + "」です。</p>");
int res = 0;
try {
int n = Integer.parseInt(param);
for (int i = 1; i <= n; i++)
res += i;
} catch (Exception ex) {
res = -1;
}
out.println("<p>合計値:" + res + "(-1はエラー)</p>");
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
最初の質問に対してですが、webappsにweb_b.warを置いてtomcatが起動したときに、web_bというフォルダーができ、質問のファイルができるのは正しいです。
次に完成したアプリをどう配置し呼び出すかはいろいろな説明がありますが、私はこのようにしています。
c:直下にservletsampleフォルダーを作り、その中に上記でwebapps内にあるweb_bフォルダーをそのままコピーします。
次に、localhostフォルダー内に、webb.XMLファイルを作成し、
<Context path="/webb"
docBase="c:/servletsample/web_b"/>
とします。作成するとき、confフォルダー内の適当なXMLファイルを編集するとよいでしょう。
ここまで出来たら、ブラウザでhttp://localhost:8080/webb/sample.htmlと入力すると動くはずです。
これは、tomcatにwebbが呼ばれたら、webb.XMLを見に行ってアプリは"c:/servletsample/web_b"/にあると教えています。
webbはweb_bの短縮ダイヤルだと思ってください。
この方法が嫌であれば、tomcat内にアプリを配置して運用する方法は、いろいろなサイトを検索してください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
お疲れさまです。
Eclipse上で期待したように動くのであれば、
Tomcat → conf → Catalina → localhostにある
web_b.XMLの内容が、Tomcat のwebappsフォルダーを指しているか確認しましょう。
うちの環境ではEclipse上とwarに変換後も動きました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
set0gut1
2018/05/11 19:10
> ブラウザでhttp://localhost:8080/web_b/sample.html と打ち込んでも表示されなくて、エラーになります。 < この部分を詳しくお願いしますmm
退会済みユーザー
2018/05/11 19:19
ありがとうございます。ステータスレポート メッセージ /web_b/sample.html 説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.ブラウザの表示は以上です。ステータスレポート メッセージ /web_b/sample.html 説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.は0:0:0:0:0:0:0:1 - - [11/May/2018:19:15:13 +0900] "GET /web_b/sample.html HTTP/1.1" 404 1123ログ記録に関してはどこにあるかもよくわかりません。とりあえず送ります。
退会済みユーザー
2018/05/11 19:26
コメント画面が狭くなっていて,見醜くてすみません。Tomcatのlocalhost_acees_logにあるログをおくりました。エラーのログはどこにあるのでしょうか。
set0gut1
2018/05/11 19:36
warで配置したのに静的なhtmlファイルが404になるってことですね。把握できました。
set0gut1
2018/05/11 19:43
なにげに http://localhost:8080/web_b/web_b/sample.html だとアクセスできるとか(勘)
退会済みユーザー
2018/05/11 19:45
すみません。お仕事に行きます。あしたまたおねがいいたします。エラーログの取り方を勉強してから。