SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41.

2022-07-25,,,,

一日一句:哪有小孩天天哭,哪有努力天天输

今天终于解决了一个困扰我三天的问题,在学习springmvc的时候在idea配置外置tomcat,然后代码部署,还有tomcat配置打包都没有问题,翻了十几页博客改了十几种方法都没有成功,一直访问http状态404,搞得我差点裂开了。

我用的工具tomcat 9.0.41和 idea 2020.3

我的报错解决方案

我的问题就是直接把Application context中有个默认地址的全路径删掉,server哪里访问的url直接写成http://localhost:8081/即可访问

总结我今晚测试访问页面成功所有的方法

问题一

首先先来第一个图,就是如何打开tomcat配置的首页,看tomcat服务器是否正常打包,如果tomcat不能正常打包,去配好再做下面的步骤

问题二

按照我图中打开,找到你自己所要运行的项目,看WEB-INF下面是否有lib目录,如果没有的话,新建一个lib目录,然后选择lib目录,点击那个加号,选择第一个就会把里面的包全部导进lib目录了

问题三

Deploy at the server startup这里一定要选好自己要运行的项目,需要切换项目的时候点击-移除掉这个项目,再点击+选择你所要的运行的项目

问题四

首先先来第二个图,就是打开tomcat配置的首页
图中第一点url地址:我看到有博客说要配置下面第二个图Application context中有个默认地址的全路径,其实我刚刚测试配置了全路径反而报了404,没有配置直接访问localhost:8081/却成功了。

图中第二个点,我看到有的博客说jre的路径要在jdk下的jre路径,后来我分别测试了默认的路径和jdk下jre的路径,发现都是可以访问到页面的,没有报404。

问题五

反正我看到大多数博客都说jsp和html文件不能放到WEB-INF目录下面,如果反正我的是直接建一个jsp文件放到里面的没毛病访问到了,你们我就不知道了哈,你们可以测试测试

问题六

你们resources下的xml文件,前后缀配置这里哪个/不要漏啊,漏了的话,也是访问不到页面的,谨记!!!

问题七

我这里把我的web.xml文件和resources中的xml文件放上来,有很多人写错的,你们复制去改下自己的路径名,测试下看行不行

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">

    <!--1.注册servlet-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->
        <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>

    <!--所有请求都会被springmvc拦截 -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


</web-app>

springmvc-server.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
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
    <context:component-scan base-package="com.kuang.controller"/>
    <!-- 让Spring MVC不处理静态资源 .css .js .html .mp3-->
    <mvc:default-servlet-handler />
    <mvc:annotation-driven />

    <!--
    支持mvc注解驱动
        在spring中一般采用@RequestMapping注解来完成映射关系
        要想使@RequestMapping注解生效
        必须向上下文中注册DefaultAnnotationHandlerMapping
        和一个AnnotationMethodHandlerAdapter实例
        这两个实例分别在类级别和方法级别处理。
        而annotation-driven配置帮助我们自动完成上述两个实例的注入。
     -->
    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

问题八

有的测试tomcat是否配置成功的时候默认端口是8080,但是没有关闭tomcat,导致了idea起tomcat这里的默认端口也是8080,端口占用,所以无法访问,我这里把tomcat默认端口改成8081避免端口占用

本文地址:https://blog.csdn.net/weixin_44165280/article/details/112253489

《SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41..doc》

下载本文的Word格式文档,以方便收藏与打印。