通过jsp-api体验jar包之间的冲突

我们在index.jsp写一个EL表达式:${pageContext.request.contextPath },可以看到,在写到.request时是没有提示的,而在写到.contextPath时提示又有了,这是因为pageContext是属于jsp-api.jar的,我们没有把这个依赖加进来,所以没有提示,request是属于servlet-api.jar的,它的运行时环境(也就是依赖)我们已经导进来了,所以它后面有提示
所以我们要把jsp-api.jar的依赖也导入到pom.xml

<dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.1.3-b06version>
            <scope>providedscope>
        dependency>

这样就可以有提示也不报错了
这里说个小技巧:可以看到对于这种在项目中提示有错误
通过jsp-api体验jar包之间的冲突_第1张图片
但是打开jsp页面后又什么都没有的错误
通过jsp-api体验jar包之间的冲突_第2张图片
我们可以
这里写图片描述
在上图中Quick Access中输入Problems
通过jsp-api体验jar包之间的冲突_第3张图片
这样我们就可以看到错误了

如果我们将下面代码中的provided改为compile,可能会出现很严重的问题,报一个空指针异常java.lang.NullPointerException,(为什么说可能呢?在我的电脑上测试时我怎么弄也没把这个异常弄出来,但是在学习的视频里是会报异常的………)这个是因为你导入的jar包冲突导致的,因为有的jar包Tomcat服务器上已经有了的,但是你又使用compile依赖范围把重复的jar包部署上去了,所以会报错

<dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.1.3-b06version>
            <scope>providedscope>
        dependency>

你可能感兴趣的:(Maven学习)