EL表达式与其作用
- Expression Language(表达式语言),目的是代替JSP中复杂代码
- EL表达式语法: ${变量名}
- 作用: 用于得到变量中的数据
例:在Servlet中将数据存入到request作用域中,转发到目的页面:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.获取数据
String name = (String) request.getParameter("name");
String age = (String) request.getParameter("age");
//保存在request中
request.setAttribute("name", name);
request.setAttribute("age", age);
//转发页面
request.getRequestDispatcher("/2.jsp").forward(request, response);
}
在目的页面中利用EL表达式可以获取到数据:
<body>
姓名:${name}<br>
年龄:${age}<br>
</body>
JSTL
- JSP标准标签库(JavaServerPages Standard Tag Library)
- JSTL与EL的关系 : 两者通常合作实现JSP页面编码
JSTL开发准备
- 在JSP页面中添加taglib指令: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- 使用JSTL需要导入jstl-1.2.jar
为什么要是用JSTL?
- 1、在JSP页面中不建议直接书写java代码(EL表达式和JSTL便签结合使用,可以减少JSP中嵌入的Java代码,有利于程序的维护和扩展)
- 2、EL表达式虽然可以解决“不用书写java代码”的问题,但是对于复杂的数据(如数组,集合等)的取值会很麻烦
- 3、使用JSTL标签配合EL表达式能够很好的解决复杂类型数据的问题,简化代码书写
JSTL 常用标签
通用标签: set out remove
set标签: 将值保存在范围为scope的变量variable中, scope可选的四个值为: request,
<c:set var="username" value="张三" scope=" scope " />
out标签: 将结果输出显示
<c:out value="value"/>
remove标签: 删除指定域内数据
<c:remove var="username" scope="session"/>
条件标签: if choose
if标签: 判断test中的值,如果为true,执行标签中的内容
<c:if test="${age == 12}">
<!--条件为真时要执行的内容-->
</c:if>
choose标签: 功能同java 中的if...else... ,需要同when和otherwise一起使用
<c:choose>
<c:when test="${age==12}">
条件为真时执行
</c:when>
<c:otherwise>
条件为假时
</c:otherwise>
</c:choose>
迭代标签: forEach 用于迭代集合
在Servlet中传送了一个保存了数据的list集合,在JSP中用forEach标签取出数据:
<c:forEach items="${lists}" var="Map">
${Map.shopName} ${Map.address} ${Map.price}
</c:forEach>