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

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

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

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

8053閲覧

Springの超初歩、なぜindex.jspが表示されるのかが分かりません

yoshihiro_yy

総合スコア27

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2017/05/05 04:24

###前提・実現したいこと
Springの勉強をしています。
書籍を購入したりネット上の情報を参考に自分で環境を構築したり動かしたりは出来たのですが、Mavenである程度環境の整った物に機能を継ぎ足す形で勉強していました。

ですので、改めて最小限のところから動かしてみようと思い下記の通り実施したところ、なぜこれで動くのかが理解出来ないため解説出来る方がいらっしゃればと思い質問しております。

###前提環境
Eclipse(Neon)のall in oneにSTSプラグインを追加した状態。
ファイル→新規→Springレガシープロジェクト→Simple Spring Web Maven
でプロジェクトを作成したもの。

###理解出来ないポイント
初期設定の状態でサンプルとしてindex.jspが用意されていますが、実際にローカルのサーバーに追加してアクセスすると表示されました。

コントローラークラスを用意していないようなのに、なぜ表示されるのかが謎です。

###初期の設定ファイル
一部コメントなど添削してあります
web.xml

xml

1<?xml version="1.0" encoding="ISO-8859-1"?> 2<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 6 id="WebApp_ID" version="2.5"> 7 8 <display-name>自分で設定したプロジェクト名</display-name> 9 10 <context-param> 11 <param-name>contextConfigLocation</param-name> 12 <param-value>classpath:spring/application-config.xml</param-value> 13 </context-param> 14 15 <!-- Spring設定ファイル(/WEB-INF/applicationContext.xml)を読みに行きます。 --> 16 <!-- ※ただしファイルは前述のcontext-paramで指定しているファイルのこと --> 17 <listener> 18 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 19 </listener> 20 21 22 <!-- 23 - Servlet that dispatches request to registered handlers (Controller implementations). 24 --> 25 <servlet> 26 <servlet-name>dispatcherServlet</servlet-name> 27 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 28 <!-- Spring設定ファイルはサーブレット毎に設定出来ます。 29 設定する場合は init-param 内の contextConfigLocation で設定します。 --> 30 <init-param> 31 <param-name>contextConfigLocation</param-name> 32 <param-value>/WEB-INF/mvc-config.xml</param-value> 33 </init-param> 34 <load-on-startup>1</load-on-startup> 35 </servlet> 36 37 <servlet-mapping> 38 <servlet-name>dispatcherServlet</servlet-name> 39 <url-pattern>/</url-pattern> 40 </servlet-mapping> 41 42</web-app>

mvc-config.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 6 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 8 9 <!-- Uncomment and your base-package here: 10 <context:component-scan 11 base-package="org.springframework.samples.web"/> --> 12 13 14 <mvc:annotation-driven /> 15 16 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 17 <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' --> 18 <property name="prefix" value="/WEB-INF/view/"/> 19 <property name="suffix" value=".jsp"/> 20 </bean> 21 22</beans> 23

application-config.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 6 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 7 8 <!-- Uncomment and add your base-package here: 9 <context:component-scan 10 base-package="org.springframework.samples.service"/> --> 11 12</beans> 13

###自分の理解
現状、上記の設定の状態で「http://localhost~/サーバーで設定したパス/」にアクセスすると、用意されているindex.jspが表示されます。

web.xmlの設定で
「/」へのアクセスは「dispatcherServlet」というservlet-nameが呼ばれると分かるのですが、
その呼ばれるorg.springframework.web.servlet.DispatcherServletから
どうしてindex.jspに辿り付くのかが理解出来ていないです。

通常これとは別にコントローラークラスを作成し、そこで最終的にindex.jspを表示させるようにする、という流れが必要なのかと思っているのですが・・・

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

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

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

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

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

guest

回答1

0

ベストアンサー

tomcat デフォルトの welcome-file の設定によって表示されているとかそんな感じですかね。

投稿2017/05/05 04:38

koko_u

総合スコア936

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

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

yoshihiro_yy

2017/05/05 04:47

早速のご回答ありがとうございます。 大変お恥ずかしい限りです、おっしゃる通りTomcatの設定でした。 Tomcatの勉強は遥か昔だったので完全にこんな設定の事を失念しておりました。 いくらSpringの情報を検索してもこの件について触れていないわけです。。。 本当に助かりました、これで前進できます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問