控制层Java Servlet技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10、设计线程安全的Servlet程序 10、设计线程安全的Servlet程序 Servlet Servlet采用多线程方式的响应客户端的请求 (1)Servlet采用多线程方式的响应客户端的请求 当多个不同的用户对同一个Servlet进行请求时, Servlet进行请求时 当多个不同的用户对同一个Servlet进行请求时, Servlet容器将采用多线程的技术来处理多个不同的请 Servlet容器将采用多线程的技术来处理多个不同的请 每个请求将拥有自己的后台处理线程。 求,每个请求将拥有自己的后台处理线程。
Servlet及其技术特点 1、Java Servlet及其技术特点 Servlet组件技术及特点 (1)Java Servlet组件技术及特点 Servlet是使用 是使用Java Servlet是使用Java Servlet 应用程序设计接口 API) 程序; (API)及相关类和方法所构成的 Java 程序; 它在服务器端的Servlet容器中( Tomcat)运行。 Servlet容器中 它在服务器端的Servlet容器中(如Tomcat)运行。 Servlet能够处理Http请求和响应 能够处理Http (2)Servlet能够处理Http请求和响应 Servlet可以处理客户端程序的请求,并返回一系列 Servlet可以处理客户端程序的请求, 可以处理客户端程序的请求 处理后的结果,最终动态生成新的Web页面。 Web页面 处理后的结果,最终动态生成新的Web页面。 可以将它称之为服务器端的“小服务程序” 可以将它称之为服务器端的“小服务程序”。 Servlet最大的优势在于它的高性能 (3)Servlet最大的优势在于它的高性能 首先Servlet在第一次请求时被装载并驻留在内存中, Servlet在第一次请求时被装载并驻留在内存中 首先Servlet在第一次请求时被装载并驻留在内存中, 以后容器将直接从内存中运行该Servlet组件; Servlet组件 以后容器将直接从内存中运行该Servlet组件; 其次,在默认情况下Servlet Servlet是以单实例多线程的方 其次,在默认情况下Servlet是以单实例多线程的方 式服务于请求。 式服务于请求。 请注意在Servlet Servlet中如何实 请注意在Servlet中如何实
尽管JSP是可以包含Java代码的HTML网页, JSP是可以包含Java代码的HTML网页 (3)尽管JSP是可以包含Java代码的HTML网页,但注意不 应该在JSP页面中加入太多的 Java脚本程序代码。 应该在JSP页面中加入太多的 Java脚本程序代码。 JSP 脚本程序代码
尽管Servlet是可以包含HTML标签的Java程序, Servlet是可以包含HTML标签的Java程序 (4)尽管Servlet是可以包含HTML标签的Java程序,但不 应该在Servlet Java代码中加入太多的HTML标签 Servlet的 代码中加入太多的HTML标签! 应该在Servlet的Java代码中加入太多的HTML标签!
Servlet的 6、Servlet的 工作过程 (1)生命周 期中的各个主 要阶段 (2)主要的 执行过程
7、HttpServlet类及应用 HttpServlet类及应用
HttpServlet类 (1)HttpServlet类 它是GenericServlet基类的一个派生类, GenericServlet基类的一个派生类 它是GenericServleБайду номын сангаас基类的一个派生类,而基类则实 现了Servlet接口。 Servlet接口 现了Servlet接口。 HttpServlet为基于HTTP协 为基于HTTP HttpServlet为基于HTTP协 议的Servlet Servlet组件提供了基 议的Servlet组件提供了基 本的技术支持。 本的技术支持。 HttpServlet类中的各种形 (2)HttpServlet类中的各种形 式的doXXX() doXXX()方法对应不同的 式的doXXX()方法对应不同的 请求方式
你知道这样的实现是应用 GOF中的什么模式吗 中的什么模式吗? 了GOF中的什么模式吗?
编程实现Servlet 8、编程实现Servlet 用户自己的Servlet (1)用户自己的Servlet 类都必须要扩展 HttpServlet类 HttpServlet类,并在 其中重写doXXX doXXX方法以 其中重写doXXX方法以 保证具有合适的方法处 HTTP操作 操作。 理HTTP操作。 基于HTTP HTTP协议的 (2)基于HTTP协议的 servlet必须引入 servlet必须引入 javax.servlet 和 javax.servlet.http包 javax.servlet.http包
现线程安全的代码! 现线程安全的代码!
Servlet的主 (4)Servlet的主 要作用 主要作为 Web应用系统的 Web应用系统的 控制调度组件, 控制调度组件, 承担MVC MVC架构模 承担MVC架构模 式中的“C”角 式中的“C”角 控制器)。 色(控制器)。 正确地区分JSP Servlet两者在应用上的不同 JSP和 2、正确地区分JSP和Servlet两者在应用上的不同 JSP页面文件中应该仅仅有与表示层有关的标签内 (1)在JSP页面文件中应该仅仅有与表示层有关的标签内 Html和JSP方面等 方面等)。 容(Html和JSP方面等)。 而所有的数据计算、数据分析、 (2)而所有的数据计算、数据分析、数据库连接等功能处 理和业务逻辑的实现,则应该放在JavaBean或者Servlet JavaBean或者 理和业务逻辑的实现,则应该放在JavaBean或者Servlet 不推荐)等程序中。 (不推荐)等程序中。
谨慎应用共享Servlet Servlet中的成员变量 (2)谨慎应用共享Servlet中的成员变量 请求同一个Servlet Servlet程序将使服务器在内存中保存同一个 请求同一个Servlet程序将使服务器在内存中保存同一个 Servlet实例 这也意味着所有的请求将共享Servlet 实例, Servlet程 Servlet实例,这也意味着所有的请求将共享Servlet程 序中的类成员变量----这在某些应用下将会出现问题! ----这在某些应用下将会出现问题 序中的类成员变量----这在某些应用下将会出现问题!
你知道利用继承带来 什么好处吗? 什么好处吗?
web.xml文件中部署以定位和命名该Servlet程序 文件中部署以定位和命名该Servlet (3)在web.xml文件中部署以定位和命名该Servlet程序 一般可以采用IDE工具完成,比如在Eclipse IDE工具完成 Eclipse工具中可 一般可以采用IDE工具完成,比如在Eclipse工具中可 以自动地帮助开发人员完成配置定义。 以自动地帮助开发人员完成配置定义。 了解其中的标签的含义
设计和实现线程安全的Servlet (3)设计和实现线程安全的Servlet 为了避免多个不同用户共享Servlet中的类成员变量, Servlet中的类成员变量 为了避免多个不同用户共享Servlet中的类成员变量, 可以将数据设计为局部变量,从而保证Servlet Servlet的无 可以将数据设计为局部变量,从而保证Servlet的无 “无状态”是线程安全 无状态” 无状态 状态的特性; 状态的特性; 代码的基本条件! 代码的基本条件! 而将共用的数据设计为类中的变量, 而将共用的数据设计为类中的变量,并应用线程同 步机制控制共享访问; 步机制控制共享访问; Servlet实现SingleThreadModel接口 实现SingleThreadModel接口( 将Servlet实现SingleThreadModel接口(此时为单 线程的Servlet Servlet) 线程的Servlet) 11、线程不安全的Servlet代码示例 11、线程不安全的Servlet代码示例 Servlet (1)请求的页面中的表单
(2)为了解决Servlet在应用方面的这种缺点,SUN后期又推 为了解决Servlet在应用方面的这种缺点,SUN后期又推 Servlet在应用方面的这种缺点 出了Java Pages(JSP技术 技术)。 出了Java Server Pages(JSP技术)。
Servlet技术有必要与JSP技术相互配合地应用 技术有必要与JSP 5、Servlet技术有必要与JSP技术相互配合地应用 (1)Servlet用于控制调度层或者系统业务层的功能实现, Servlet用于控制调度层或者系统业务层的功能实现, 用于控制调度层或者系统业务层的功能实现 但用于表现层则不方便 为此,Sun推出 推出“ JavaBean”的Web系统架构方案 为此,Sun推出“JSP + JavaBean 的Web系统架构方案 JSP实现表现层中的 输入” 实现表现层中的“ 输出”功能, 用JSP实现表现层中的“输入”和“输出”功能,而用 JavaBean实现系统中业务层的功能处理 实现系统中业务层的功能处理。 JavaBean实现系统中业务层的功能处理。
JSP在Servlet的基础上有所创新---增加了标签技术 的基础上有所创新--(2)JSP在Servlet的基础上有所创新---增加了标签技术 包装和内嵌Java代码,它们可以互相协作, Java代码 包装和内嵌Java代码,它们可以互相协作,互相补充对 方的不足。 方的不足。 JSP页面中再配合应用EL和JSTL标签 页面中再配合应用EL 标签, (3)在JSP页面中再配合应用EL和JSTL标签,能够大大地 减少JSP页面中的Java脚本代码的数量。参考如下示例: JSP页面中的Java脚本代码的数量 减少JSP页面中的Java脚本代码的数量。参考如下示例:
3、在项目开发中应该要正确地应用JSP和Servlet技术 在项目开发中应该要正确地应用JSP和Servlet技术 JSP 它们都是一种非常有效的J2EE Web组件技术 组件技术, 它们都是一种非常有效的J2EE Web组件技术,能够 Web应用系统带来高性能 但在应用中开发人员常常 应用系统带来高性能, 为Web应用系统带来高性能,但在应用中开发人员常常 会忽视系统的可维护性和可测试性, 会忽视系统的可维护性和可测试性,不正确地应用 JSP/Servlet技术 技术! JSP/Servlet技术!
Servlet程序在应用中主要存在的缺点 4、Java Servlet程序在应用中主要存在的缺点 尽管Servlet具有高性能,但它在系统设计时没有将Web Servlet具有高性能 (1)尽管Servlet具有高性能,但它在系统设计时没有将Web 应用中的逻辑处理( 和页面的显示输出( 应用中的逻辑处理(M)和页面的显示输出(V)相互分离
Servlet编程技术 J2EE Servlet编程技术
(Java Servlet Technology) )
The Emphases in Teaching Materials
在本讲中重点掌握如下知识点 Servlet及其特点 Java Servlet及其特点 JSP和Servlet在应用上的区别 JSP和Servlet在应用上的区别 Servlet的生命周期 Servlet的生命周期 Servlet编程和开发步骤 Servlet编程和开发步骤 实现线程安全的Servlet Servlet程序 实现线程安全的Servlet程序 Servlet中向浏览器输出图像 在Servlet中向浏览器输出图像
您知道为什么要对 它进行部署吗? 它进行部署吗?
(4)在客户端请求和执行Servlet的各种方式 在客户端请求和执行Servlet Servlet的各种方式
你知道这是什么提交方式吗? 你知道这是什么提交方式吗?
Eclipse中编程实现Servlet的示例 中编程实现Servlet 9、在Eclipse中编程实现Servlet的示例