Java 使用IntelliJ IDEA的Spring MVC配置

Java 使用IntelliJ IDEA的Spring MVC配置,java,spring,spring-mvc,jakarta-ee,glassfish,Java,Spring,Spring Mvc,Jakarta Ee,Glassfish,我想使用Spring MVC framework创建一个web应用程序,因此我遵循以下步骤: 我下载spring-framework-5.1.2.RELEASE-dist 我使用IntelliJ IDEA打开了一个新项目(Web应用程序) 我在WEB-INF下创建了一个lib目录,并添加了以前下载的所有JAR文件 我在WEB-INF下为所有JSP视图创建了一个视图目录 我添加了两个XML文件:web.XML和spring-demo-servlet.XML web.xml <?xml ver

我想使用Spring MVC framework创建一个web应用程序,因此我遵循以下步骤:

  • 我下载spring-framework-5.1.2.RELEASE-dist
  • 我使用IntelliJ IDEA打开了一个新项目(Web应用程序)
  • 我在WEB-INF下创建了一个lib目录,并添加了以前下载的所有JAR文件
  • 我在WEB-INF下为所有JSP视图创建了一个视图目录
  • 我添加了两个XML文件:web.XMLspring-demo-servlet.XML
  • web.xml

    <?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">
    
    <display-name>spring-mvc-demo</display-name>
    
    <!-- Spring MVC Configs -->
    
    <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
    <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-mvc-demo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <?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">
    
    <!-- Step 3: Add support for component scanning -->
    <context:component-scan base-package="com.pindc.springdemo" />
    
    <!-- Step 4: Add support for conversion, formatting and validation support -->
    <mvc:annotation-driven/>
    
    <!-- Step 5: Define Spring MVC view resolver -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
    
    SpringMVC演示
    调度员
    org.springframework.web.servlet.DispatcherServlet
    上下文配置位置
    /WEB-INF/spring-mvc-demo-servlet.xml
    1.
    调度员
    /
    

    spring演示servlet.xml

    <?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">
    
    <display-name>spring-mvc-demo</display-name>
    
    <!-- Spring MVC Configs -->
    
    <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
    <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-mvc-demo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <?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">
    
    <!-- Step 3: Add support for component scanning -->
    <context:component-scan base-package="com.pindc.springdemo" />
    
    <!-- Step 4: Add support for conversion, formatting and validation support -->
    <mvc:annotation-driven/>
    
    <!-- Step 5: Define Spring MVC view resolver -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
    
    

    当我使用GlassFish服务器运行应用程序时,出现以下异常:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1270)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:696)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:662)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:710)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:587)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:526)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)
    at javax.servlet.GenericServlet.init(GenericServlet.java:244)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1481)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5381)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5626)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:540)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:900)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
    at   com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2044)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1690)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
         Caused by: org.springframework.beans.BeanInstantiationException:  Failed to instantiate  [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:184)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1262)
    ... 70 more
    Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:76)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.<init>(RequestMappingHandlerAdapter.java:208)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172)
    ... 72 more
      Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1621)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1471)
    
    
    
        [2018-11-30T19:30:07.388+0100] [glassfish 5.0] [WARNING] []    [javax.enterprise.web] [tid: _ThreadID=46 _ThreadName=admin-listener(4)]   [timeMillis: 1543602607388] [levelValue: 900] [[
        java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException:  org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException:  com.fasterxml.jackson.databind.exc.InvalidDefinitionException
     java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:921)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:900)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
        at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2044)
        at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1690)
        at    com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
        at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    
    org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter”的bean时出错:bean实例化失败;嵌套异常为org.springframework.beans.beanstantiationException:未能实例化[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]:构造函数引发异常;嵌套异常为java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBean(AbstractAutowireCapableBeanFactory.java:1270)
    位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
    位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
    位于org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:846)
    位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
    位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    位于org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:696)
    位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:662)
    位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:710)
    位于org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:587)
    位于org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:526)
    位于org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)
    位于javax.servlet.GenericServlet.init(GenericServlet.java:244)
    位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1481)
    位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1280)
    位于org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5381)
    位于org.apache.catalina.core.StandardContext.start(StandardContext.java:5626)
    位于com.sun.enterprise.web.WebModule.start(WebModule.java:540)
    位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
    位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:900)
    位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684)
    在com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2044)上
    在com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1690)上
    位于com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
    位于org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    原因:org.springframework.beans.beans实例化异常:未能实例化[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]:构造函数引发异常;嵌套异常为java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    位于org.springframework.beans.BeanUtils.InstanceClass(BeanUtils.java:184)
    位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:87)
    位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBean(AbstractAutowireCapableBeanFactory.java:1262)
    ... 70多
    原因:java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    位于org.springframework.http.converter.support.allencompacsingformhttpmessageconverter.(allencompacsingformhttpmessageconverter.java:76)
    位于org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter。(RequestMappingHandlerAdapter.java:208)
    位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
    位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    位于org.springframework.beans.BeanUtils.InstanceClass(BeanUtils.java:172)
    ... 72多
    原因:java.lang。