Java – IntelliJ + Spring Web MVC

intellij-ideajavamavenspringspring-mvc

I have problem with IntelliJ 2016.1.3 and Spring Web MVC integration.
Steps I've made:

  1. File -> New -> Project… -> Maven (no archetype)
  2. GroupId = test ArtifactId = app
  3. Project name = App and Finish.
  4. I added to pom.xml < packaging > war < /packaging >
  5. I added to pom.xml dependencies

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
    </dependency>
    <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
    </dependency>
    
  6. Next I added modules into project (right click on project name -> Add Framework Support… ). I selected Spring MVC and Download (Configure… – selected all items).

  7. I created controller class HomeController.class

    package test.app;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HomeController {
        @RequestMapping(value="/")
        public String test()
        {
            return "test";
        }
    }
    
  8. I created webapp\WEB-INF and put there web.xml

    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <servlet>
            <servlet-name>WebServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
            </init-param>
        </servlet>
    
    
    &ltservlet-mapping&gt
        &ltservlet-name&gtWebServlet&lt/servlet-name&gt
        &lturl-pattern&gt/&lt/url-pattern&gt
    &lt/servlet-mapping&gt
    

    </web-app>

  9. Into webapp\WEB-INF I put dispatcher-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-4.0.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    
    
    
    &ltmvc:annotation-driven /&gt
    &ltcontext:component-scan base-package="test.app" /&gt
    
    &ltbean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt
        &ltproperty name="prefix" value="/WEB-INF/views/" /&gt
        &ltproperty name="suffix" value=".jsp" /&gt
    &lt/bean&gt
    

    </beans>

  10. Finally I added test.jsp file into webapp\WEB-INF\views. In addition I had to add module dependency (F4 -> modules -> dependencies -> + -> library -> from maven -> typed javax.servlet:jstl:1.2)

  11. Next step should be run application. I had to edit configurations (down arrow next to green arrow) -> + -> TomcatServer -> Local and I got warning No artifacts marked for deployment. Unfortunatelly I can't fix this problem. I have Fix button but after I press this I get Deployment tab and don't what to do.

Please help me with deployment configuration and tell me is my way of creating spring web application in IntelliJ good or have you got another better way. I need step by step tutorial because I watched some movies on youtube and I saw options I haven't in my Intellij or they are hidden and I can't find them.
Best regards

Best Answer

If you have configured everything the right way, you should have a +-Sign at the upper right of your deployment-tab. After pressing it, you should be offered a tooltip with 1-2 options:

  • Artifact...
  • External Source...

You usually would select the deployment artifact of your current project by choosing "Artifact...".

HTH