JSP Expression Language与Java Server Pages Standard Tag Library
介绍表达式语言(Expression Language)和JSP标准标签库(Java Sever Pages Standard Tag Libray),在Java Server Pages页面之中, 可以显示逻辑,由于一般页面之中会夹杂很多HTML与Java的代码会给开发维护人员造成困难,这时可以使用EL来访问和处理应用程序数据,减少了Java的代码块使用。
EL(Expression Language)
EL是JSP2.0规范之中的语言,基本语法和PHP代码风格相似,如:
1 | ${code} |
EL语句中的表达式会被直接显示到浏览器中进行显示,可通过isLIgnored属性来查看是否支持EL的表达式,当返回false时即JSP可以使用EL表达式,如isELIgnored属性微true时则JSP页面不能使用EL表达式输出,但会将原有EL表达式转换为字符串字符串进行输出。
错误处理机制
Expression Language中存在一个对开发人员非常友好的错误处理机制,那就是当Java Server Pages页面中Expression Language语法是不会报错的,如果出错则在Java Server Pages中不会出现。则不会像Eclipse web内置服务器中启动时的红色状态提醒,相比只想Expression Language简直对开发人员非常友好。
EL 常量与操作符
常量
Expression Language与其他开发语言一样,常量中包含布尔、整数、浮点数、字符串以及NULL等,其在Java Server Pages页面中可以通过Expression Language语法进行定义如:
1 | ${"Hello,world!"} |
数组
在Java Server pages中,可以使用Expression Language来去除数组中的元素,可通过:
1 | ${array[0]} |
Code
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> |
运算符
Expression Language与通常的开发语言一样,可通过el进行运算符进行计算:
算数运算符
| ID | DA | FA |
|---|---|---|
| + | 加法 | ${1+1} |
| - | 减法 | ${2-1} |
| × | 乘法 | ${1*2} |
| / | 除法 | ${1/2} |
| % | 求余 | ${1%2} |
关系运算符
| ID | DA | FA |
|---|---|---|
| == | 等于 | eq |
| != | 不等于 | ne |
| < | 小于 | lt |
| > | 大于 | gt |
| <= | 小于或等于 | le |
| >= | 大于或等于 | ge |
逻辑运算符
| ID | DA | FA |
|---|---|---|
| && | 逻辑与 | and |
| ll | 逻辑或 | or |
| ! | 逻辑非 | not |
隐含对象
在Java Server Pages Expression Language隐含对象共有11个,而常用的隐含对象则有:```pageScope、requestScope、sessionScope、applicationScope、param和param Values。
作用范围
通常,常用的Expression Language的隐含对象分别微:pageScope、requestScope、sessionScope、applicationScope,分别可以对Java Server Pages获取内置对象pageContext、request、session、application中的数据。
param
param对象可用于获取请求参数值,本书主要分为NewFile.jsp和login.jsp,NewFile.jsp用于提交,login.jsp主要用于获取NewFile.jsp中的值。
NewFile.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> |
login.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
pageContext
pageContext即页面上下文对象,可用于访问Java Server Pages中内置对象中的```request、response、out、session、exception、page、servletContext,获取相关的属性。
| ID | DA | FA |
|---|---|---|
| pageContext.request.serverPort | 当前端口 | request |
| pageContext.response.contentType | 页面编码 | response |
| pageContext.out.bufferSize | 访问out对象 | out |
| pageContext.session.maxInactiveInterval | 访问session 对象 | session |
| pageContext.exception.message | 访问exception 对象 | exception |
| pageContext.servletContext.contextPath | 当前工作目录 | servletContext |
JSTL (Java Server Pages Standard Tag Library)
JSTL是Sun公司进行制定的规范,由Apache Jarkarta小组进行负责并实现,JSTL由标准标签库由五个不同功能的标签库所组成。
<c:out>
<c:out>标签可以用来显示一个过大是的结果,与<%= %>作用相似。,在Java Server Pages Stajdard Tag Library<c:out>由如下属性:
| ID | DA | FA |
|---|---|---|
| value | 输出内容 | |
| default | 默认输出值 | |
| escapeXml | 是否忽略xml特殊字符 |
使用JSTL 输出文字
添加环境
在编写JSTL(Java Server Pages Standard Tag Library)时,可使用Tomcat或直接使用语法进行引用,本书仅使用第二种进行演示,以下语法主要插入在第二行之中:
1 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
如:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
value
value在Java Server Pages Standard Tag Library中可以输出指定的内容,如:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
default
在Java Server Pages Standard Tag Library中的default主要用于当value中值不存在时,就会输出default中的数据,即默认输出值:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
<c:set> 与 <c:remove> 即赋值与删除赋值
<c:set>主要在Java Server Pages Standard Tag Library中主要用于设置作用域变量,也可设置JavaBean属性:
赋值
将value 赋值给变量Name,其主要通过<c:set>进行赋值,之后${}进行获取:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
其主要相当于Java中的:
1 | <% session.setAttribute("Name","sif"); %> |
删除赋值 (<c:remove>)
<c:remove>主要可以进行删除某个变量,可以写为:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
流程控制标签
<c:if> / <c:else>
在Java Server Pages Standard Tag Library中,可以使用<c:if>来实现if语句,其中条件表达式可以是EL、JSP等。如果满足则执行<c:if>中的code,如果不满足则会使用<c:esle>中的code,但这也只仅仅是给想法,<c:else> 不在JSTL中存在。
如果像实现在条件成立时执行一块code,不成立时执行的code,则可以使用:<c:choose>、<c:when>以及<c:otherwise>标签,格式如下:
1 | <c:choose> |
if……if……else
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
循环标签
<c:forEach>
<c:forEach>标签可以用于在Java Server Pages Standard Tag Library中实现for循环。
1 | <%@ page language="java" import="java.util.*" |
其他标签
<e:forTokens>
<e:forTokens>标签主要用于分割字符串,其主要可通过":"来实现字符串的分割:
1 | <c:forTokens items="one:two:three" delims=":" var="name"> |
URL标签
在Java Server Pages Standard Tag Library中,主要提供来三种URL操作的相关标签,分别为<c:url>、<c:redirect>、<c:import>
| ID | DA | FA |
|---|---|---|
| <c:url> | 标签主要构建一个url地址 | |
| <c:param> | 指定url地址传递参数 | |
| <c:redirect> | 主要用于重定向其他url,即直接跳转: |
<c:url>
| ID | DA | FA |
|---|---|---|
| value | 指定构造URL | |
| var | 指定报构造的url保存到范围域中的属性名称 | |
| scope | 指定构造url保存到范围域中 | |
| context | 指定url地址所属到同一web下 |
1 | <h1>Java Server Pages Standard Tag Library</h1> |
其中,<c:url>标签主要构建一个url地址,可通过上述或以下写法进行编写:
1 | <c:url value="http://zsdk.org.cn/" var="gourl"/> |
<c:param>
<c:param>标签向指定url地址传递参数:
1 | <c:url value="http://zsdk.org.cn/" var="gourl" context="/src" scope="page"> |
<c:redirect>
<c:redirect>主要在Java Server Pages Standard Tag Library 主要用于重定向其他url,即直接跳转:
1 | <c:url value="http://zsdk.org.cn/" var="gourl"/> |
