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表达式无法解析的情况,可参考第一条。

最新文章

  1. remove name=&quot;ProxyModule“会导致重复执行
  2. JS函数节流
  3. ConterReplaceBehavior.class.php模板内容替换,如__PUBLIC__
  4. C语言 百炼成钢6
  5. 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项
  6. shell if语句
  7. cocos2d-x3.0 ListView
  8. TatukGIS - GisDefs - ChangeDir 函数
  9. Flex移动应用程序开发的技巧和窍门(五)
  10. 为 VUE 项目添加 PWA 解决发布后刷新报错问题
  11. [Swift]LeetCode145. 二叉树的后序遍历 | Binary Tree Postorder Traversal
  12. iOS---------- MBProgressHUD (1.0.0)的变动
  13. poj 1386 Play on Words门上的单词【欧拉回路&amp;&amp;并查集】
  14. 在web.xml中通过contextConfigLocation配置spring
  15. ActiveMQ consumer按顺序处理消息
  16. 愛與痛的邊緣--IPA--粤语
  17. java运行时异常与一般异常有何异同?
  18. 小刘的机器学习---SVM
  19. windows 环境下python 安装 pypcap 并用pyinstaller打包到exe,解决DLL 加载失败。
  20. tortoise svn 请求的名称有效,但是找不到请求的类型的数据

热门文章

  1. 使用matlab生成sine波mif文件
  2. 一个web应用的诞生(1)--初识flask
  3. 基于Centos7的autobahn-python+crossbar的环境搭建
  4. POJ - 3268 单源最短路
  5. nyoj1204 魔法少女 线性DP
  6. React Native填坑之旅 -- FlatList
  7. Java线程和守护进程
  8. GIT 查看 删除 添加远程库
  9. 【前端】用百度BAE和express部署自己的node后台
  10. R语言︱数据规范化、归一化