在Maven工程中引入JSTL标签库

最近找了个视频学习SSM整合的练习,在引入JSTL的时候卡了我小半天,就是导包后不报错运行时候就报错。报的错就是The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application。找了一些资料,说的不是很清楚,倒不是说人家说的不对,而是没说清具体该怎样做。比如哪个文件该放在哪里(就因为这个我瞎调了好几个小时)。
  这里放一张错误的图片,看看是不是似曾相识:
在Maven工程中引入JSTL标签库_第1张图片

1.导包

在pom.xml中添加jstl1.2.jar的依赖。
在Maven工程中引入JSTL标签库_第2张图片


<dependency>
	<groupId>jstlgroupId>
	<artifactId>jstlartifactId>
	<version>1.2version>
dependency>

导包这里我直接到的jstl1.2版本的。因为在jstl1.2中直接就有standard.jar。为啥这么说,因为我把jstl1.2.jar下了下来,解压看了一下,发现standard.jar已经在jstl1.2.jar中,这里给大家分享一下。先看一下下面这张图。我们来看一下standard文件夹的位置。
在Maven工程中引入JSTL标签库_第3张图片
  接下来以standard1.1.2.jar为例,我们看一下。为什么看这个版本,因为它的版本与jstl1.1.2.jar版本是对应着的。而且要使用这个版本就要把这两个jar包都引进项目中。我们看一下下面的对比图就知道咋回事了。
  jstl1.1.2.jar的包结构:
jstl1.1.2.jar
  jstl1.2.jar的包结构:
这里写图片描述
  所以jstl1.1.2需要这样引入:


<dependency>
	<groupId>jstlgroupId>
	<artifactId>jstlartifactId>
	<version>1.1.2version>
dependency>
<dependency>
	<groupId>taglibsgroupId>
	<artifactId>standardartifactId>
	<version>1.1.2version>
dependency>

导入结果跟jstl1.2.jar基本就一样了,只不过1.2是一个jar。1.1.2是两个jar。
在Maven工程中引入JSTL标签库_第4张图片

2.解压jar包,将后缀为.tld的文件,放到自己项目的WEB-INF文件夹下

使用jstl1.1.2.jar的就直接解压standard-1.1.2.jar,然后进到解压出来文件的META-INF文件夹中:
在Maven工程中引入JSTL标签库_第5张图片
  使用jstl1.2.jar的,直接解压它就行,然后进到解压出来文件的META-INF文件夹中:
在Maven工程中引入JSTL标签库_第6张图片
  
  这里以c标签为例,直接复制c.tld,放到项目的WEB-INF文件夹中(用到啥了就复制进去就行了),基本就是这个样子:
在Maven工程中引入JSTL标签库_第7张图片
  到这一步,我的项目就可以运行起来了,而且也不用配置web.xml。

3.配置web.xml(没深究,反正不配也好使)

配置如下,可以参考菜鸟教程。可能我用的少,没感觉出来有啥用,因为在上一步我的例子就能运行了。

<jsp-config>
	<taglib>
		<taglib-uri>http://java.sun.com/jsp/jstl/coretaglib-uri>
		<taglib-location>/WEB-INF/c.tldtaglib-location>
	taglib>
jsp-config>

总结

总感觉肯定有新的配置方式,因为这个jar实在是太老了,但没找到靠谱的。

你可能感兴趣的:(JavaWeb框架练习)