使用SpringMVC搭建WEB项目时报错404的问题排查解决以及web.xml配置文件init-param行标红问题

一、使用SpringMVC搭建WEB项目时报错404的问题排查解决

        很早前(4年前)就把这个搭建过,但今天运行的时候就是报404错误,见文章: JAVA开发中SpringMVC框架的使用及常见的404问题原因以及SpringMVC框架基于注解的开发实例-CSDN博客文章浏览阅读352次,点赞6次,收藏17次。在项目执行的时候可能容易遇到404错误,如果代码上没有什么问题,错误可能出在使用tomcat运行的时候未把lib包放到tomcat下,导致tomcat运行时找不到jar包从而运行出错。另外上面在配置springMVC框架的时候需要指定contextConfigLocation上下文的配置文件地址,即SpringMVC集合spring时,spring需要用的配置文件,如上我们使用的springmvc-servlet.xml文件,此文件放在java源代码下的src/main/resources目录中。https://linge.blog.csdn.net/article/details/142846672        经过检查,基本的错误原因都可以完全排除,程序代码没有问题,WEB导入包也没有问题,静态资源过滤以及编译出来的 out 目录中的文件也都正常,但是就是报 404 错误,而且 Tomcat 页面就只是显示无法找到资源,也没有更编辑 的错误。

类型 状态报告

描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

        认真看了看控制台的日志,发现有

org.springframework.web.servlet.DispatcherServlet 未分配到 javax.servlet.Servlet,jakarta.servlet. 以及 org.apache.catalina.core.ApplicationContext.log 将servlet[springmvc]标记为不可用

        有网友反馈也有类似情况,包括 spring-webmvc 版本太高了,所以我这里把spring-mvc降级到 5.3.39 版本,但是问题依旧。还有Tomcat的版本过高,目前用的是10 版本,于是试着 针对 Tomcat 的版本也进行降降,就把 Tomcat10版本降到了 Tomcat9版本。

        发现  Tomcat 版本降级之后,发现现在页面的日志详细多了。看到了错误和其根本原因提示:

org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 55; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明。

        于是修改了 spring 配置中的声明问,解决了声明的问题之后又碰到了一个新的问题。

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\5.java\spring-anno\out\artifacts\spring_anno_Web_exploded\WEB-INF\classes\org\example\controller\IndexController.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [D:\5.java\spring-anno\out\artifacts\spring_anno_Web_exploded\WEB-INF\classes\org\example\controller\IndexController.class]; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 65

        此处异常的原因是  :jdk不匹配,需要替换jdk版本即可。目前IDE中的JDK版本是 21,Spring版本是 5.1,Spring Framework 5.3.x: JDK 8-17 (expected) 所以考虑把 Spring 升上去。之前为尝试解决问题把 Spring版本降低了实际未启作用。  于是修改成了 6.1.6 版本。之后便正常运行起来了 SpringMVC 项目。

二、SpringMVC项目中web.xml配置文件init-param行标红

        SpringMVC项目中web.xml配置文件init-param行标红,报错如下:cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param' 。

cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"http://java.sun.com/xml/ns/javaee":description, "http://java.sun.com/xml/ns/javaee":display-name, "http://java.sun.com/xml/ns/javaee":icon, "http://java.sun.com/xml/ns/javaee":servlet-name}' is expected.

        错误原因原来竟是 init-param 的存放位置不对,可我没想到不对到这种程度,这种要求真是撤单啊。解决方法是要把  init-param 放在servlet里面,并且一定要放在 servlet-class 后面,中间隔行别的都不行,而我中间正是加了一行 load on startup  配置就导致这个错误。

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup> ### 这行不能写在此,要删除放下面的位置
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet> 

        还是那句话,这个要求有点扯淡。


http://www.niftyadmin.cn/n/5711436.html

相关文章

【Flutter】Dart:环境搭建

Flutter 是一个基于 Dart 的跨平台开发框架&#xff0c;可以帮助我们快速构建移动应用程序。在开始 Flutter 开发之前&#xff0c;我们需要先搭建 Dart 的开发环境&#xff0c;并配置合适的编辑器&#xff0c;比如 VSCode。本教程将引导你一步步完成 Dart 和 Flutter 的环境搭建…

逆向工程基本流程

1 逆向的基本流程 1获取目标app (官网,豌豆荚),尽量不要去华为应用市场,小米应用市场下载–多渠道打包,安装到手机上 2使用抓包工具 抓包分析(charles,fiddler…) 3使用反编译工具 (JADX,JD-GUI。。),把apk反编译成java代码,分析java代码,定位代码位置 4 使用动态分…

哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测

陈老老老板&#x1f934; &#x1f9d9;‍♂️本文专栏&#xff1a;生活&#xff08;主要讲一下自己生活相关的内容&#xff09;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f9d9;‍♂️本文简述&#xff1a;讲一下市面上云电脑的对比。 &#x1f9d9;‍♂️上一篇文…

基于ESP32的便携式游戏机

基于ESP32的便携式游戏机 一、项目说明二、项目材料三、程序测试四、设置LCD屏幕五、控制设置六、测试电路七、外壳制作八、结果 视频&#xff1a; ESP32 pro 一、项目说明 欢迎来到复古游戏的世界&#xff01;你是否曾经想要以便携格式重温童年的经典游戏&#xff1f;在这个…

【算法篇】贪心类(1)(笔记)

目录 一、理论基础 1. 大纲 2. 求解步骤 二、Leetcode 题目 1. 分发饼干 2. 摆动序列 3. 最大子序和 4. 买卖股票的最佳时机 II 5. 跳跃游戏 6. 跳跃游戏 II 7. K 次取反后最大化的数组和 8. 加油站 9. 分发糖果 一、理论基础 1. 大纲 2. 求解步骤 将问题分解为…

Oracle实际需要用到但常常被忽略的函数

1、Oracle中nvl()与nvl2()函数 函数nvl(expression1,expression2)根据参数1是否为null返回参数1或参数2的值&#xff1b; 函数nvl2(expression1,expression2,expression3)根据参数1是否为null返回参数2或参数3的值 【函数格式】&#xff1a;nvl(expression1,expression2) 若…

SpringCloud学习:Micrometer链路追踪 + GateWay网关

SpringCloud学习&#xff1a;Micrometer链路追踪 GateWay网关 文章目录 SpringCloud学习&#xff1a;Micrometer链路追踪 GateWay网关1. Micrometer Zipkin&#xff08;分布式链路追踪&#xff09;1. 概述2. 为什么要有链路追踪3. 分布式链路追踪原理4. Zipkin&#xff1a;图…

一个基于Vue3开源免费的可快速开发中后台的框架,方便易用,业务没有瓶颈期!(附地址)

该应用是基于Css媒体查询进行开发,手机、平板、PC均自动适配&#xff0c;增强网站的响应式设计&#xff0c;提高网站的可用性&#xff0c;减少开发成本和维护工作&#xff0c;采用主流技术Vue3、Vite、TypeScript、Gulp、Pinia以及周边的优秀的插件搭建&#xff0c;不用担心自己…