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

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

ただいまの
回答率

88.32%

HTTP Status 404の解決方法が分かりません。

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 533

Rivermouth

score 13

https://www.shookuro.com/entry/2020/03/22/122906

上記のWebサイトを参考にし、Spring MVCを使用して、簡単なWebアプリケーションの作成をしております。

しかし、Webサイトと同じように入力しても期待通りの結果が得られず、色々と調べてみましたが、解決方法が分かりませんので、こちらに質問させていただきます。

SampleController.java

package org.hkawa.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SampleController {
    @RequestMapping("/")
    public String sample() {
        return "sample";
    }
}

Spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- Spring MVC の機能を使うことを宣言。 -->
    <!-- この宣言をすることで、 @Component などのアノテーションが使えるようになる。 -->
    <mvc:annotation-driven />

    <!-- Bean となるクラスファイルが格納されているパッケージを宣言。 -->
    <!-- Spring はこのパッケージ配下を自動でスキャンし、Bean として登録する。 -->
    <context:component-scan base-package="org.khkawa " />

    <!-- JSP を使用するための宣言 -->
    <mvc:view-resolvers>
        <!-- コントローラが JSP 名(拡張子なし)を返した際、Spring が 「.jsp」を付与し「/WEB-INF/views/」配下から探すように設定。 -->
        <mvc:jsp prefix="/WEB-INF/views/" suffix=".jsp"/>
    </mvc:view-resolvers>

</beans>

sample.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>山崎サンプル</title>
</head>
<body>
    Hello yama World!
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"                  
         version="4.0">

  <!-- ビジネスロジックのBean 定義ファイル -->       
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath:/config/spring.xml
    </param-value>
  </context-param>

  <!-- リスナーを登録 -->
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>

  <!-- 文字のエンコーディングを指定し  -->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>
      org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <!-- 上記フィルターをすべての URL で適用する。 -->
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Spring MVC アプリの場合、だいたいは唯一のサーブレットを登録する。 -->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>
      org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!-- Spring MVC の Bean 定義を登録 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
        classpath:/config/spring-mvc.xml
      </param-value>
    </init-param>
  </servlet>

  <!-- すべての URL リクエストについて、上記で登録したサーブレットで処理する。 -->
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

エラー内容

イメージ説明

試したこと

  • webappsフォルダをDeployment Assembly配下に置く
  • Tomcat9には認識させてあります。

コンテキストルート

イメージ説明

アクセスURL

http://localhost:8080/sample

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • Rivermouth

    2020/08/04 17:18

    アクセスURLはhttp://localhost:8080/sampleです。

    このWebサイトで紹介されているやり方ではコンテキストパスは設定していないように思いますが、コンテキストパスというのは必ず設定しなければならないものなのでしょうか?

    キャンセル

  • m.ts10806

    2020/08/04 17:20

    >コンテキストパスというのは必ず設定しなければならないものなのでしょうか?

    いいえ。なければルート ( / )にアクセスしに行くだけです。

    キャンセル

  • Rivermouth

    2020/08/04 17:24

    コンテキストルートを質問文に載せましたが、コンテキストパスとコンテキストルートは別物なのでしょうか?

    キャンセル

回答 2

0

アクセスURLはhttp://localhost:8080/sampleです。

コンテキストパスを特に指定していない、且つ、/sampleにアクセス
ということは、
RequestMapping/sampleを設定したときにhttp://localhost:8080/sampleへのアクセスが有効になるはずです。
今のところ、/に対するマッピングしかコントローラに書かれていません。

よって対応はいずれかです。

  1. 現状のままhttp://localhost:8080/でアクセスする
  2. コンテキストパスで/sampleを設定する
  3. @RequestMapping("/sample")に変更してhttp://localhost:8080/sampleでアクセスする

どれにするかは自身で決めてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/08/04 17:44

    RequestMapping("/sample")
    と設定し、http://localhost:8080/sampleと実行してみましたが、
    HTTP Status 404-Not Found
    となってしまいます。

    キャンセル

  • 2020/08/04 18:19

    アドバイス頂いた全ての方法を試しましたが、結果は404でした。

    キャンセル

  • 2020/08/05 10:40

    もう解決方法は見つからない感じでしょうか?

    キャンセル

  • 2020/08/05 10:55

    いっそのこと、最初から作り直すとかですかね。
    404ということはサーバーは立ち上がっていて、リクエストの送信先と受け先の整合性があってないという原因は変わりません。

    キャンセル

0

<context:component-scan base-package="org.khkawa " />

パッケージ名が違うようです。また、base-packageの値の最後に、半角スペースが入っています。

余計な半角スペースを消し、かつ、Controllerのパッケージ名が
package org.hkawa.controller;

とあるので、「org.khkawa」か「org.hkawa」どちらかに揃えてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/08/04 18:32

    コメントありがとうございます。
    半角スペースを消し、org.hkawaに統一しましたが、まだ404エラーが出ます。。。

    キャンセル

  • 2020/08/05 10:40

    もう解決方法は見つからない感じでしょうか?

    キャンセル

  • 2020/08/05 13:02

    他にも大文字小文字の違いが見受けられますので、微細な誤りではありますが、きちんと名前を再確認してください。

    web.xmlで、classpath:/config/spring.xml としていますが、記載していただいたファイル名が、Spring.xmlになっています。

    キャンセル

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

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

関連した質問

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