1 / 40

第十四讲 JSP ( Java Server Page )

第十四讲 JSP ( Java Server Page ). JSP 基础 JSP 语法 示例 JSP 和 ASP 的比较 Servlet 和 JSP 的比较. JSP ( Java Server Page ) —— 基础. 利用 servlets ,可以方便地: 获取 显式数据( form data ) 获取隐藏数据( HTTP request headers ) 设置 状态代码 (HTTP status codes) 和响应头 (HTTP response headers) 使用 cookies 和 session

robbin
Download Presentation

第十四讲 JSP ( Java Server Page )

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. 第十四讲 JSP(Java Server Page) • JSP基础 • JSP语法 • 示例 • JSP和ASP的比较 • Servlet和JSP的比较

  2. JSP(Java Server Page) ——基础 • 利用servlets,可以方便地: • 获取显式数据(form data) • 获取隐藏数据(HTTP request headers) • 设置状态代码(HTTP status codes)和响应头(HTTP response headers) • 使用cookies 和 session • 在不同的servlet之间共享数据 • 记住不同请求之间的数据 • … • 但是,利用servlet做以下事情却很痛苦: • 使用 println 语句生成HTML文档 • 维护所生产的 HTML文档

  3. JSP(Java Server Page) ——基础 • JSP (Java Server Pages)是服务器端的脚本语言,是一种在HTTP页面中加入Java语言而生成动态页面的技术:加入了新的标签(<%,%>,…)。 • JSP是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。 • JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。 • 特点:面向对象、跨平台,和Servlet一样稳定,可以使用Servlet提供的API,克服了Servlet的缺点。 • 应用:一般和JavaBeans结合使用,从而将界面表现和业务逻辑分离。

  4. JSP(Java Server Page) ——基础 JSP的地位

  5. JSP(Java Server Page) ——基础 JSP的执行过程

  6. JSP(Java Server Page) ——基础

  7. JSP(Java Server Page) ——基础 JSP文件结构

  8. JSP(Java Server Page) ——基础 • 第一个JSP网页:simplejsp.jsp <%@ page language="Java" %> <%@ page info="a hello world example" %> <html> <head><title>Hello, World</title></head> <body> <h1><%out.println(" Hello, World! ");%></h1> </body> </html> 可以在webapps/work目标下看到中间结果。

  9. JSP(Java Server Page) ——JSP语法 JSP的元素分为以下几类: • HTML的元素 • 注释:输出注释、隐藏注释 • 脚本元素:声明、表达式、脚本片断 • 指令:page指令、taglib指令、include指令 • 动作:<jsp:useBean>、<jsp:forward>、<jsp:include>、…

  10. JSP(Java Server Page) ——JSP语法:注释 输出注释 • 语法 <! -- Comments --> <! -- Comments…<%= expression %> --> 其实就是HTML的注释,网页代码中会显示出来,在里面还可以嵌入其他JSP元素。 • 例子 <! -- Now: <%=(new java.util.Date()) %> -->

  11. JSP(Java Server Page) ——JSP语法:注释 隐藏注释(JSP注释) • 语法 <%-- Comments --%> <% // Comments %> <% /* Comments */%> 完全被JSP编译器忽略,真正的注释,在客户端不会显示出来。 • 例子 <%-- begin the class --%>

  12. JSP(Java Server Page) ——JSP语法:脚本元素 声明 • 语法 <%! Declaration(s) %> 声明变量和类,不产生任何输出,可以同时初始化,以分号结尾。 • 例子 <%! int a, b, c; %> <%! int a, b, c; String myword=“hello”; %>

  13. JSP(Java Server Page) ——JSP语法:脚本元素 表达式 • 语法 <%= Expression %> 将Expression的值强制转换成String类型,然后输出到网页中。不能转换则报错。 • 例子 <%= myword %> world! <%= new java.util.Date() %> <%= Math.random() %>

  14. JSP(Java Server Page) ——JSP语法:脚本元素 脚本片断 • 语法 <% Scriptlets %> Java程序片断,也可以声明变量,但必须赋初值。 • 例子 <% for(int i=1; i<=3; i++){ out.print(“hello, world!”); } %>

  15. JSP(Java Server Page) ——JSP语法:指令 • JSP指令(Directives) 代表向JSP容器传递信息,它不会产生输出,常用的JSP指令包括: • page指令 • taglib指令 • include指令

  16. JSP(Java Server Page) ——JSP语法:指令 page指令 • 语法 <%@ page attr = “value” %> 定义JSP文件的全局属性,主要的属性包括:language、import、buffer、isThreadSafe、isErrorPage、session、autoflush、errorPage、contentType等 其位置可以在页面的任何位置,但推荐放在页首。 • 例子 <%@ page contentType = “text/html;charset=gb2312” %>

  17. JSP(Java Server Page) ——JSP语法:指令 taglib指令 • 语法 <%@ tagliburi = "TagLibrary" prefix = "mypfx" %> 声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。 • 例子 < %@ taglib uri = "http://www.mycorp.com/supertag" prefix = "super" %>

  18. JSP(Java Server Page) ——JSP语法:指令 include指令 • 语法 <%@ includefile = “filename” %> 包含并解析静态文件,它可以是html文件、jsp文件、文本文件,或者只是一段Java代码。 在翻译JSP时将指定的的文件插入当前页面。 • 例子 < %@ include file = “header.htm” %>

  19. JSP(Java Server Page) ——JSP语法:动作 • JSP动作(Actions)是JSP中的具体操作,和脚本片断不同的是,JSP动作使用规定的标签和用法,将具体的编程细节封装起来了。有些JSP功能既可以用脚本片断实现,也可以用JSP动作来实现。常用的JSP动作包括: • <jsp:useBean> • <jsp:getProperty> • <jsp:setProperty> • <jsp:forward> • <jsp:include> • <jsp:param>

  20. JSP(Java Server Page) ——JSP语法:动作

  21. JSP(Java Server Page) ——JSP语法:动作 bean

  22. JSP(Java Server Page) ——JSP语法:动作

  23. JSP(Java Server Page) ——JSP语法:动作

  24. JSP(Java Server Page) ——JSP语法:动作

  25. JSP(Java Server Page) ——JSP语法:动作 五、<jsp:include> • 该动作将静态、动态Web资源包含到当前JSP页面中来。对静态资源(如HTML和文本文件),该文件的内容被直接包括在JSP中;若是Servlet和JSP等动态资源,被包括的资源在处理完请求后将结果返回。在该动作之后,容器继续执行JSP剩下的内容。 include指令和include动作有所不同,前者是在JSP被转换成Servlet时一起被转换,而后者则是在生成的Servlet中调用(或插入处理结果,或插入静态资源本身)。 • 语法 <jsp:include page=“URL” flush=“true” /> 或者 <jsp:include page=“URL” flush=“true” > {<jsp:param…/>} </jsp:include>

  26. JSP(Java Server Page) ——JSP语法:动作

  27. JSP(Java Server Page) ——JSP语法

  28. JSP(Java Server Page) ——JSP语法:缺省引入的包 • 下面这些包在JSP编译时已经导入了,所以在JSP文件中无须再用page指令引入: • java.lang.* • javax.servlet.* • javax.servlet.jsp.* • javax.servlet.http.* • <%@page import = “java.lang.*” %>

  29. JSP(Java Server Page) ——JSP语法:内置对象

  30. JSP(Java Server Page) ——JSP语法:内置对象

  31. JSP(Java Server Page) ——JSP语法:内置对象

  32. JSP(Java Server Page) ——JSP语法 JSP和Servlet的对应关系

  33. JSP(Java Server Page) ——JSP语法 • Original JSP <H1>A Random Number</H1> <%= Math.random() %> • Possible resulting servlet code public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println("<H1>A Random Number</H1>"); out.println(Math.random()); ... }

  34. JSP(Java Server Page) ——JSP语法 • Original JSP <%= foo() %> <% bar(); %> • Possible resulting servlet code public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println(foo()); bar(); ... }

  35. Original JSP <H1>Some Heading</H1> <%! private String randomHeading() { return("<H2>" + Math.random() + "</H2>"); } %> <%= randomHeading() %> • Possible resulting servlet code public class xxxx implements HttpJspPage { private String randomHeading() { return("<H2>" + Math.random() + "</H2>"); } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println("<H1>Some Heading</H1>"); out.println(randomHeading()); ... }

  36. JSP(Java Server Page) ——JSP示例 • include指令的使用 • <jsp:useBean>动作的使用(下节课) • JSP和Servlet的调用

  37. JSP(Java Server Page) ——JSP和ASP的比较 相似: • 都是运行于服务器端的脚本语言,两者都是动态网页生成技术。 • 这两项技术都使用HTML来决定网页的版面,都是在HTML 代码中混合某种程序代码,由语言引擎解释执行程序代码。HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。 不同: • JSP是由Sun推出的一项技术,是基于Java Servlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。ASP是MS公司推出的技术,只能在MS的平台上运行,无法实现跨平台,也无安全性保障。 • ASP下的编程语言是 VBScript 之类的脚本语言,而JSP 使用的是Java。 • ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。

  38. JSP(Java Server Page) ——JSP和ASP的比较

  39. JSP(Java Server Page) ——Servlet和JSP的比较 相似: • 两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、OO ),都可以使用Java强大的API。 • 两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。 • 两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。 不同: • Servlet是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易。 • Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送到客户端。 • 使用JSP的真正意义在于:可以将界面设计和业务逻辑设计分离。 • 使用JSP不需要进行太多的环境设置:环境变量、编译、特殊部署,…

  40. 下一讲:Java Beans • 基本概念和特点 • Bean Develop Kit(BDK) • 编写自己的JavaBeans • 与JSP一起使用:JDBCBean

More Related