質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

2518閲覧

内部ブラウザは正常に表示されるのに、ブラウザではエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2018/05/11 10:06

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>"); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

set0gut1

2018/05/11 10:10

> ブラウザでhttp://localhost:8080/web_b/sample.html と打ち込んでも表示されなくて、エラーになります。 < この部分を詳しくお願いしますmm
退会済みユーザー

退会済みユーザー

2018/05/11 10: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 10:26

コメント画面が狭くなっていて,見醜くてすみません。Tomcatのlocalhost_acees_logにあるログをおくりました。エラーのログはどこにあるのでしょうか。
set0gut1

2018/05/11 10:36

warで配置したのに静的なhtmlファイルが404になるってことですね。把握できました。
退会済みユーザー

退会済みユーザー

2018/05/11 10:45

すみません。お仕事に行きます。あしたまたおねがいいたします。エラーログの取り方を勉強してから。
guest

回答2

0

ベストアンサー

最初の質問に対してですが、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内にアプリを配置して運用する方法は、いろいろなサイトを検索してください。

投稿2018/05/12 08:35

senior_golfer

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/12 11:41

ありがとうございます。きょうもなかなかうまくいかなくて、教えてもらった方法を試しているうちに、きのうのsenior_golferさんのコメントをよく読み直して、上手くいったとのことでしたので、ファイル名を見たらsample1となっていました。手順をメモしてその通りにやったつもりでしたが、手順は合っていました。うっかりミスでいつもご迷惑おかけしています。いっこうにうまくいかなくて、eclipseを入れ替えたり、Tomcatを入れ替えたり、ファイル名をいじったりしているうちに間違ったみたいです。 これで何とかなるとおもいます。頑張ります。参考書の6章の10日掛かっています。残り2例です。1度うまくいったところですが、また分からなかった時はお願いいたします。本当にありがとうございました。
guest

0

お疲れさまです。

Eclipse上で期待したように動くのであれば、
Tomcat → conf → Catalina → localhostにある
web_b.XMLの内容が、Tomcat のwebappsフォルダーを指しているか確認しましょう。

うちの環境ではEclipse上とwarに変換後も動きました。

投稿2018/05/11 14:08

senior_golfer

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/12 03:01

ありがとうございます。 いまみたら、localhostにはなにもありません。 C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.0.1\webapps\web_bに META-INF,WEB-INFのフォルダとファイルsample.htmlがあります。 webappsフォルダにはdocs、manager,ROOTフォルダ,web_bと、ファイルweb_b.warがあります。 参考書の説明通りにしているんですが、間違いでしたら教えてください。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2018/05/12 03:25

file:///C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%209.0_Tomcat9.0.1/webapps/web_b/sample1.htmlだと送信画面がでるのですが、 あとえらーで/C:/Program Files/Apache Software Foundation/Tomcat 9.0_Tomcat9.0.1/webapps/web_b/sample にはファイルが見つかりませんでした。と出ています。 これは公開アドレスではないですよね。 急いで読み進んできたので、何をやっているのかよくわからないのですが、 説明していただけませんか。これではわたしのパソコンをいじられてしまいませんか。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問