【问题标题】:HelloWorld SpringMVC - HTTP Status 404HelloWorld SpringMVC - HTTP 状态 404
【发布时间】:2015-11-04 08:19:37
【问题描述】:

我正在尝试创建我的第一个 Spring MVC 项目,但我不断收到错误 http 状态 404。

如果我尝试在 /views 之外打开一个 .jsp 文件(所以不使用 Spring MVC)它可以正常工作

这是我的文件:

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>fj21-tarefas</display-name>

  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring-context.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

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

</web-app>

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


    <context:component-scan base-package="br.com.caelum.tarefas" />   
    <mvc:annotation-driven />

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

</beans>

控制器

package br.com.caelum.tarefas.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class OlaMundoController {

    @RequestMapping("/olaMundoSpring")
    public String execute(){
        System.out.println("Executando a lógica com Spring MVC");
        return "ok";
    }

}

aopalliance-1.0.jar
commons-logging-1.2.jar
javax.servlet.jsp.jstl-1.2.1.jar
javax.servlet.jsp.jstl-api-1.2.1-3.jar
jcl-over-slf4j-1.7.12.jar
joda-time-2.4.jar
log4j-over-slf4j-1.7.12.jar
slf4j-api-1.7.12.jar
slf4j-log4j12-1.7.12.jar
spring-aop-4.1.7.RELEASE.jar
spring-aspects-4.1.7.RELEASE.jar
spring-beans-4.1.7.RELEASE.jar
spring-context-4.1.7.RELEASE.jar
spring-context-support-4.1.7.RELEASE.jar
spring-core-4.1.7.RELEASE.jar
spring-expression-4.1.7.RELEASE.jar
spring-instrument-4.1.7.RELEASE.jar
spring-instrument-tomcat-4.1.7.RELEASE.jar
spring-jdbc-4.1.7.RELEASE.jar
spring-jms-4.1.7.RELEASE.jar
spring-messaging-4.1.7.RELEASE.jar
spring-orm-4.1.7.RELEASE.jar
spring-oxm-4.1.7.RELEASE.jar
spring-test-4.1.7.RELEASE.jar
spring-tx-4.1.7.RELEASE.jar
spring-web-4.1.7.RELEASE.jar
spring-webmvc-4.1.7.RELEASE.jar
spring-webmvc-portlet-4.1.7.RELEASE.jar
spring-websocket-4.1.7.RELEASE.jar

【问题讨论】:

  • 你试图在什么上下文中执行 /olaMundoSpring ?你的views 目录中有ok.jsp,因为你在execute 方法中返回ok
  • 在控制台打印“Executando a lógica com Spring MVC”

标签: java xml spring tomcat model-view-controller


【解决方案1】:

当您的控制器方法返回一个字符串时,要返回的字符串是您的视图的名称(jsp、模板等)。

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

根据上面的设置(由您提供),Spring 旨在返回位于 /WEB-INF/views 的视图,并且该视图的名称必须具有后缀“.jsp”。

请确保“ok.jsp”文件位于此路径内,否则 Spring 将无法加载它。

如果“ok.jsp”已经位于此文件夹中,请向我们提供您所面临异常的完整堆栈跟踪。

【讨论】:

    【解决方案2】:

    是的,视图“ok.jsp”位于更正后的文件夹中。

    我最终通过删除所有库并使用 maven 添加依赖项来解决问题。

    【讨论】:

      【解决方案3】:

      如果您使用的是 spring,您应该使用 spring boot 来开始使用任何新服务。照顾你的基本的深度树。参考教程-http://projects.spring.io/spring-boot/#quick-start

      非常直接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 2018-04-13
        • 2018-03-05
        • 1970-01-01
        • 2015-11-26
        • 1970-01-01
        相关资源
        最近更新 更多