0

エラーなしで休止状態と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 をサーバーするために、正しいコード/タグを提供してください。ありがとうございます。

4

1 に答える 1

0

私はあなたの質問から 3 番目のアプローチについて話しています。

web.xml で、リクエスト マッピングを/ではなく に変更します*.htm。ここで見ることができるように、他のすべてが完璧であれば。したがって、これはうまくいくはずです。

これがお役に立てば幸いです。

乾杯。

于 2012-05-31T05:13:08.743 に答える