0

ホームビューを提供するコントローラーに、起動/起動時にアプリケーション (Apache Tomcat 7.0 で実行される Spring) をルーティングしたい

したがって:

1) web.xml のウェルカム ファイル タグに index.htm を定義しました。

2) @Controller @RequestMapping("/index.htm") で HomeController に注釈を付けました

3) HomeController も xml Bean にマップしました


私のweb.xml:

<web-app 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>index.htm</welcome-file>
    </welcome-file-list> 
</web-app>

私の spring-servlet.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" />
<!-- Controller beab mappinh -->
   <bean class="com.yourmarketnet.controller.spring.HomeController" 
   name="HomeController"/>

    <bean id="unAuthenticatedUrlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/index.htm">HomeController</prop>
            </props>
        </property>
    </bean>

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.mvc.controller.spring" />    
    <!-- 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" />

私のホームコントローラー:

package com.yourmarketnet.controller.spring;

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

       @Controller 
        @RequestMapping(value={"/","/index.htm"})
        //If have also tried RequestMapping("/index.htm") OR //If have also tried RequestMapping("index.htm")
        public class HomeController {

            @RequestMapping(method = RequestMethod.GET)
            public String requestHandler()
            {
                return "Home"; 
            }
        }

これは私のプロジェクト構造でもあります:

ここに画像の説明を入力

でも

アプリケーションの起動時に「要求されたリソース () は利用できません」という 404 エラーが発生します。

4

3 に答える 3

0

これを行う

@Controller 
public class HomeController {
            @RequestMapping({"/"})
            public String requestHandler()
            {
                return "Home"; 
            }
        }

これで準備完了です。

あなたは必要ありません

<bean id="unAuthenticatedUrlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/index.htm">HomeController</prop>
            </props>
        </property>
    </bean>

注釈を使用している場合。

于 2012-05-28T06:08:05.307 に答える
0

プロジェクト構造の index.htm は正確にはどこにありますか??

また、 index.htmをウェルカム ファイルとして定義し、コントローラーでマップすることはできません。

2 つの解決策があります。

  1. index.htm を使用しない場合は、welcome-file-list から完全に削除してから、「/」値のみを使用してコントローラーをマップしてください。

  2. または、 "/"マッピングも使用せずに、コントローラー内のマッピングのみとして index.htm を作成することもできます。また、welcome-file-list は使用しないでください。

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

乾杯。

于 2012-05-28T05:54:11.360 に答える
0

controller の context-component scan を実行してみてください。

..-servlet.xml に次の行を追加します

<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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <context:component-scan base-package="com.yourmarketnet.controller.spring"/>

于 2012-05-27T07:27:22.553 に答える