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

一日一句:哪有小孩天天哭,哪有努力天天输
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第1张图片
今天终于解决了一个困扰我三天的问题,在学习springmvc的时候在idea配置外置tomcat,然后代码部署,还有tomcat配置打包都没有问题,翻了十几页博客改了十几种方法都没有成功,一直访问http状态404,搞得我差点裂开了。

我用的工具tomcat 9.0.41和 idea 2020.3

我的报错解决方案

我的问题就是直接把Application context中有个默认地址的全路径删掉,server哪里访问的url直接写成http://localhost:8081/即可访问
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第2张图片

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

问题一

首先先来第一个图,就是如何打开tomcat配置的首页,看tomcat服务器是否正常打包,如果tomcat不能正常打包,去配好再做下面的步骤
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第3张图片

问题二

按照我图中打开,找到你自己所要运行的项目,看WEB-INF下面是否有lib目录,如果没有的话,新建一个lib目录,然后选择lib目录,点击那个加号,选择第一个就会把里面的包全部导进lib目录了
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第4张图片
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第5张图片

问题三

Deploy at the server startup这里一定要选好自己要运行的项目,需要切换项目的时候点击-移除掉这个项目,再点击+选择你所要的运行的项目
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第6张图片

问题四

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

图中第二个点,我看到有的博客说jre的路径要在jdk下的jre路径,后来我分别测试了默认的路径和jdk下jre的路径,发现都是可以访问到页面的,没有报404。
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第7张图片
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第8张图片

问题五

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

问题六

你们resources下的xml文件,前后缀配置这里哪个/不要漏啊,漏了的话,也是访问不到页面的,谨记!!!
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第9张图片

问题七

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

web.xml文件


<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">

    
    <servlet>
        <servlet-name>SpringMVCservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:springmvc-servlet.xmlparam-value>
        init-param>
        
        <load-on-startup>1load-on-startup>
    servlet>

    
    <servlet-mapping>
        <servlet-name>SpringMVCservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>


web-app>

springmvc-server.xml文件


<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">

    
    <context:component-scan base-package="com.kuang.controller"/>
    
    <mvc:default-servlet-handler />
    <mvc: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避免端口占用
SpringMVC入门案例访问页面报错404源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示,Tomcat9.0.41._第10张图片

你可能感兴趣的:(笔记总结,java,servlet,tomcat,springmvc)