当前位置: 首页 > 知识库问答 >
问题:

Spring 4 mvc HTTP 404 rsource未找到

卫才
2023-03-14

我是Spring的新手,我尝试了一个带有java配置的简单mvc示例。我在请求主页时收到HTT 404错误。

Spring 4,Tomcat 8.5,Eclipse我的代码来了

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>SpringProject</groupId>
    <artifactId>SpringProject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>SpringProject</name>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <spring.version>4.3.4.RELEASE</spring.version>
    </properties>
    <dependencies>
        <dependency>
            <groupd>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
</project>

分配器ervlet.java

package arnaud.spring.configuration;

public class DispatcherServletForMVC extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected String[] getServletMappings(){
        return new String[]{"/"};
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        System.out.println("dans initialisation root");
        return null;        
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        System.out.println("dans initialisation servlet");
        return new Class<?>[] {WebConfig.class};
    }
}

网络配置

package arnaud.spring.configuration;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="arnaud.spring")
public class WebConfig extends WebMvcConfigurerAdapter {

    //define the view resolver
    @Bean
    public ViewResolver viewResolver(){
        System.out.println("view resolver");
        InternalResourceViewResolver resolver= new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
        configurer.enable();
        System.out.println("default handling");
    }
}

现在我的控制器。。。

package arnaud.spring.controllers;
@Controller
public class HomeController {

    @RequestMapping(value="/",method=RequestMethod.GET)
    public String home(){
        System.out.println("dans controller");
        return "HomePage";
    }
}

我的主页。位于WEB-INF/views中的jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                      "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix ="c" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Home Page</title>
    </head>
    <body>
        <a ref="<c:url value="/listinvoice"/>">list invoice</a>
        <a ref="<c:url value="/listinvoice/register"/>">register</a>
    </body>
</html>

最后,我可以在Eclipse控制台中看到什么

