简体   繁体   English

在Intellij中设置Spring MVC Maven“ Hello World” Webapp

[英]Setting up a Spring MVC Maven “Hello World” webapp in Intellij

I am trying to set up a spring webapp in Intellij. 我正在尝试在Intellij中设置spring webapp。 I am using Maven to manage dependencies and a local Tomcat webserver. 我正在使用Maven管理依赖项和本地Tomcat Web服务器。 So far I have created the project using the Spring MVC template. 到目前为止,我已经使用Spring MVC模板创建了该项目。

I am basically following this tutorial, but with Intellij 13.1.6 and using the Spring MVC template: http://alfasin.com/setting-up-spring-web-project-on-intellij-using-maven/ 我基本上遵循本教程,但是使用Intellij 13.1.6并使用Spring MVC模板: http ://alfasin.com/setting-up-spring-web-project-on-intellij-using-maven/

I would assume that this would allow me to get a "Hello World" app up and running quickly. 我认为这将使我能够快速启动并运行“ Hello World”应用程序。 However, I am getting 500 internal errors that I am having trouble solving. 但是,我遇到了500个无法解决的内部错误。

When I try to run the app I usually get this error: 当我尝试运行该应用程序时,通常会出现以下错误: 找不到类

Seemingly randomly, I will sometimes get this error instead: 看似随机,有时我会得到以下错误: 无法编译课程

This is my web.xml file: 这是我的web.xml文件:

<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Spring MVC Application</display-name>

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

This is my mvc-dispatcher-servlet.xml file: 这是我的mvc-dispatcher-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.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="com.maynard.pipes"/>

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

This is my controller: 这是我的控制器:

package com.maynard.pipes;

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

@Controller
@RequestMapping("/")
public class HelloController 
{   
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model)
    {
        model.addAttribute("message", "Hello world!");
        return "hello";
    }
}

This is my pom.xml file: 这是我的pom.xml文件:

<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.springapp</groupId>
<artifactId>project-pipes</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>project-pipes</name>

<properties>
    <spring.version>3.2.0.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

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

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

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

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <finalName>project-pipes</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*Tests.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

This is my Tomcat configuration: 这是我的Tomcat配置: tomcat的

If anyone can point out what I've gotten wrong I would appreciate it. 如果有人能指出我做错了什么,我将不胜感激。 I still have much to learn on the configuration side of development. 在开发的配置方面,我还有很多东西要学习。 Thanks. 谢谢。

The JSP version you using is not compatible with the Tomcat 8 version. 您使用的JSP版本与Tomcat 8版本不兼容。 Check this out: http://tomcat.apache.org/whichversion.html 检查一下: http : //tomcat.apache.org/whichversion.html

我已经通过从Tomcat 8降级到Tomcat 7来解决了这个问题。我不确定为什么这样做,但是现在可以看到“ Hello World”了。

   package com.abc.controller;
   import org.apache.log4j.Logger;
   import org.springframework.stereotype.Controller;
   import org.springframework.web.bind.annotation.RequestMapping;
   import org.springframework.web.bind.annotation.RequestMethod;
   import org.springframework.web.servlet.ModelAndView;
  @Controller
  @RequestMapping("/hello")
    public class HelloWorldController {
      Logger logger = Logger.getLogger("HelloWorldController"); 
       @RequestMapping(method=RequestMethod.GET)
     public ModelAndView helloController() {
      logger.info("inside Controller");
      String message = "Hello World";
      return new ModelAndView("HelloWorldPage", "message", message);
    }

}
           <?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: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.abc.controller" />  


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

</bean>  

   <dependencies>  

        <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        </dependency>
          <dependency> 
          <groupId>junit</groupId>  
           <artifactId>junit</artifactId>  
            <version>3.8.1</version>  
             <scope>test</scope>  
             </dependency>  
               <dependency>  
                 <groupId>javax.servlet</groupId>  
                <artifactId>servlet-api</artifactId>  
                <version>3.0-alpha-1</version>  
               </dependency>  
              <dependency>  
            <groupId>org.springframework</groupId>  
          <artifactId>spring-core</artifactId>  
            <version>3.1.2.RELEASE</version>  
           </dependency>  
                  <dependency>  
                <groupId>org.springframework</groupId>  
           <artifactId>spring-context</artifactId>  
         <version>3.1.2.RELEASE</version>  
                   </dependency>  
                 <dependency>  
           <groupId>org.springframework</groupId>  
       <artifactId>spring-beans</artifactId>  
        <version>3.1.2.RELEASE</version>  
      </dependency>  
         <dependency>  
        <groupId>org.springframework</groupId>  
           <artifactId>spring-webmvc</artifactId>  
         <version>3.1.2.RELEASE</version>  
                   </dependency>  
                 <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
             <version>1.2.17</version>
             </dependency>
              </dependencies> 
 <?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" id="WebApp_ID" 
       version="3.0">
         <display-name>Spring_Annotation</display-name>
      <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
                  </welcome-file-list>

           <servlet>
             <servlet-name>spring</servlet-name>
           <servlet-
      class>org.springframework.web.servlet.DispatcherServlet</servlet-
 class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/spring-servlet-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
           </servlet>
          <servlet-mapping>
         <servlet-name>spring</servlet-name>
          <url-pattern>/</url-pattern>
               </servlet-mapping>
                  </web-app>
         <html>
         <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-
              8859-1">
        <title>Index Page</title>
              </head>
         <body>
           <a href="hello.html">CLICH HERE</a>  
            </body>
             </html>
        <html>
            <head>
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-
                   8859-1">
                   <title>Success Page</title>
                         </head>
                    <body>
                <h2>${message}</h2>
                      </body>
                              </html>

这是我在上面发布的文件,我已成功部署了该应用程序并打印了Hello World,如果有人遇到任何问题,请按照以下流程操作并按照pom.xml进行操作,如果之后出现404错误代码而不是重新启动您的文件,日食再次确保工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM