解决IDEA中Maven项目中JSTL标签无效问题

代码如下(忽略编译错误,不影响结果)

最近刚换IDEA用上Maven,之前一直都是用Eclipse。这回踩了个坑,所以跟大家分享一下。

当我准备在IDEA上用Maven创建SSM项目的时候,我发现页面的JSTL标签不生效,EL标签和导入的C标签会直接被输出。

例如上图最后页面显示的是${name},并没有输出我定义的“呵呵”,在pom.xml文件中有jstl的依赖包,但死活不生效。

尝试了很多方法,网上找了很多资料,想起之前用IDEA创建普通web项目的时候,导入C标签会报错,需要手动添加jstl的dtd文件,于是试了一下还是没用。

最后我打开项目中的web.xml文件才发现头信息是2.3版本的,如下图。

可能2.3版本可能isELIgnored默认不是false(这只是我的猜测)所以在jsp页面添添加<%@ page isELIgnored=“false” %>这个命令就jstl就生效了。

但每个jsp页面都要添加这个命令是一件很繁琐的事情,所以把web.xml的头信息更换为更高的版本。

我记得好像是2.4版本就默认设置isELIgnored=false,但版本也不要太高,要对应tomcat的版本,比如4.01版本的就要对应tomcat9.0、3.0版本要对应tomcat7。

相关对应版本可以自己去搜一下,这里不做详细阐述。提供几个web.xml的头信息。

2.4

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 	 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>

2.5

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
</web-app>

3.0

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>

但还会有个问题,那就是每次创建Maven项目都要去修改这个web.xml文件也很繁琐,所以还有个一劳永逸的方法。

通过上图我们可以发现我们用IDEA创建项目的时候,是通过Maven仓库中的maven-archetype-webapp这个jar包创建的,而org.apache.maven.archetypes是这个jar包在仓库中的地址。

把maven-archetype-webapp-1.3.jar解压一个副本出来,然后可以在archetype-resources\src\main\webapp\WEB-INF目录下修改立面的web.xml文件,或者直接删掉也可以,这取决于你的项目是否用得上web.xml这个配置文件。

然后把修改好的web.xml复制,把maven-archetype-webapp-1.3.jar中的web.xml文件删除,再把复制好的文件粘贴进去。

这种方式同样也可以对pom.xml文件进行初始化的配置。

总结

(0)

相关推荐

  • Maven本地仓库的配置以及修改默认.m2仓库位置

    本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库.这样在你下次使用的时候就不需要从远程下载了.如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能是有些jar包的新版本没有在Maven仓库中及时更新. (感觉和网络里面的路由器有点像,你发请求,先在路由器缓存中找,若有就返回:没有,再去服务器下载新的再返回给用户的同时更新路由器本地缓存.) 默认仓

  • 如何将maven项目划分为多个模块

    多模块拆分的必要性 使用Java技术开发的工程项目,无论是数据处理系统还是Web网站,随着项目的不断发展,需求的不断细化与添加,工程项目中的代码越来越多,包结构也越来越复杂这时候工程的进展就会遇到各种问题: (1)不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题,可能在修正问题的时候引入更多的问题. (2)多方面的代码集中在一个整体结构中,新入的开发者很难对整体项目有直观的感受,增加了新手介入开发的成本,需要有一个熟悉整个项目的开发者维护整个

  • maven添加oracle依赖失败问题的处理方法

    由于Oracle授权问题,Maven3不提供oracle JDBC driver 可以到maven中央仓库去下载依赖,网址: http://repo.spring.io/plugins-release/com/oracle/ojdbc6/11.2.0.3/     复制到本地仓库对应目录即可 <!-- oracle --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6&

  • 解决MyEclipse中Maven设置jdk版本jdk1.8报错问题

    今天安装了jdk1.8.tomcat8.和maven3.5.2,弄好后在myeclipse新建了一个maven项目,项目默认是jdk1.5,如图一,我把它改成jdk1.8,项目就报错了,如图二,然后update project后又变成jdk1.5了. 图一: 图二: 解决方法: 打开maven项目的pom.xml文件, 在build节点下加入下面这段代码 ,然后在选中项目右键-->maven4myeclipse-->update project...就能更新为jdk1.8了.如图三,现在项目已

  • Maven项目改为spring boot项目的方法图解

    目录树 •新建Maven项目及步骤 •修改方法 •启动测试 新建Maven项目及步骤 我这里是从创建开始讲,使用的工具是Idea2017版本.如果是已经创建了Maven,想改为spring boot项目的请直接跳到[修改方法] 1.点击右上角的File,出来的列表选择New Object: 2.选择Maven,勾选Create from archetype,选择quickstart 3.输入GroupId与ArtifactId,Version版本号自己看着怎么顺眼怎么改:其中GroupId为包名

  • 浅谈Maven环境隔离应用

    前言 在大大小小的公司中,开发总是多环境的,可能是2个(dev.prod)或者是4个甚至更多(dev.prod.beta.local). 我们需要针对的配置不同环境下的服务器地址或数据库地址或属性参数等等,而Maven的环境隔离就帮我们解决了这实际性的问题,轻松解决完成环境隔离. 什么是Maven环境隔离 顾名思义,Maven环境隔离就是将开发中的环境分隔开,方便进行开发.这个在实际项目中用的还是蛮多的,如果你的项目用的Maven构建但是没用环境隔离,请立即将项目做一下环境隔离,相信我,你会回来

  • 使用Vert.x Maven插件快速创建项目的方法

    本文介绍了使用Vert.x Maven插件快速创建项目的方法,分享给大家,具体如下: 文档地址: https://reactiverse.io/vertx-maven-plugin 已有项目添加该插件 在项目 pom.xml 目录,执行下面的命令即可添加: mvn io.reactiverse:vertx-maven-plugin:1.0.17:setup 执行该命令后,在 pom.xml 中会增加下面的配置: <properties> <vertx.version>3.5.3&l

  • Maven根据不同环境打包不同配置文件的方法

    开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同,打包时经常要手动更改配置文件,更改的少还可以接受,但是如果需要更多个配置文件,手动的方法就显得非常笨重了. 下面介绍一种方法,利用Maven插件来打包不同环境的配置文件.我们用到的是maven-war-plugin这个插件. 首先贴出整个pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.

  • 浅谈Maven 项目中依赖的搜索顺序

    网上有很多关于maven项目中mirror.profile.repository的搜索顺序的文章,说法不一.官方文档并没有找到相关的说明,鉴于此,我抽时间做了一个验证. 依赖仓库的配置方式 maven项目使用的仓库一共有如下几种方式: 中央仓库,这是默认的仓库 镜像仓库,通过 sttings.xml 中的 settings.mirrors.mirror 配置 全局profile仓库,通过 settings.xml 中的 settings.repositories.repository 配置 项目

  • Maven在Java8下如何忽略Javadoc的编译错误详解

    JavaDoc简介And基础知识 (一) Java注释类型 //用于单行注释. /*...*/用于多行注释,从/*开始,到*/结束,不能嵌套. /**...*/则是为支持jdk工具javadoc.exe而特有的注释语句. 说明:javadoc 工具能从java源文件中读取第三种注释,并能识别注释中用@标识的一些特殊变量(见表),制作成Html格式的类说明文档.javadoc不但能对一个 java源文件生成注释文档,而且能对目录和包生成交叉链接的html格式的类说明文档,十分方便. (二)Java

  • java如何使用自己的maven本地仓库详解

    本地仓库 主要是一种缓存,当你使用远程仓库中下载组件后,它下一次会优先从本地进行加载,一般位于USER_HOME/.m2目录下,我们自己也可以建立公用的包,把包发布到本地仓库,自己在其它项目里直接可以用,当然如果希望在任务地方都使用自己的包,需要把它发布到远程仓库中. 像nuget,npm一样maven也是仓库 Jar的maven配置 <dependency> <groupId>javalindday</groupId> <artifactId>jpaDem

  • 使用maven profile指定配置文件打包适用多环境的方法

    开发过程, 我们习惯把数据源配置, 项目常量, 日志配置等基础数据配置写到一个个单独的的文件中. 如jdbc.properties等各种.格式的文件. 如何不频繁修改配置文件, 随时打包不同基础数据配置信息的项目. 1.新建maven项目,   在pom.xml中添加 profile节点信息如下: <profiles> <profile> <!-- 开发环境 --> <id>dev</id> <properties> <envi

随机推荐