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

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

ただいまの
回答率

88.93%

eclipseでサーブレットとweb.xmlを作成したのですが、localhost:8080/[プロジェクト名]/[サーブレット名]でerror

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 392

usapaaan

score 5

前提・実現したいこと

Javaでアプリ開発の勉強をしています。
現在「サーブレットをeclipseで作成」+「サーブレットを作成した動的プロジェクトにweb.xmlを作成」しました。

localhostでサーブレットを継承したclassファイルを表示させたいのです。

発生している問題・エラーメッセージ

localhost:8080/[プロジェクト名]/[サーブレット名] 

URLをこのように指定するとerror404となり、説明欄には「オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。」と出てきてしまいます。

該当のソースコード

ファイル場所…Sample_5_02_1 / srs / work / SelfIntroduction

package work;

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

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

public class SelfIntroduction extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public SelfIntroduction() {
        super();
    }

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

        PrintWriter out = response.getWriter();

            out.println("<html>");
            out.println("<head>");
            out.println("<title>自己紹介</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>自己紹介ページ</h1>");
            out.println("<h2>MOCO</h2>");
            out.println("<p>誕生</p>");
            out.println("</body>");
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }
}


********************************************************************************

ついでにweb.xmlのファイル場所とコードも載せておきます。

Sample_5_02_1 / WebContent / WEBINF / web.xml


*********************************************************************************

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Sample_5_02_1</display-name>
<servlet>
    <servlet-name>SelfIntroduction</servlet-name>
    <servlet-class>work.SelfIntroduction</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SelfIntroduction</servlet-name>
    <url-pattern>SelfIntroduction</url-pattern>
</servlet-mapping>
</web-app>

試したこと

localhost:8080までのURLの指定をすると、Tomcatが表示されます。
今回お見せしているファイルコードにerrorっぽい赤線にょろにょろは出ていません。
eclipse、Java、すべて削除して再インストール、JDKとJREも再設定しましたが変わりませんでした。

補足情報(FW/ツールのバージョンなど)

eclipse   2019/12
Java      versionは1.8.0_241
Tomcat    8.5.53

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • shinami

    2020/03/19 10:08

    > eclipse、Java、すべて削除して再インストール、JDKとJREも再設定しましたが変わりませんでした。
    > ちなみに新しい問題なのですが、Tomcatが全く接続できなくなってしまいました。
    インストールや設定はどうやって行ったのでしょうか?
    どのようにEclipseなどを導入しているのか分かりませんがEclipse Pleiades の Full Editionは使わないのですか?これは、これら全部入りの設定もされているのでEclipseで行うことと言えばServerプロジェクトの作成を行いそのServerにその動的Webプロジェクトを追加して起動すれば良いだけだったはずです。

    個別に入れるにしてもEclipseもJDKもTomcatも.zip版で環境変数のPATHも設定しないやり方で私はやります。インストーラーではどこに何を入れているのか分からなくなりますのでアンインストールも削除したようでも何か残ってる可能性もありますし。まぁ個人的な意見ですが。

    キャンセル

  • usapaaan

    2020/03/19 22:12

    ご回答いただき、ありがとうございます。
    まだ知識が浅いのでFull Editionがどんなものなのかわからないのです(*_*;

    ほかの方法もあることはなんとなくは知っていたんですが、他の方法をわかりやすく詳しく説明できる材料がないと手に付けるのも怖くてできませんでした。。

    今回shinami様がおっしゃる通りの方法もあるのかもしれませんが、例えばshinami様にその方法を詳しく説明させていただくというのは、あまりにも時間を奪ってしまうことになりかねないので、できませんでした((+_+))

    ですが、なんとか今回のこの問題は解決しました!
    shinami様がおっしゃったことも頭に入れてまた何か問題が起きた時、解決の手がかりとさせていただきます^^

    キャンセル

回答 3

check解決した方法

0

今回、ゼロから環境構築できる参考動画を見ていたら、その環境からはしっかりと表示できていたので、大事な部分以外はコピペをすることで、とりあえずは一旦問題解決に至りました!

まだ文字化けするなどの問題は残っているのですが、その問題は別物と扱ってこれから解決していこうと思っています。※レスポンスの文字設定;charset=UTF-8を付け加えることで解決しました!

そしてどうしてこのように表記すると解決するのか、まだわかっていません。

皆様の回答は、私がまだ知らないことだらけなのでとても勉強になります!
問題解決のために回答いただいた皆様、お力を下さりありがとうございました!

********************************************************************************
classファイル
********************************************************************************

package work;

//ここから
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SelfIntroduction extends HttpServlet {
        private static final long serialVersionUID = 1L;

        public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
        {
        response.setContentType("text/html;charset=UTF-8");  //※レスポンス文字設定
//ここまでの一式を変更

        PrintWriter out = response.getWriter();        

            out.println("<html>");
            out.println("<head>");
            out.println("<title>自己紹介</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>自己紹介ページ</h1>");
            out.println("<h2>MOCO</h2>");
            out.println("<p>誕生</p>");
            out.println("</body>");
            out.println("</html>");   // 一応</html>が無かったので追記
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }
}


********************************************************************************
web.xml
********************************************************************************

//ここから
<?xml version="1.0" encoding="UTF-8"?>
<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>SelfIntroduction</servlet-name>
    <servlet-class>work.SelfIntroduction</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SelfIntroduction</servlet-name>
    <url-pattern>/SelfIntroduction</url-pattern>   
            //  あと<url-pattern>タグ内のSelfIntroductionの前に/が無かったので追記
</servlet-mapping>
</web-app>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

URLと呼び出すサーブレットのマッピングができていないので、@WebServletアノテーションでURLとサーブレットを紐付ければ行けるかと思います。

@WebServlet("/sample")
public class SelfIntroduction extends HttpServlet {


localhost:8080/[アプリケーション名]/[WebServletの文字列] 
localhost:8080/Sample_5_02_1/sample

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/03/19 09:46

    すみません、昨日なるほど!と思いまして、その方法を試してみたのですが

    変化はなく、、、新しい別の問題が山積みになって出てきてしまいました(-。-;

    なので復旧するまでしばらく、試すことがまだ出来ません。

    ちなみに新しい問題なのですが、Tomcatが全く接続できなくなってしまいました。

    ということなので、もう少し勉強してからまた戻ってこようと思います!(T . T)

    キャンセル

0

この回答は無駄になったので、雑談にします。削除方法調べるのもめんどいので。。。

今回のこの質問は約1週間ほど悩みました。わりと1日中調べたり考えたりしてる日が3日くらいあったので…まぁでもトータルで24時間くらい悩んだのかもしれません。

勉強している参考動画とは別の参考動画を購入し、成功しているサンプルコードを入手し、なんとか解決に至ったので、やはり成功しているものの真似をするのが一番でしたね!

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • Javaに関する質問
  • eclipseでサーブレットとweb.xmlを作成したのですが、localhost:8080/[プロジェクト名]/[サーブレット名]でerror