关于jstl的使用
1、jsp中el表达式无法被解析
使用jstl标签的时候,发现el表达式无法被解析,后来查阅资料发现jsp中需要添加<%@page isELIgnored="false" %>,表示是否忽略el表达式,当然是false,不允许。

但是归结到底,罪魁祸首还是在idea编译器,他生成的web.xml竟然是2.3版本的,在没有添加<%@page isELIgnored="false" %>的情况下,更改web.xml的版本也是一个办法
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
如上将web版本改成2.3以上即可。因为2.3本身不默认支持el表达式解析。
2.jstl标签属性整理:
核心标签:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>也是最常用的

c:forEach 的 varStatus属性解析
varStatus属性 类型:String 描述:循环的状态信息,可以取值index\count\first\last\current
不可以使用EL表达式我们常使用<c:forEach>标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。varStatus属性常用参数如下:
current:当前这次迭代的(集合中的)项
index:当前这次迭代从 0 开始的迭代计数
count:当前这次迭代从 1 开始的迭代计数
first:用来表明当前这轮迭代是否为第一次迭代的标志,返回true/false
last:用来表明当前这轮迭代是否为最后一次迭代的标志,返回true/false
格式化标签:<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>用于格式化时间,日期和数字等信息

标准函数:<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 通用字符串处理函数

3、jstl的使用
3.1如何通过servlet将数据传到jsp页面呢?
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List mlist = new ArrayList();
mlist.add("test1");
mlist.add("test2");
mlist.add("test3");
mlist.add("test4");
mlist.add("test5");
req.setAttribute("mlist",mlist);
// resp.getWriter().append(((List<String>)req.getAttribute("mlist")).get(1));
Map<String ,String> mMap = new HashMap<String, String>();
mMap.put("key1","value1");
mMap.put("key2","value2");
mMap.put("key3","value3");
mMap.put("key4","value4");
req.setAttribute("map",mMap);
req.getRequestDispatcher("/").forward(req,resp);
}
主要使用req.setAttribute(key,value) 设置请求参数用于jsp页面展示,然后使用req.getRequestDispatcher("/").forward(req,resp);转发请求将内容提交到jsp页面。注意:此处不能使用resp.sendRedirect("/");因为使用响应重定向转发请求的话,并不携带当前servlet数据,只是单纯的请求转发,那样jsp页面无法收到request的数据。
- forward:请求转发,也就是将A向B请求数据,B直接将A的请求转发给C。
- redirect:请求重定向,A向B请求数据,B告诉A应该找C,那么A重新向C发起请求。
对比图:(左:请求转发,右:请求重定向)

3.2通过jstl展示
<ul>
<li>list方式</li>
<c:forEach items="${mlist}" var="l" varStatus="vs">
<li style="list-style: none">${l}=>${vs.first}=>${vs.count}=>${vs.index}</li>
</c:forEach> <li>map方式</li>
<c:forEach items="${map}" var="m" varStatus="vs">
<li style="list-style: none">${m.key}=>${m.value}</li>
</c:forEach>
</ul>
结果展示:

此处如果出现el表达式无法解析的情况,可参考第一条。
关于jstl的使用的更多相关文章
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- JSTL标签 参考手册
前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多 ...
- JavaWeb_day08_EL JSTL
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day08 EL JSTL EL表达式 语法:${} ...
- java web学习总结(三十) -------------------JSTL表达式
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- [Java] JSP笔记 - EL、JSTL 常用标签
一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMASc ...
- JSTL 操作符
el表达式的取值默认顺序: pageScope requestScope sessionScope applicationScope 结构,采用.导航,也称为存取器 ${us ...
- JSP页面JSTL提供的函数标签EL表达式操作字符串的方法
首先在jsp页面导入标签<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&quo ...
- JSTL标签库
JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大 ...
- 重温JSP学习笔记--与日期数字格式化有关的jstl标签库
上一篇笔记写的主要是JSTL的core标签库,如果想对一些数字或者日期做一些操作或者在网页上显示指定格式的数字或日期,jstl还提供了另一个fmt标签库,这里简单介绍一下: 第一步,导入标签库: &l ...
- 重温JSP学习笔记--JSTL标签库
以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...
随机推荐
- PKUWC 2018游记
PKUWC 2018游记 标签: Day\([-inf,0)\) 停课之后一直各种浪的飞起,考试rank20+,不搞颓但是学习很没有状态.还经常带着耳机被谢总抓了好几次,然后被拉过去谈话了好几次... ...
- 01 深入理解JVM的内存区域
先来看看JVM运行时候的内存区域,如下图: 大多数 JVM 将内存区域划分为 Heap(堆).方法区.Stack(栈).本地方法栈.程序计数器.其中 Heap 和 方法区 是线程共享的,Stack.本 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少分配率, 最重要的规则,缩短对象的生命周期,减少对象层次的深度,减少对象之间的引用,避免钉住对象(Pinning)
减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少GC回收时的压力,同时降低了内存碎片与CPU的使用量.你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突. 你需要在设计对象时仔细检 ...
- win10外接键盘失灵
故障描述:笔记本外接的键盘突然之间就失灵,键盘的灯不亮,无法输入 处理方程: 1. 我的电脑右击--> 管理 --> 设备管理器(开始失灵时,键盘下的HID Keyboard Device ...
- Eclipse 安装 SVN 插件的两种方法
eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 使用eclipse 里Help菜单的“Install New Software”,通过 ...
- Python实现二分查找
老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...
- HZAU 1199: Little Red Riding Hood 01背包
题目链接:1199: Little Red Riding Hood 思路:dp(i)表示前i朵花能取得的最大价值,每一朵花有两种选择,摘与不摘,摘了第i朵花后第i-k到i+k的花全部枯萎,那么摘的话d ...
- 总结MySQL大数据量下如何进行优化
写在建库前: 在确定数据库业务后.建立数据库表格时,就应对一些常见问题有所考虑,以避免在数据增长一段时间后再做应对,可能造成时间及维护成本增加: 数据的月增量,年增量 数据的快速增长点 是否需要触发器 ...
- 用户态Linux内核
User Mode Linux 是可以在用户态启动的 Linux版本,最新版linux内核已提供了支持.这使我们能在类似 OpenVZ 虚拟化技术的系统上,使用最新的 Linux 内核:并且可以在非 ...
- Jetty添加Filter过滤器
1.Jetty嵌入到Spring项目 try { Server server = new Server(8080); WebAppContext context = new WebAppContext ...