Javaweb篇章-学习Servlet报错:Class web.ServletDemo1 is not a Servlet

Class web.ServletDemo1 is not a Servlet

报错的时候在web上显示的错误信息: 

控制台上显示的错误信息如下:

pom.xml中的Servlet的原始文件是下面这样的:

<!--    导入servelt的坐标-->
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>

 修改错误的方法:加入scop范围就可以了

<!--    导入servelt的坐标-->
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

知识点:对scope进行一个总结:

  • scope标签的值的种类:
  • compile:默认值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包时也要包含进去。
  • test:该依赖仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包。
  • runtime:该依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。
  • provided:该依赖在打包的时候可以不用包含进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude(排除)操作。
  • system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

依赖范围

编译

测试

运行

例子

Complie

Y

Y

Y

Logback

test

Y

Junit

provided

Y

Y

Servlet-api

runtime

Y

Y

Jbdc驱动

system

Y

Y

存储本地的jar包

import

引入DependencyManagement

猜你喜欢

转载自blog.csdn.net/m0_74890428/article/details/131604303