2017-02-21 80 views
1

我是J2EE和Spring框架的新手。 我只是想开始采用使用Maven Netbeans中v.8.2这个框架,但是当我增加了Spring的组合,它甚至不部署在GlassFish 4SpringMVC在Netbeans 8.2中不工作(maven build)

我做:

File > new Project > Maven project > Web Application

,因为我想在第二时间加入Spring。

然后我添加了一个弹簧conf.xml中文件configurate春,在/ WEB-INF:

<?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:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 

    <context:component-scan base-package="alex.mawashi" /> 
    <mvc:annotation-driven /> 

</beans> 

这是我部署描述符

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1"> 

    <!-- declaration of dispatcher servlet (Single servlet of Spring MVC) -->  
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring-conf.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <!-- servlet-mapping of dispatcher servlet (Single servlet of Spring MVC) --> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/spring-mvc/*</url-pattern> 
    </servlet-mapping> 
    <!-- end of servlet-mapping of dispatcher servlet (Single servlet of Spring MVC --> 
</web-app> 

这是我的pom.xml文件,其中所有依赖关系已正确下载:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>alex.mawashi</groupId> 
<artifactId>MySpringMVCExample</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>MySpringMVCExample</name> 

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- spring MVC dependencies--> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.6.RELEASE</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-web</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <!-- end of spring MVC dependencies--> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>7.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

这是我的控制器:

package alex.mawashi.myspringmvcexample; 

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

@Controller 
public class SpringFirstController { 

    @RequestMapping(value = "/gimmeResponseBody") 
    @ResponseBody 
    public String sayHello() { 
     return "<p> Ciao! Questa risposta è direttamente ottenuta con il @ResponseBody! </p>"; 
    } 

    @RequestMapping(value = "/") 
    @ResponseBody 
    public String kimoNO() { 
     return "jspPage"; 
    } 
} 

我附上我的项目树的屏幕截图也。 enter image description here

,它甚至没有部署,这是错误:

Grave: Exception while loading the app

Grave: Undeployment failed for context /MySpringMVCExample

Grave: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 60; The prefix "context" for the element "context:component-scan" is not associated.

这是链接到小项目在GitHub上:https://github.com/alessandroargentieri/MySpringMCVExample

那么,我缺少什么?谢谢!

回答

2

调整你的弹簧conf.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"> 


<context:component-scan base-package="alex.mawashi" /> 
    <mvc:annotation-driven /> 

</beans> 

另外,建议删除从POM文件如下:

<exclusions> 
    <exclusion> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
    </exclusion> 
</exclusions> 

和修改您的请求映射web.xml是这样的: <url-pattern>/*</url-pattern>

+0

谢谢,完成但现在这是错误:Grave:Exception in loadin g app:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.apache.catalina.LifecycleException:org.xml.sax.SAXParseException; lineNumber:17; columnNumber:60; cvc-complex-type.2.4.c:相应的快速字符是严格的,但不可能找到元素“context:component-scan”的声明。 –

+0

你能确保XSD文件版本匹配吗?在我的例子中,我使用的是3.0,但也许你正在使用更新的例如4.0。这也会导致错误。 – SaWo

+0

我已经试过了4.0而不是3.0,结果很不幸 –