1 / 30

J2EE —— 第 12 章 Java Serer Pages 技术

J2EE —— 第 12 章 Java Serer Pages 技术. JavaServer Pages 技术. 主要特性 开发 JSP 页面的语言 访问服务器端对象的表达式语言 定义 JSP 语言扩展的机制 供 Web 容器开发人员使用的 API JSP 页面 静态数据 (HTML, SVG, WML, XML) JSP 元素 ( 用于构造动态内容 , 标准、 XML 语法 ). JSP 示例 (1). <%@ page contentType="text/html; charset=UTF-8" %>

milek
Download Presentation

J2EE —— 第 12 章 Java Serer Pages 技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J2EE——第12章JavaSerer Pages技术

  2. JavaServer Pages技术 • 主要特性 • 开发JSP页面的语言 • 访问服务器端对象的表达式语言 • 定义JSP语言扩展的机制 • 供Web容器开发人员使用的API • JSP页面 • 静态数据(HTML, SVG, WML, XML) • JSP元素(用于构造动态内容,标准、XML语法)

  3. JSP示例(1) <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="/functions" prefix="f" %> <html> <head><title>Localized Dates</title></head> <body bgcolor="white"> <jsp:useBean id="locales" scope="application“ class="mypkg.MyLocales"/> <form name="localeForm" action="index.jsp" method="post"> <c:set var="selectedLocaleString" value="${param.locale}" /> <c:set var="selectedFlag" value="${!empty selectedLocaleString}" /> <b>Locale:</b>

  4. JSP示例(2) <select name=locale> <c:forEach var="localeString" items="${locales.localeNames}" > <c:choose><c:when test="${selectedFlag}"> <c:choose> <c:when test="${f:equals(selectedLocaleString,localeString)}"> <option selected>${localeString}</option> </c:when> <c:otherwise> <option>${localeString}</option></c:otherwise> </c:choose> </c:when><c:otherwise><option>${localeString}</option></c:otherwise> </c:choose></c:forEach> </select> <input type="submit" name="Submit" value="Get Date"> </form> <c:if test="${selectedFlag}" > <jsp:setProperty name="locales" property="selectedLocaleString" value="${selectedLocaleString}" /> <jsp:useBean id="date" class="mypkg.MyDate"/> <jsp:setProperty name="date" property="locale" value="${locales.selectedLocale}"/> <b>Date: </b>${date.date}</c:if></body></html>

  5. JSP示例(3)

  6. MVC体系结构

  7. Struts MVC示意图

  8. JavaServer Pages Standard Tag Library • 流程控制 • c:if、c:choose、c:when、c:otherwise • 设置作用域变量 • c:set • 编码URL • c:url • 提供地区敏感的消息、编号和日期 • fmt:message、fmt:formatNumber • fmt:formatDate

  9. JSP页面的生命周期 • 如果servlet更旧,则将jsp转换为servlet并编译 • 静态数据:可将该数据发送到响应流中的代码 • JSP元素 • 指令:控制Web控制器如何转换和执行JSP页面 • 表达式:作为参数传递到JSP表达式计算器的调用 • jsp:[set|get]Property:到JavaBeans组件的调用 • jsp:[include|forward]:到Java Servlet API的调用 • jsp:plugin:转换为激活applet的浏览器特定标记 • 自定义标签:到实现自定义标签的标签处理器调用

  10. 转换和编译后的生命周期 • 如果JSP页面的servlet的实例不存在,则容器将 • 加载JSP页面的servlet类 • 实例化servlet类,生成一个实例 • 通过调用jspInit方法初始化servlet实例 • 容器调用_jspService方法,传递request和response对象 • 如果容器需要删除JSP页面的servlet,则调用jspDestroy方法

  11. 页面指令--缓冲 • <%@ page buffer=“none|xxxkb” %> • 大的缓冲区允许在实际发回客户端前编写更多的内容,从而使JSP页面有更多的时间来设置适当的状态代码和标题,或者转发到另外的Web资源 • 小的缓冲区将降低服务器内存的加载量,使客户端更快地启动接收数据的操作

  12. 页面指令--处理错误 • <%@ page errorPage=“file_name” %> <%@ page isErrorPage="true" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html><head><title><fmt:message key="ServerError"/></title></head> <body bgcolor="white"><h3><fmt:message key="ServerError"/></h3> ${pageContext.errorData.throwable}<c:choose> <c:when test="${!empty pageContext.errorData.throwable.cause}"> : ${pageContext.errorData.throwable.cause} </c:when> <c:when test="${!empty pageContext.errorData.throwable.rootCause}"> : ${pageContext.errorData.throwable.rootCause} </c:when></c:choose></body></html>

  13. 创建静态内容和动态内容 • <%@ page contentType="text/vnd.wap.wml"%> • <%@ page contentType="text/html; charset=UTF-8" %> • 在JSP页面中使用对象 • 隐含对象:page,request,session,application • 应用程序特定对象:JSP标准标签、脚本元素 • 共享对象 • <%@ page isThreadSafe="true|false" %> • 正确同步page级别定义的所有共享对象的访问 • 声明、page作用域的JavaBean和pageContext

  14. 表达式语言 <c:if test="${sessionScope.cart.numberOfItems > 0}"> ... </c:if> <c:if test="${bean1.a < 3}">...</c:if> <c:if test="true">...</c:if> <mytags:example attr1="an expression is ${'${'}true}" /> <%@ page isELIgnored ="true|false" %> • EL表达式可用于 • 静态文本 • 可以接受表达式的任何标签属性 <some:tag value="${expr}"/> <some:tag value="some${expr}${expr}text${expr}"/> <some:tag value="sometext"/>

  15. 变量 • PageContext.findAttribute(String) • ${product}:page,request,session,application等scope • expr-a.expr-b等价于expr-a[expr-b] • 隐含对象 • PageContext: servletContext, session, request, response • param, paramValues, header, headerValues, cookie, initParam • pageScope, requestScope, sessionScope, applicationScope

  16. 常量 • true, false • java整数 • java浮点数 • 字符串:”或’ 转义:\ • null

  17. 运算符 • +、-、*、/、div、%、mod • and、&&、or、||、not、! • ==、eq、!=、ne、<、lt、>、gt、<=、le、>=、ge • empty • A?B:C • 保留字:以上、instanceof

  18. 示例(1)

  19. 示例(2)

  20. 示例(3)

  21. 函数 <%@ taglib prefix="f" uri="/functions"%> ... <c:when test="${f:equals(selectedLocaleString, localeString)}" > package mypkg; public class MyLocales { ... public static boolean equals( String l1, String l2 ) { return l1.equals(l2); } } functions.tld: <function> <name>equals</name> <function-class>mypkg.MyLocales</function-class> <function-signature>boolean equals( java.lang.String, java.lang.String )</function-signature> </function>

  22. JavaBeans组件 • 可重用的Java类,符合特定的设计约定 • 组件属性 • 读/写、只读、只写 • 简单属性(单个值),或索引属性(值数组) • PropertyClass getProperty() {…} • setProperty(PropertyClass pc) {…}

  23. 创建和使用JavaBeans组件 <jsp:useBean id="beanName" class="fully_qualified_classname" scope="scope"/> <jsp:useBean id="beanName" class="fully_qualified_classname" scope="scope"> <jsp:setProperty … /> </jsp:useBean> <jsp:useBean id="locales" scope="application" class="mypkg.MyLocales"/>

  24. 设置JavaBeans组件属性 <jsp:setProperty name="beanName" property="propName" value="stringconstant"/> <jsp:setProperty name="beanName" property="propName" param="paramName"/> <jsp:setProperty name="beanName" property="propName"/> <jsp:setProperty name="beanName" property="*"/> <jsp:setProperty name="beanName" property="propName" value="expression"/> <jsp:setProperty name="beanName" property="propName" > <jsp:attribute name="value">expression</jsp:attribute> </jsp:setProperty> • beanName必须是在useBean元素中为id属性指定的那一个 • 在JavaBeans组件中,setPropertyName方法必须存在 • paramName必须是参数名称

  25. 设置JavaBeans组件属性(示例) <c:set var="bid" value="${param.bookId}"/> <jsp:setProperty name="bookDB" property="bookId" value="${bid}" /> <jsp:useBean id="bookDB" class="database.BookDB" scope="page"> <jsp:setProperty name="bookDB" property="database" value="${bookDBAO}" /> </jsp:useBean> • 检索JavaBeans组件属性 ${bookDB.bookDetails.title} <jsp:getProperty name="beanName" property="propName"/>

  26. 使用自定义标签 <prefix:tag attr1="value" ... attrN="value" /> <prefix:tag attr1="value" ... attrN="value" > body</prefix:tag> <%@ taglib prefix="tt" [tagdir=/WEB-INF/tags/dir | uri=URI ]%> <%@ taglib prefix="tlt" uri="/WEB-INF/iterator.tld"%> <%@ taglib prefix="tlt" uri="/tlt"%> • 标签文件.tag和标签库描述符文件.tld • 绝对URI Core: http://java.sun.com/jsp/jstl/core XML: http://java.sun.com/jsp/jstl/xml Internationalization: http://java.sun.com/jsp/jstl/fmt SQL: http://java.sun.com/jsp/jstl/sql Functions: http://java.sun.com/jsp/jstl/functions

  27. 包括标签库实现 • 标签文件:/WEB-INF/tag • 标签处理器类:/WEB-INF/classes • 打包的标签库:/WEB-INF/lib • <J2EE_HOME>/lib/appserv-jstl.jar • 在JSP页面中重用内容 • 静态包含<%@ include file="filename" %> <%@ include file="banner.jspf" %> • 动态包含<jsp:include page="includedPage" /> <jsp:include page="response.jsp"/>

  28. 将控制转移到另一Web组件 <jsp:forward page="/main.jsp" /> <jsp:include page="..." > <jsp:param name="param1" value="value1"/> </jsp:include> A=foo A=bar A=bar,foo

  29. 包括小程序 <jsp:plugin type="applet" code="DigitalClock.class" codebase="/bookstore2" jreversion="1.4" align="center" height="25" width="300" nspluginurl="http://java.sun.com/j2se/1.4.2/download.html" iepluginurl="http://java.sun.com/j2se/1.4.2/download.html" > <jsp:params> <jsp:param name="language" value="${pageContext.request.locale.language}" /> <jsp:param name="country" value="${pageContext.request.locale.country}" /> <jsp:param name="bgcolor" value="FFFFFF" /> <jsp:param name="fgcolor" value="CC0066" /></jsp:params> <jsp:fallback><p>Unable to start plugin.</p></jsp:fallback> </jsp:plugin>

  30. 设置JSP页面组的属性 • isELIgnoreed • deploytool,页面指令,标签文件指令 • pageEncoding(不一致导致错误) • deploytool,页面指令 • 定义隐式包含 • deploytool • preludes and codas

More Related