antenor
antenor

Reputation: 11

Tomcat 7 displays status 404 whenever I try to deploy Spring MVC application (from Intellij or by copying war file to webapps)

Tomcat 7 always displays status 404 resource is not available when I try to deploy (any) Spring MVC application. Moreover it displays the same message when I go to localhost:8080, even though I restarted my Windows. (non-MVC applications are still displed fine).

Here is my web.xml: { http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <display-name>Spring MVC Hello World</display-name>
   <welcome-file-list>
          <welcome-file>/</welcome-file>
   </welcome-file-list>

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

   <servlet-mapping>
          <servlet-name>spring</servlet-name>
          <url-pattern>/</url-pattern>
   </servlet-mapping>

   <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>src/webapp/WEB-INF/spring-servlet.xml</param-value>
   </context-param>
   <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

}

spring-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"
   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="hr.altima"/>

</beans>

AppConfig.java:

@Configuration
@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter{

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
    internalResourceViewResolver.setPrefix("/");
    internalResourceViewResolver.setSuffix(".jsp");
    return internalResourceViewResolver;
}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

}

And this is just a simple controller:

@Controller public class HomeController {

@RequestMapping(value = "/")
public String home() {
    return "test";
}

}

Project directory structure: Spring MVC Project http://puu.sh/ueJxx/931682696d.png

Upvotes: 1

Views: 361

Answers (2)

antenor
antenor

Reputation: 11

The problem was in Intellij IDEA, it somehow failed to correctly configure Spring MVC settings and correctly connect all the parts of the project.

After creation of new Spring MVC project, it was working fine.

Also, there was problem with Tomcat. It seems that after a series of unsuccessful attempts which resulted in 404 response, Tomcat started display that same response every time (even for localhost:8080, even after restarting computer...). So I also reinstalled Tomcat and then it worked fine.

Upvotes: 0

Monzurul Shimul
Monzurul Shimul

Reputation: 8396

Try changing your view resolver configuration to this, I think you are setting it wrong.

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
    internalResourceViewResolver.setPrefix("/WEB-INF/");
    internalResourceViewResolver.setSuffix(".jsp");
    return internalResourceViewResolver;
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_2_5.xsd"
         version="2.5">

    <display-name>Spring MVC Hello World</display-name>

    <welcome-file-list>
        <welcome-file>/</welcome-file>
    </welcome-file-list>

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

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

Upvotes: 0

Related Questions