(一)JSP表达式语言EL
EL表达式:${person.name} ;
• 与输入有关的隐含对象有两个,即param和paramValues,它们是EL中比较特别的隐含对象。例如,要取得用户的请求参数时,可以利用下列方法:
– request.getParameter(String name)
– request.getParameterValues(String name)
• 在EL中则可以使用param和paramValues两者来取得数据:
– ${param.name}
– ${paramValues.name
• cookie
– 用来取得使用者的cookie值,例如在cookie中设定了username属性值,可以使用${cookie.username.value}来取得属性值。
• header和headerValues
– 读取请求的头数据,使用header或headerValues内置对象,例如${header[“User-Agent”]},headerValues则用来取得所有的头信息,等价于调用request.getHeaders()方法。
• initParam
– initParam用来读取设置在web.xml中的参数值。例如${initParam.repeat},等价于:(String)application.getInitParameter(“repeat”); 或
servletContext.getInitParameter(“repeat”);
• pageContext
– pageContext用于取得其他有关用户要求或页面的详细信息
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,不包括参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
(二)jsp自定义标记库
例:
1 创建自定义标签类
public class UserInfoTag extends TagSupport {
private UserInfo user
@Override
public int doStartTag() throws JspException {
try {
JspWriter out = this.pageContext.getOut();
if(user == null) {
out.println("No UserInfo Found...");
return SKIP_BODY;
}
out.println("<table width='500px' border='1' align='center'>");
out.println("<tr>");
out.println("<td width='20%'>Username:</td>");
out.println("<td>" + user.getUserName() + "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>Age:</td>");
out.println("<td>" + user.getAge() + "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>Email:</td>");
out.println("<td>" + user.getEmail() + "</td>");
out.println("</tr>");
out.println("</table>");
} catch(Exception e) {
throw new JspException(e.getMessage());
}
return SKIP_BODY;
}
@Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
(三)标准
功能范围 | 作用 | URL | 前缀 |
核心(core) | 一般用途处理的标记 | http://java.sun.com/jstl/core | c |
xml | 解析、选择、转换XML数据的标记 | http://java.sun.com/jstl/xml | x |
数据库(sql) | 访问关系型数据库的标记 | http://java.sun.com/jstl/sql | sql |
国际化(I18N) | 为国际化应用格式化数据的标记 | http://java.sun.com/jstl/fmt | fmt |
函数(functions) | 处理字符串和集合的标记 | http://java.sun.com/jstl/functions | fn |
条件标签包括以下几种:
<c:if>;
<c:choose>;
<c:when>;
<c:otherwise>;
举例:c_if.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL:c:if的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:set var="count" value="100"/>
<c:if test="${count>78}">
count>78
</c:if>
</body>
</html>
<c:choose>,<c:otherwise>,<c:when>举例:c_choose.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<c:set var="count" value="100"/>
<html>
<head>
<title>JSTL:c:choose的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:choose>
</c:choose>
count的值是:<c:out value="${count}"/>
</font>
</body>
</html>
<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head>
<title>JSTL测试1--c:forEach循环</title>
</head>
<body>