0

このような質問をたくさん読んでいますが、トラブルから抜け出せず、問題は tomcat が遊んでいることだと思い始めています。まず、ここに私の web.xml、*-servlet.xml、およびコントローラーがあります。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

<display-name>Spring REST Server</display-name>
<description>Spring REST Server</description>
<context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>classpath:env/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
            classpath:config/applicationContext.xml
            classpath:config/kimboo-servlet.xml
</param-value>
</context-param>
<context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>Kimboo</param-value>
</context-param>
<listener>
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Spring MVC Dispatcher Servlet -->
<servlet>
  <servlet-name>kimboo</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath:config/applicationContext.xml
      classpath:config/kimboo-servlet.xml
    </param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>kimboo</servlet-name>
  <url-pattern>/home/</url-pattern>
</servlet-mapping>
</web-app>

これは私の kimboo-servlet.xml です

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

<context:component-scan base-package="ar.com.kimboo.server.ui.controller" />

<mvc:annotation-driven />

<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/AppClient/pages/" />
    <property name="suffix" value=".html" />
</bean>

そして、これは私のコントローラーです

@Controller
@RequestMapping(value = "/home")
public class HomeController {

@RequestMapping(value = "/")
public String home() {
    return "login";
}

@RequestMapping(value = "/main")
public String main() {
    return "main";
}

    @RequestMapping(value = "/about")
public String main() {
    return "about";
}
}

これは非常に単純な例ですが、なぜ機能しないのかわかりません。このような質問をたくさん読んだことがありますが、ここや別のサイトでは、何が欠けているのかわかりません。

ところで、コントローラーでは、URL に一致するようにすべての組み合わせを試しました。"/home/" または "home/" をクラス レベルに置き、"login" または "main" をメソッド レベルに置きます。

機能するのは、localhost:8080/myServer/home/ にアクセスしたときだけです。「/home/ 」の代わりに、web.xml の url-pattern で「/home/」を使用してみました。「/」と「/」も使ってみましたが同じです。

これが機能する唯一の方法は、私が使用する web.xml の url-pattern の場合です。

<url-pattern>/home/</url-pattern>
<url-pattern>/home/main/</url-pattern>
<url-pattern>/home/login/</url-pattern>

次に、すべての URL にアクセスできます。どうすればいいのかわからないのですが、これは tomcat 7 の問題でしょうか?

4

3 に答える 3

1

コントローラーと注釈ハンドラーのマッピングが構成されていませんでした。これを kimboo-servlet.xml の Bean 構成の下に追加し、それぞれの jar も追加します。動作する可能性があります。

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

<bean id="simpleUrlMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
         <value>
            /home/**=homeController 
        </value>
    </property>
</bean>
于 2013-02-28T04:15:04.473 に答える
0

これは TomCat の問題ではなく、コントローラーに注釈を付けた方法に問題があると思われます。コントローラーの注釈を次のように置き換えてください

  @Controller
public class HomeController {

@RequestMapping(value = "/home")
public String home() {
    return "login";
}

@RequestMapping(value = "/home/main")
public String main() {
    return "main";
}

    @RequestMapping(value = "home/about")
public String main() {
    return "about";
}

}

これは単なる推測です。間違っていたらごめんなさい。REST サービスでこの問題を見たことを覚えています。多分それは同じです.今自分でテストする時間がありません.

于 2013-02-27T13:06:18.617 に答える
0

この質問を見てください: Basic Spring MVC config: PageNotFound using InternalResourceViewResolver。その理由は、マッピングが広すぎてマッピングを妨げているためJspServletです。

于 2013-09-12T18:29:49.340 に答える