エラーなしで休止状態とSpringを構成し、プロジェクトを展開していますが、コントローラー「HomeController」を介してHome.jspをロードしようとしていますが、「エラー:404リソースが見つかりません...」が表示されます:
私は3つの異なるアプローチを試しました:
アプローチ番号 1 (私の理想的なアプローチではありません)。
a) ウェルカム リスト (web.xml) で index.htm を定義します。
b) @Controller @RequestMethod を使用して、注釈を介して HomeController を「/index.htm」にマップします。
c) HomeController はビュー「ホーム」を返します (WEB-INF/views/Home.jsp)
3 つのアプローチすべてに使用される共通のプロジェクト構造:
Web.xml:
<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>yourmarketnet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>yourmarketnet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
Yourmarketnet-spring.xml スニペット:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" />
applicationContext.xml:
<!-- Activates various annotations to be detected in bean classes -->
<context:annotation-config />
<!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package-->
<context:component-scan base-package="com.yourmarketnet.controller" />
<!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! -->
<mvc:annotation-driven/>
<!-- mapping of static resources-->
<mvc:resources mapping="/resources/**" location="/resources/" />
<import resource="hibernate-context.xml" />
HomeController クラス:
package com.yourmarketnet.controller;
@Controller
@RequestMapping("/index.htm")
public class HomeController {
public String requestHandler()
{
return "Home";
}
}
アプリケーションの実行結果:
HTTP ステータス 404
ご要請のリソースはご利用できません。
アプローチ番号 2 (私の理想的なアプローチではありません)
a) redirect.jsp を作成し、ウェルカム リスト (web.xml) を定義します。
b) @Controller @RequestMethod を使用したアノテーションを介して、HomeController を「 /HomeController」にマップします。
c) redirect.jsp “<% response.sendRedirect("/HomeController");%>” を HomeController に持っている
d) HomeController はビュー「ホーム」を返します (WEB-INF/views/Home.jsp)
Web.xml:
<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>yourmarketnet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>yourmarketnet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
</web-app>
Yourmarketnet-spring.xml スニペット:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" />
</beans>
applicationContext.xml スニペット:
<!-- Activates various annotations to be detected in bean classes -->
<context:annotation-config />
<!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package-->
<context:component-scan base-package="com.yourmarketnet.controller" />
<!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! -->
<mvc:annotation-driven/>
<!-- mapping of static resources-->
<mvc:resources mapping="/resources/**" location="/resources/" />
<import resource="hibernate-context.xml" />
HomeController クラス:
package com.yourmarketnet.controller;
@Controller
@RequestMapping("/HomeController")
public class HomeController {
public String requestHandler()
{
return "Home";
}
}
アプリケーションの実行結果:
HTTP ステータス 404 /HomeController
要求されたリソース (/HomeController) は利用できません。
アプローチ番号3、(上記のいずれかがうまく機能する場合、ただし、これが私が本当に望んでいることです)
a) web.xml からすべてのウェルカム ファイル タグを削除します。
b) Dispatcher を「/」にマップ</p>
c) @Controller @RequestMethod' を使用したアノテーションを介して、HomeController を「/HomeController」にマップします。
d) HomeController はビュー「ホーム」を返します (WEB-INF/views/Home.jsp)
Web.xml:
<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>yourmarketnet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>yourmarketnet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
**yourmarketnet-spring.xml スニペット: **
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:viewClass="org.springframework.web.servlet.view.JstlView" />
applicationContext.xml スニペット:
<!-- Activates various annotations to be detected in bean classes -->
<context:annotation-config />
<!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package-->
<context:component-scan base-package="com.yourmarketnet.controller" />
<!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! -->
<mvc:annotation-driven/>
<!-- mapping of static resources-->
<mvc:resources mapping="/resources/**" location="/resources/" />
<import resource="hibernate-context.xml" />
HomeController クラス:
package com.yourmarketnet.controller;
@Controller
@RequestMapping("/")
public class HomeController {
public String requestHandler()
{
return "Home";
}
}
Apache サーバー ログ:
警告: 「yourmarketnet」という名前の DispatcherServlet で、URI [/yourmarketnet/] の HTTP 要求のマッピングが見つかりません
アプリケーションの実行結果:
HTTP ステータス 404
ご要請のリソースはご利用できません。
404 エラーを発生させずに HomeController から Home.jsp をサーバーするために、正しいコード/タグを提供してください。ありがとうございます。