今天学了JSTL和EL,替换了以前for循环,感觉代码越来越少了,十分方便。JSTL和EL密不可分。

一、什么是EL表达式?

什么是EL
EL即Expression Language(表达式语言)
EL的功能
替代JSP页面中的复杂代码
EL的语法
${ EL exprission }
${ bean.name } 或 ${ bean['name'] }

二、EL的特点

自动转换类型

EL得到某个数据时可以自动转换类型

对于类型的限制更加宽松
使用简单
相比较在JSP中嵌入Java代码,EL应用更简单
 
三、EL的语法
EL语法
以“${”作为开始,以“}”作为结束
直接使用变量名获取值$
${  username }
变量属性范围名称
 
四、EL中的运算符和EL隐式对象
EL运算符
运算符”[ ]”
运算符”.”
作用
获取对象属性 获取对象集合中的数据
在Session中保存了一个(list)集合users

什么是JSTL?

使用JSTL实现JSP页面中逻辑处理
什么是JSTL
JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
 JSTL通常会与EL表达式合作实现JSP页面的编码

二、JSTL的环境搭建

使用JSTL的步骤
创建Web工程,选择JSTL1.1(目前使用的版本不需要配置,高版本集合在一起)
在JSP页面添加taglib指令
使用JSTL标签

JSTL标准标签库介绍

通用标签

条件标签

迭代标签

JSTL和EL案例

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; session.setAttribute("username","小明"); List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d"); request.setAttribute("aa",list); Map map = new HashMap();
map.put("name","admin");
map.put("pwd","adminpassword"); request.setAttribute("map",map); session.setAttribute("map",map); application.setAttribute("c","123456");
application.setAttribute("c","789"); entity.User user = new entity.User();
user.setUsername("aa");
user.setPassword("bb");
session.setAttribute("user",user); //request.getParameter();//------param:获取表单项
//request.getParameterValues();//------paramValues:获取多个表单项
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> </head> <body>
<!--
注意:
EL表达式默认范围:request
如果没有确定范围;那么EL表达式就会按照范围的顺序按个进行查找:request-session-page-appplication
直到遍历JSP9大内置对象找到相对应的值为止
-->
以前的方式: <%=session.getAttribute("username") %><br/>
EL表达式:${sessionScope.username }<br/>
${applicationScope.c }<br/>
EL表达式在request取出集合:${aa}<br/>
取出map集合:${map["name"] }<br/>
${map.pwd }<br/>
EL取出session中map集合:${sessionScope.map.name }<br/>
${sessionScope.user.username } <form action="success.jsp" method="post">
username:<input type="text" name="username" /><br/>
password:<input type="password" name="password" /><br/>
love:<input type="checkbox" name="love" value="a" />吃饭<br/>
<input type="checkbox" name="love" value="b" />睡觉<br/>
<input type="checkbox" name="love" value="c" />敲代码<br/>
<input type="submit" />
</form>
</body>
</html>

处理页

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String name = request.getParameter("username");
String[] love = request.getParameterValues("love"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'success.jsp' starting page</title> </head>
<!--
JSTL的出现是为了替代以往下载jsp页面中的java逻辑判断和选择判断语句
EL表达式的出现是为了替代以往的表达式
JSTL一般与EL表达式合作开发动态的jsp页面
-->
<%
//if(条件)
%>
<body>
<p>
<c:set var="abc" value="${99+1}" scope="session" />
输出值:<c:out value="${abc}"/>
删除值:<c:remove var="abc" scope="session" />
删除之后:<c:out value="${abc}" default="null" />
</p>
<c:if test="${1==1}" var="if1" >
是真的
</c:if>
<!--
empty:判断当前值是否为空null
如果为null则返回true
否则返回false
-->
<c:if test="${not empty null }" var="if2"></c:if>
<p>
输出if1结果:<c:out value="${if1}" /><br/>
输出if2结果:<c:out value="${if2}" /><br/>
</p>
用户名:${param.username }<br>
密 码:${param.password }<br>
love:${paramValues.love[0] },${paramValues.love[1] },${paramValues.love[2] }
长度:${fn:length(paramValues.love) } <div style="margin-top: 50px">
<%
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e"); request.setAttribute("list",list); %>
<table border="1">
<c:forEach items="${list}" var="m" varStatus="statu">
<tr><td>${m }=====${statu.index }</td></tr>
</c:forEach>
</table>
</div> </body>
</html>

最新文章

  1. c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题
  2. cs11_c++_lab3
  3. 制作图片边框:《CSS3 Border-image》
  4. {Reship}{ListView}C# ListView用法详解
  5. OpenCV学习笔记——图像的腐蚀与膨胀
  6. 使用 Fluent API 配置/映射属性和类型
  7. 在Qt中使用AnyCAD三维建模控件
  8. JQuery要点(一)
  9. (原+转)ubuntu中删除文件夹
  10. Qt 打包发布 不能动态打开图片显示问题
  11. 表格单元格td设置宽度无效的解决办法 .
  12. Hadoop之Hive篇
  13. java中文拼音字母排序
  14. Error: Invoke-customs are only supported starting with Android O (--min-api 26)
  15. Beta冲刺 6
  16. mybatis逆向工程,实现join多表查询,避免多表相同字段名的陷阱
  17. python3对于时间的处理
  18. JavaScript 模拟 HashMap例子
  19. 守护进程的创建(syslog函数)
  20. 使用Hexo和Github Pages快速搭建个人博客

热门文章

  1. python 简单爬取今日头条热点新闻(一)
  2. N天学习一个linux命令之rsync
  3. JVM内存管理和垃圾回收机制介绍
  4. Maven: java.lang.ClassNotFoundException: org.eclipse.aether.spi.connector.Transfer$State
  5. CF #319 div 2 E
  6. 【转】shell中的内建命令, 函数和外部命令
  7. Java系列之JNDI
  8. 您必须先调用“WebSecurity.InitializeDatabaseConnection”方法。。。
  9. luogu1514 引水入城
  10. SuperSocketClientEngine