2017-10-13 14 views
-1

サーブレットの設定に問題があります。私がapp.servlet.xmlに追加すると、コントローラのメソッドに到着する引数は自動的にnullになります。<mvc:annotation-driven />の問題

私は基本的な構成をテストしてから、この問題を解決することはできません。誰でも助けてくれますか?

アプリ-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?> 

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

    <!-- Scans the classpath of this application for @Components to deploy as beans --> 
    <context:component-scan base-package="com.app.controller" /> 

    <!-- Configures the @Controller programming model --> 
    <mvc:annotation-driven/> 

holaController:

@Controller 
@RequestMapping("/") 
public class HolaController { 

@RequestMapping("/hola/{id}") 
public ModelAndView hola(@PathVariable Integer id, 
     HttpServletRequest httpServletRequest, 
     HttpServletResponse httpServletResponse){ 

    String mensaje = "<br><div><h2>Hola</h2></div><br><br>"; 

    return new ModelAndView("hola", "mensaje", mensaje); 
} 

} 

の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" 
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>APP</display-name> 

<servlet> 
    <servlet-name>app</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/app-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>app</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
</web-app> 

のpom.xml:

あなたはすべてのサーブレットとフィルタは、他の設定/ Bean構成を共有したい場合は0
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/maven-v4_0_0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 
     <groupId>com.app</groupId> 
     <artifactId>app</artifactId> 
     <packaging>war</packaging> 
     <version>0.3</version> 
     <name>app</name> 
     <url>http://maven.apache.org</url> 

     <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <spring.version>4.3.0.RELEASE</spring.version> 
     <hibernate.version>4.3.11.Final</hibernate.version> 
     <jackson.library>2.7.5</jackson.library> 
     </properties> 

     <dependencies> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.6</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.7.4</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 

    <!-- -->  
    <!-- HIBERNATE --> 
    <!-- --> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

    <!-- -->  
    <!-- END HIBERNATE --> 
    <!-- --> 

    <!-- -->  
    <!-- LOGGER --> 
    <!-- --> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.5.2</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.1</version> 
     </dependency> 

    <!-- -->  
    <!-- END LOGGER --> 
    <!-- --> 

    <!-- -->  
    <!-- SPRING --> 
    <!-- --> 

      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-webmvc</artifactId> 
       <version>${spring.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-tx</artifactId> 
       <version>${spring.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-orm</artifactId> 
       <version>${spring.version}</version> 
      </dependency> 

    <!-- --> 
    <!-- FIN SPRING --> 
    <!-- --> 

     </dependencies> 

     <build> 
      <finalName>app-web</finalName> 
     </build> 
    </project> 
+0

新しいプロジェクトを開始する場合は、Spring Bootを使用しない理由がありますか? – Andreas

+0

'id'、' httpServletRequest'、 'httpServletResponse'はすべて' null'ですか? –

+0

あなたのコードを実行しましたが、httpServletRequestとhttpServletResponseがNULLにならない –

答えて

-1

は、その後、あなたはまた、あなたのポンポンに欠けている

<listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 


<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/root-context.xml</param-value> 
    </context-param> 

と依存関係以下のweb.xmlの

構成の下に追加する必要があります。 xml

+0

'COntextLoaderListener'は必須ではありません。あなたは' DispatcherServlet'だけで完全に動作することができます。 \ –

+0

共通の設定を共有するために他のサーブレットやフィルタが必要な場合や、WebアプリケーションのルートWebアプリケーションコンテキストが必要な場合にコメントを更新しました。このコンテキストは、コントローラレイヤーでどのテクノロジが使用されているかに応じて、スプリングマネージドBeanをロードおよびアンロードするために使用できます。 –

+0

これは、単一の 'DispatcherServlet'を使って行うことができます(ただし、多くの人には分かりません)。それにもかかわらず、それは手元の問題への答えではありません。 –

関連する問題