【问题标题】:web.xml can't mark spring ServletDispatcher Properlyweb.xml 无法正确标记 spring ServletDispatcher
【发布时间】:2014-12-28 17:40:35
【问题描述】:

所以我正在通过tutorial 制作一个简单的项目来测试 Spring Framework,并遇到了一个我无法弄清楚的问题。

我的项目结构:

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>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>*.html</url-pattern>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>*.json</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"
       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="com.itaSS.controller" />

</beans>

HomeController.java:

package com.itaSS.controller;

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

@Controller
public class HomeController {

    @RequestMapping("/home")
    public String home() {
        return "/WEB-INF/jsp/home.jsp";
    }
}

所以当在 tomcat 上部署战争并尝试访问 localhost:8080/home.html 我明白了:

我确定 web.xml 中有一些错误,或者我错过了一些东西。 如果有人帮助我,我将不胜感激!

【问题讨论】:

  • 将您的 @RequestMapping 更改为 "/home.html"
  • 不起作用,我不确定这是否是问题所在,因为在 web.xml 中我们有 *.html 的映射。
  • 确保部署了正确的工件。
  • localhost:8080 显示 index.jsp,因此工件已部署。
  • 启用调试日志并检查发生了什么。我怀疑您的控制器已找到,但您的 JSP 未找到。

标签: java xml spring spring-mvc tomcat


【解决方案1】:

我认为您在 dispatcher-servlet.xml 文件中缺少以下行。

<mvc:annotation-driven/>

【讨论】:

  • 很遗憾没有结果,在教程中他没有使用他的标签。
【解决方案2】:

您需要在应用程序上下文文件dispatcher-servlet.xml 中定义一个 ViewResolver,如下所示:

<bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

【讨论】:

  • 很遗憾没有结果。
  • @Arcaniel 在您的应用程序上下文中添加您的 bean 控制器,并按照 RE350 的建议添加
  • 检查你的网址,我给你的应该可以工作。你试过localhost:8080/museum-web/home.html而不是localhost:8080/home.html
  • 在 localhost:8080/ 上设置的 webapp 映射/刚刚尝试不工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 2013-07-25
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2022-06-19
相关资源
最近更新 更多