servlet映射总是404错误

时间:2016-11-10 16:51:59

标签: java spring servlets

这是这个web.xml文件

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

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

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

  <servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-ap>

的applicationContext.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.3.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">


        <context:component-scan base-package="com.tutorial.ejemplospring" />

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

</beans>

这是控制器

package com.tutorial.ejemplospring;

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

@Controller
public class MainController {

    @RequestMapping("/main.html")
    public ModelAndView mainPage() {

        return new ModelAndView("main");
    }

}

我不知道为什么'http:localhost:8080 / ejemplospring / mail.html'与url模式 .html?不匹配,我收到404错误,如果我尝试使用/或/ 我得到同样的错误。

3 个答案:

答案 0 :(得分:0)

尝试取消注释

<img [src]="base64Image" class="editor-img" no-padding/>

似乎没有找到Controller,因此没有注册Mapping。

答案 1 :(得分:0)

为什么您的<context:component-scan base-package="com.tutorial.ejemplospring" /> 已被注释掉了?您需要启用此功能(取消注释),以便找到您的ComponentScan

@Controller

需要:

 <!-- <context:component-scan base-package="com.tutorial.ejemplospring" />-->

答案 2 :(得分:0)

第一个问题是您必须为要创建的bean启用组件扫描。

第二个是Spring MVC默认忽略了网址中的扩展名,因为它用于特定目的,例如.json/.xml会向Spring MVC表明您需要JSON or XML格式的数据。

所以你的网址应该是mail.html.someExtension即。 mail.html.do

如果您不想这样做,并且您必须具有该扩展名,那么您可以使用以下配置来启用扩展名映射。

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
</bean>

其他最简单的方法就是使用一些简单的URL,例如/mail,不带任何扩展名。