火星2017年3月3日下午4:05:48。阿帕奇。公猫util。消化器。SetPropertiesRule begin AVERTISSEMENT:[SetPropertiesRule]{Server/Service/Engine/Host/Context}
将属性“source”设置为“org”。日食jst。哎呀。服务器:SpringMVCProject'未找到匹配的属性。火星2017年3月3日下午4:05:48。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:服务器版本:ApacheTomcat/8.5.6 mars 032017年4:05:48 PM org。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:服务器构建时间:2016年10月6日20:15:31 UTC mars 032017年4:05:48 PM org。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:服务器号:8.5.6.0 mars 032017年4:05:48 PM org。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:OS名称:Windows 10 mars 032017年4月5日下午4:05:48组织。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:OS版本:10.0 mars 032017年4月5日下午4:05:48组织。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:架构:amd64 mars 032017年4月5日下午4:05:48组织。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:Java主页:C:\Program Files\Java\jre1。8.0_111 mars 032017年4:05:48下午组织。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:JVM版本:1.8.0_111-b14 mars 032017 4:05:48 PM org。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志信息:JVM供应商:甲骨文公司mars 032017年4:05:48下午组织。阿帕奇。卡塔琳娜。创业。VersionLoggerListener日志mars 032017年4:05:50下午组织。阿帕奇。卡塔琳娜。果心ApplicationContext日志信息:1在类路径dans初始化根dans初始化servlet mars上检测到Spring WebApplicationInitializers 2017年3月3日下午4:05:51组织。阿帕奇。卡塔琳娜。果心ApplicationContext日志信息:正在初始化Spring FrameworkServlet“dispatcher”mars,2017年3月3日下午4:05:51组织。springframework。网状物servlet。DispatcherServlet initServletBean信息:FrameworkServlet“dispatcher”:初始化已于2017年4月3日下午4:05:51开始。springframework。网状物上下文支持注释ConfigWebApplicationContext prepareRefresh信息:刷新命名空间“dispatcher servlet”的WebApplicationContext:
启动日期[Fri Mar 03 16:05:51 CET 2017];背景层次结构的根mars 032017 4:05:51 PM org。springframework。网状物上下文支持AnnotationConfigWebApplicationContext LoadBean定义信息:注册带注释的类:[class arnaud.spring.configuration.WebConfig]mars 032017 4:05:52 PM org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerAdapter initControllerAdviceCache信息:查找命名空间“dispatcher servlet”的@ControllerAdvice:WebApplicationContext:启动日期[2017年3月3日星期五16:05:51 CET];背景层次结构的根mars 032017 4:05:52 PM org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMappingRegister信息:将“{[/],methods=[GET]}”映射到公共java上。朗·斯林阿诺。Spring控制器。家庭控制器。主页()默认处理mars 2017年3月4日下午4:05:52组织。springframework。网状物servlet。汉德勒。SimpleUrlHandlerMapping registerHandler INFOS:将URL路径[/**]映射到[class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler]类型的处理程序上查看解析程序mars 032017年4:05:53 PM org。springframework。网状物servlet。DispatcherServlet initServletBean信息:FrameworkServlet“dispatcher”:初始化于2087毫秒mars 032017年4:05:55完成。阿帕奇。贾斯珀。servlet。TldScanner scanJars信息:至少有一个JAR被扫描了TLD,但没有包含TLD。为此记录器启用调试日志记录以获取已扫描的JAR的完整列表,但未找到TLD。在扫描过程中跳过不需要的JAR可以缩短启动时间和JSP编译时间。火星2017年3月3日下午4:05:57组织。阿帕奇。郊狼。抽象协议启动信息:启动ProtocolHandler[http-nio-8085]mars 032017年4:05:57下午组织。阿帕奇。郊狼。抽象协议启动信息:启动ProtocolHandler[ajp-nio-8008]mars 032017年4:05:57下午组织。阿帕奇。卡塔琳娜。创业。Catalina启动信息:9320毫秒后服务器启动

我用下面的url调用这个页面,我的tomcat在Eclipe中位于8085端口

http://localhost:8085/SpringMVCProject/或http://localhost:8085/SpringMVCProject

结果相同:HTTP 404

非常感谢你帮我解决这个问题。

共有1个答案

滕璞瑜
2023-03-14

您需要在web中映射Dispatcher Servlet。xml和您的web配置类这是使用您需要替换为您的默认调度程序

       <servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>
    org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
  <param-name>contextClass</param-name>
  <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>arnaud.spring.configuration.WebConfig</param-value>
</init-param>

就像这样

 <servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>
        arnaud.spring.configuration.DispatcherServletForMVC
</servlet-class>
<init-param>
  <param-name>contextClass</param-name>
  <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>arnaud.spring.configuration.WebConfig</param-value>
</init-param>
 类似资料:
  • 当我运行我的Android应用程序从eclipse,我得到这个错误。 从日蚀错误复制粘贴 然而,我的亚洲开发银行就在它说的不在的地方。 出了什么问题,如何解决? 我将cd放入adb所在的目录()中,输入adb并显示 adb是绿色的,这意味着它是可执行的,对吗? 例如,dx也是绿色的,当我在命令提示符中输入dx时,它工作了... adb怎么了?

  • 块引号 J拥有一个包含maven父项目(parent)和子项目(Domain,Web,Win)的Eclipse工作区。父pom包含wicket-spring-boot-starter-parent

  • 当我尝试使用或出现以下错误 JAVA错误:sun。安全ssl。SSLSessionImpl。(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I)V 在sun.security.ssl

  • 问题内容: 通过扫描程序读取文件时,程序中出现运行时异常。 我的代码是: 问题答案: 与你需要检查,如果存在与下一行 所以循环变成 是读者返回null 当然在这段代码中,这取决于输入的格式是否正确

  • 我是新的Python开发和尝试使用pipenv。我运行命令,它成功运行: 然而,当我在一个新的根项目目录中运行命令时,我收到以下消息:。我怀疑我可能需要修改我的. bashrc,但是我不清楚要向文件中添加什么,或者是否需要修改。

  • 我用Android Studio为Unity做了一个jar插件。我的插件使用。但找不到该类。Unity的控制台向我显示了以下错误:

  • 我不知道如何处理以下错误,我已经搜索了网络,但没有找到任何东西: 以及: 我在gradle应用程序中的依赖项:

  • 我试图从netbeans连接到sqlite,但它没有得到我的conexion类 这是我的代码: 这是我的错误: Java语言lang.NoClassDefFoundError:Petrocabimas\u app/Conexion(错误名称:Petrocabimas\u app/Conexion)。lang.ClassLoader。在java中定义Class1(本机方法)。lang.ClassLo