- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
03-J2EE架构与程序设计(servlet)资料
J2EE架构与程序设计 主讲:李伟刚 liweigang@ 西北工业大学软件与微电子学院 第三章 Servlet 主要内容 Servlet寿命周期管理 Servlet线程和初始化 请求和响应 Redirect vs. Request Dispatch Servlet寿命周期管理 Servlet寿命周期管理回答了如下问题 Servlet类何时加载? Servlet的构造方法何时运行? Servlet对象寿命有多长? Servlet何时初始化资源?何时清除资源? Servlet生命周期 状态 initialized does not exist 操作: 初始化?运行构造方法或init()方法 销毁 ?运行destroy()方法 Servlet寿命周期管理 Servlet寿命周期管理 Servlet寿命周期管理 Servlet寿命周期中的重要方法 Init() Servlet实例创建后,容器调用servlet实例上的init()方法,之后servlet才能响应客户端请求 可以重载(建立数据库链接等) 提供了一个在处理客户端请求之前初始化servlet的途径 service() 当客户端请求第一次到来,容器开启一个新线程或从线程池中分配一个线程,并调用servlet的service()方法 不能重载 监听请求,确定HTTP方法,并调用相应的servlet方法,如doGet(),doPost()等 doGet(),doPost() service()方法根据请求的HTTP方法调用doGet()或doPost() 至少重载其中一个。告诉容器servlet支持的HTTP请求方法 在这里编写代码,可以调用其它对象上的方法 Servlet线程和初始化 每个请求运行在独立的线程中 容器为单个servlet运行多个线程来处理多个请求 Servlet线程和初始化 Servlet载入和初始化 第一步:找到类 第二步:加载类 容器启动时 客户第一次使用时 Service()方法在servlet没有初始化完成之前不能运行!因为 构造方法?创建对象,不是servlet Init()方法?使对象成为servlet Servlet有何特权 ServletConfig对象 每个servlet都有一个ServletConfig对象 用于向servlet传递部署时的信息 用于访问ServletContext 其参数在DD中配置 ServletContext 每个web应用都有一个ServletContext 用于访问web应用的参数(在DD中配置) 用于获取服务器信息 存放其它公用信息 请求和响应 请求和响应 如何处理请求? service()根据客户端请求的HTTP方法,确定调用什么doXXX()方法 对几乎所有servlet开发者,只会使用doGet()和doPost() GET和POST的再讨论 幂等性(idempotent) 可以执行两次相同的请求而不会在服务器端产生不良结果 相同的请求总是返回相同的响应 HTTP1.1规定GET是幂等的,POST是非幂等的 幂等使你能够重复执行操作 请求和响应 请求和响应 例子 请求和响应 例子 请求和响应 ServletRequest和HttpServletRequest其它方法 取得客户端平台和浏览器信息:getHeader(), getIntHeader() 取得与请求相关的cookies:getCookies() 取得该客户的session:getSession() 取得请求的HTTP方法:getMethod() 取得请求的输入流:getInputStream() 取得端口:getServerPort(), getLocalPort(), getRemotePort() getRemotePort():获得客户机的端口 getServerPort():请求原始发送给哪个服务端口 getLocalPort():请求最终在哪个端口结束 请求发送给服务器监听着的端口,但是服务器对每个线程将请求转送到另外的本地端口,这样应用可以同时处理多个客户端 请求和响应 响应 先使用setContentType()方法在响应的HTTP头中设置MIME类型,告诉浏览器返回的是什么,浏览器就知道该怎么处理了 text/html application/pdf video/quicktime application/java image/jpeg application/jar application/octet-stream application/x-zip 使用响应对象获取一个输出流,使用输出流向客户端写HTML 可以向客户端发送非HTML数据 用响应对象设置HTTP header, 发送错误,添加cookies 请求和响应 用
文档评论(0)