160 likes | 409 Views
声明. 本课件仅用于北京航空航天大学计算机学院的教学; 本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。. J2EE 教程 第 2 章 使用 J2EE ( What is Servlet and JSP?). 北航计算机学院 linxl@buaa.edu.cn 2006 年 2 月 1 日. 内容列表. 2.1 网络客户端及组件 2.2 Java Servlet 技术 2.3 JSP 技术. 2.1 网络客户端及组件.
E N D
声明 • 本课件仅用于北京航空航天大学计算机学院的教学; • 本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。
J2EE教程第2章 使用J2EE(What is Servlet and JSP?) 北航计算机学院 linxl@buaa.edu.cn 2006年 2 月 1 日
内容列表 • 2.1 网络客户端及组件 • 2.2 Java Servlet技术 • 2.3 JSP技术
2.1 网络客户端及组件 • 当基于浏览器的网络客户端与J2EE应用程序通信时,它是通过服务方的称为网络组件的对象实现的。 • 有两种类型的网络组件:Java Servlet和JSP • Servlet是Java编程语言的类,它能够动态处理请求并响应 • JSP页面是基于文本的能作为Servlet运行,但它能够以更自然的方式创建动态内容
2.2 Java Servlet技术 • 公共网关接口(CGI)脚本是产生动态内容的主要的技术。 • 尽管被广泛的应用,CGI脚本有着许多缺点,如平台相关性,缺乏可升级性。 • 为克服这些缺点,Java servlet技术作为一种以简单的方式提供动态的,面向用户的技术诞生了。
Servlet程序 • Servlet是java语言类,用来拓展通过请求响应模式的服务端的能力。 • 所有的servlets都必须实现javax.servlet.Servlet接口,它定义了生命周期方法。 • servlet编写者可以通过直接实现javax.servlet.Servlet开发servlet
实际上,大多数servlet是针对用HTTP协议的web服务器, 这样最通用开发servlet办法是继承 javax.servlet.http.HttpServlet,实现具体的servlet • HttpServlet类提供了一些方法,如doGet及doPost,用来处理特定的http服务 • abstract classHttpServlet extends GenericServlet • abstract class GenericServlet implements Servlet • 例子:GreetingServlet.java
创建WAR • 网络客户端被打包到WAR文件中 • 一个WAR通常包含以下文件: • 服务端的工具类(数据Bean,购物车等),这些类遵守JavaBean组件结构; • 静态网页内容(HTML,image,sound files,etc.) • 客户端类(applets和帮助类)。 • <My Servlet>.war • web.xml: 网络应用部署符; • 类:servlet,帮助类及JavaBean组件等服务方类 • 库:包含JAR库的一个目录。
部署WAR • 将WAR文件拷贝到JBoss的部署目录下,完成部署
访问Servlet • 通过浏览器访问
Servlet的生命周期 • 当一个请求映射到相应的servlet时,容器产生下面的步骤: • 1.如果servlet的实例不存在,容器会 • 载入servlet类 • 创建一个servlet实例 • 通过调用init方法初始化servlet实例 • 2.调用service方法 • 如果容器需要删除servlet,可以通过调用destroy方法删除之。
2.3 JSP技术 • JSP技术设计了所有Java Servlet技术的动态能力而且还提供了更自然的途径创建静态内容 • JSP是基于servlet的一种技术,使用它可以在html中嵌入java代码 • JSP主要特点如下: • 有专门的语言开发jsp页面,这些都是基于文本的来描述如何处理请求及产生响应。 • 为访问服务端对象进行构造。 • 有定义扩展语言的机制。
<%@ page import=”java.util.*,MyLocales” %> <%@ page contentType=”text/html;charset=ISO8859_1” %> <html> <head><title>Localized Dates</title></head> <body bgcolor=”white”> <jsp:userBean id=”locales” scope=”application” class=”MyLocales”/> <form name=”localeForm” action=”index.jsp” method=”post”> <b>Locale:</b> <select name=locale> <% String selectedLocale=request.getParameter(“locale”); Iterator I=locales.getLocaleNames().iterator(); //本段的其余代码略 %> </selected> <input type=”submit” name=”submit” value=”Get Date”> </form> <jsp:include page=”date.jsp”/> </body> </html> • VS:GreetingServlet.java
JSP vs Servlet • servlet • Servlet是实现javax.servlet.Servlet接口的Java类 • Servlets类似Java程序 • JSP • JSP的优点是以文档为中心 • JSP页面混合了HTML, Java scripts, JSP元素, and JSP指令 • JSP中的元素由JSP引擎编译成servlet.
一个JSP页面的服务请求是作为servlet来执行的。这样,JSP页面的生命周期及各种能力就取决于servlet技术。一个JSP页面的服务请求是作为servlet来执行的。这样,JSP页面的生命周期及各种能力就取决于servlet技术。 • 当一个请求映射到一个Jsp页面时,由一个特殊的servlet来处理,该servlet首先检查一下对应的JSP页面有没有改动,如果有变动则将该JSP页面转换为servlet类并编译这个类 • 例子:Helloworld
生命周期 • 一旦页面被解释并执行,JSP页面的servlet的生命周期大部分与servlet类似: • 如果JSP页面的servlet实例不存在,容器将: • 载入JSP的servlet class • 实例化一个servlet class • 通过调用jspInit 方法实例化servlet • 调用_jspService方法,传递请求及响应对象。 • 如果容器需要移除JSP页面的servlet,就调用jspDestroy方法。