Michał Bil
Michał Bil

Reputation: 3589

Can't configure Spring MVC application

I have big problem with configuring Spring MVC application. No matter what I write in configuration xmls I get 404 while reaching localhost/appname/ or localhost/appname/register . Why that happens? Read tutorials for MVC in Maven and it looks like I'm doing everything as they says.

web.xml

<web-app id="WebApp_ID" 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>Wymysl to!</display-name>




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

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

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

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

    <context:component-scan base-package="wymysl.Controllers" /> 
    <context:annotation-config />

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

     <bean
        class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>



</beans>

RegisterController.java

package wymysl.Controllers;



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import wymysl.database.Person;
import wymysl.database.PersonsRepository;


@Controller
public class RegisterController {

    @Autowired
    PersonsRepository repo;

    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String register() {


        return "register";

    }

    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String register(@ModelAttribute("Person") Person person) {

        System.out.println(""+person.getName());

        return "index";

    }



}

ProjectTree

Upvotes: 1

Views: 189

Answers (1)

Goyal Vicky
Goyal Vicky

Reputation: 1299

Things you can change to make it more basic:-

  1. Remove

    contextConfigLocation /WEB-INF/dispatcher-servlet.xml

        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    

put your web.xml and dispatcher-servlet.xml at same path.

  1. No need of <context:annotation-config /> as it is already taken care by component-scan. See here:- Difference between <context:annotation-config> vs <context:component-scan> and <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

  2. Make sure register.jsp is present in /WEB-INF/jsp/register.jsp.

If issue still does not get solved you need to share your server logs.

Upvotes: 1

Related Questions