正确配置Jstl的Maven依赖

来源:互联网 发布:mac启动windows 编辑:程序博客网 时间:2024/06/05 08:50

在jsp 中使用el表达式都好几年了,原来都是将需要的jar直接放在WEB-INF/lib目录下,最近转向maven构建。一下子各种问题。
detail.jsp 的内容如下:
<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ page isELIgnored ="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="${request.reportDataKey}"/><br/>
运行时提示:
ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
网上搜索一番,
说是jstl 需要手动引入,于是在pom.xml中添加依赖如下:

    <dependency>            <groupId>javax.servlet.jsp.jstl</groupId>            <artifactId>jstl-api</artifactId>            <version>1.2</version>    </dependency>

再次运行:错误如下:
java.lang.NoClassDefFoundError: org/apache/taglibs/standard/tag/rt/core/Out
刚才我们只是导入了jstl-api,而没有导入jstl的实现,所以再导入jstl 的实现。去mvnrepository上找jstl 的实现,基本上有两个版本,一个是glassfish 的jstl-impl, 另一个是apache的taglibs-standard-impl,一直犹豫不决该用谁,最后在stackoverflow.com/a/25374024/1443527上发现网友分享了他实现的经验,他用的是glassfish版本,所以我们也引人这个。由于tomcat7是兼容j2ee 3.0规范的,所以我们将jstl 依赖的东西给去除掉,防止和tomcat自身的servlet jar包冲突,改正后的依赖为

 <dependency>            <groupId>javax.servlet.jsp.jstl</groupId>            <artifactId>jstl-api</artifactId>            <version>1.2</version>            <exclusions>                <exclusion>                    <groupId>javax.servlet</groupId>                    <artifactId>servlet-api</artifactId>                </exclusion>                <exclusion>                    <groupId>javax.servlet.jsp</groupId>                    <artifactId>jsp-api</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.glassfish.web</groupId>            <artifactId>jstl-impl</artifactId>            <version>1.2</version>            <exclusions>                <exclusion>                    <groupId>javax.servlet</groupId>                    <artifactId>servlet-api</artifactId>                </exclusion>                <exclusion>                    <groupId>javax.servlet.jsp</groupId>                    <artifactId>jsp-api</artifactId>                </exclusion>                <exclusion>                    <groupId>javax.servlet.jsp.jstl</groupId>                    <artifactId>jstl-api</artifactId>                </exclusion>            </exclusions>        </dependency>

哈哈,运行正确。

顺便说一下jstl-impl-1.2.jar 和taglibs-standard-impl-1.2.1.jar 的区别,这两个包的内容很相似,后者应该是前者的一个再打包,因为Apache的taglibs工程从2009年以后一直处于停止状态。

如果你要引人后者,那么依赖应该为:

    <dependency>      <groupId>org.apache.taglibs</groupId>      <artifactId>taglibs-standard-spec</artifactId>      <version>1.2.1</version>    </dependency>    <dependency>      <groupId>org.apache.taglibs</groupId>      <artifactId>taglibs-standard-impl</artifactId>      <version>1.2.1</version>    </dependency>

顺便提一下:你知道web.xml配置中的url-pattern的'/''/*'的区别吗?
哎,基本功不扎实,这个问题折腾了好久。'/'表示该项目的所有请求路径;'/*'表示只能有一级子路径,它匹配'/a.jsp'但是不匹配'/jsp/a.jsp'


相关文章链接:

http://blog.csdn.net/qq_27760433/article/d

http://blog.csdn.net/daolingren/article/details/51112102 

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 踢完球脚后跟疼怎么办 备孕有压力怎么办 弄娃睡眠不足怎么办 精力不旺盛怎么办 性神经敏感怎么办 青春期高血压怎么办 老是精力不足怎么办 为什么精力不足怎么办 肾虚要怎么办 神疲乏力怎么办 精力差怎么办 高中生睡不好怎么办 跑步后头晕眼花怎么办 减肥后头晕怎么办 干什么都没意思怎么办 母猪体力不行怎么办 母猪太瘦怎么办 运动会就头晕.怎么办 心悸心慌怎么办 宝宝运动能力差怎么办 运动后头晕眼花怎么办 体力不好生孩子怎么办 孩子有气无力的怎么办 小孩体力不够怎么办 跑步后头晕怎么办 运动过量了怎么办 运动后头疼怎么办 减肥头晕无力怎么办 减肥期间头晕怎么办 肚子被辣痛了怎么办 耐力差怎么办 天热会头晕怎么办呢 运动完头痛怎么办 剧烈运动头晕怎么办 健身后头晕怎么办 小腿肌肉太大怎么办 跑完步干呕怎么办 跑完步后吐了怎么办 不爱运动怎么办 训练太累怎么办 跑完步休克怎么办