2016-01-24 2 views
0

Я знаю, что это много кода, чтобы выбросить туда, но я был бы признателен, если кто-то может помочь мне разобраться в проблеме. Это просто базовый MVC, на главной странице есть только одна ссылка, «Вход», и при нажатии на нее вы должны перейти на login.jsp. Однако он этого не делает. Я считаю, что проблема связана с контроллером, потому что аннотации в файле контроллера светло-серые (с использованием идеи intellij), как будто они не используются. «/ login» отображается в URL-адресе.Проблема с веб-приложением Spring (MVC) Статус 404

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"> 

<welcome-file-list> 
    <welcome-file>/WEB-INF/jsp/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/config/spring-servlet.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> 

пружинно-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"> 

    <mvc:annotation-driven /> 
    <context:component-scan base-package="com.nusuth.controllers"></context:component-scan> 
    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"></property> 
     <property name="suffix" value=".jsp"></property> 
    </bean> 
</beans> 

loginController.java:

package com.nusuth.controllers; 

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 
public class loginController { 
    @RequestMapping(value="/login" , method=RequestMethod.GET) 
    public ModelAndView loadLoginPage() { 
     ModelAndView mav = new ModelAndView("login"); 
     return mav; 
    } 
} 
+0

у вас есть login.jspв папке jsp правильно? а также добавить выход журнала в ваш вопрос, это будет очень полезно. –

+0

Правильно, login.jsp находится в папке jsp. Я включил вывод журнала выше. Благодарю. – muninn9

+0

, если вы используете какой-либо журнал, попробуйте установить уровень журнала для отладки, который позволит детально изучить основную причину. –

ответ

0

Я т Хинк вы также можете написать «Войти» контроллер как:

@Controller 
public class loginController { 
    @RequestMapping(value="/login" , method=RequestMethod.GET) 
    public String loadLoginPage(Model model) { 
     model.addAttribute(new LoginForm()); // empty login form 
     return "login"; //jsp page name 
    } 
} 
0

@ Muninn9, Я заметил ваш web.xml, он отсутствует конфигурация ContextLoaderListener, которая в конечном счете нагрузки и инициализации контейнера для кофейных зерен. Добавьте log4j.xml/log4j.properties в web.xml и используйте этот прослушиватель (Log4jConfigListener), который будет включать ваши журналы консоли. Убедитесь, что у вас есть допустимый файл log4j.xml/log4j.properties в настройках пути к классу проекта.

+0

Как вы используете прослушиватель? – muninn9

+0

Вы можете найти на весеннем форуме сообщества, пожалуйста, используйте критерии поиска, как Spring MVC + contextloaderListener –

0

Из вашего сообщения в журнале я вижу, что каталина не нашла требуемого класса SpringServlet.

Это означает, что необходимые библиотеки не были включены в веб-проект. Все необходимые библиотеки веб-приложения должны быть в каталоге WEB-INF/lib.

Если вы используете инструмент построения, такой как MAVEN или gradle, они будут обрабатывать его автоматически.

Иначе вы можете

  1. Создать папку WEB-INF/LIBS
  2. Помещенный все необходимые библиотеки там.

IntelliJ идея создает каталог с именем ЛИЭСА в вашем домашнем каталоге и поставить все библиотеки там, если выбрать опцию для автоматической загрузки библиотек. Вы можете скопировать этот каталог в WEB-INF также

0

Fix вы схема конфигурацию:

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" 

иначе <mvc:annotation-driven /> не будете зарегистрированы правильно.

Здесь я установил все для вас:

enter image description here

весна-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"> 

    <mvc:annotation-driven /> 
    <context:component-scan base-package="com.nusuth.controllers"></context:component-scan> 
    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"></property> 
     <property name="suffix" value=".jsp"></property> 
    </bean> 
</beans> 

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"> 

<welcome-file-list> 
    <welcome-file>/WEB-INF/jsp/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/config/spring-servlet.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> 

login.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>login Page</title> 
    </head> 
    <body> 
     <h1>Hello This is login page!</h1> 
    </body> 
</html> 

loginController.java

package com.nusuth.controllers; 
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 
public class loginController { 
    @RequestMapping(value="/login" , method=RequestMethod.GET) 
    public ModelAndView loadLoginPage() { 
     ModelAndView mav = new ModelAndView("login"); 
     return mav; 
    } 
} 

Теперь просить login.jsp с:

http://localhost:8080/LoginDemo/login

+0

К сожалению, это не сработало. – muninn9

+0

Вы шутите? это будет работать нормально. Если нет, тогда у вас есть проблемы с конфигурацией и dependecy. –

+0

Gotcha, это должно быть проблема. – muninn9