




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浪潮软件技术研究中心-高林,2004年8月1日,Servlet介绍,Servlet简单介绍Servlet基础Servlet例子讲解Servlet高级功能实战,目录,J2ee应用模型图,Servlet简单介绍历史背景,最初的网页静态没有搜索引擎,没有客户与服务器之间的交互。CGI出现CGI结合html表单,提供了一种机制,实现了客户与服务器的双向交互。实践中发现的问题:性能较差,速度慢,灵活性差,可移植性差(尤为重要)。新技术的出现新技术竞相取代CGI来作为建立动态web站点的标准接口。其中Servlet成为一种较为受欢迎的Internet开发技术。,Servlet简单介绍关于Servlet,Servlet是用java编写的服务器的软件组件,能够动态的扩展http服务器的功能、工作方式是后台运行,将处理结果返回给用户。Servlet给出了一个框架,用于创建执行请求/响应的应用程序。浏览器发送一个请求给服务器,服务器把请求送给一个Servlet,这是Servlet就能处理(数据库,运算等)请求,并构造一个合适的响应(通常是html格式数据)返回给客户。Servlet不只是支持Web服务器,它能够支持所有支持Java和ServletAPI的服务器的功能。ftp,telnet,邮件,和新闻服务器。Servlet是独立于http协议的。,Servlet简单介绍Servlet的优点,能够以进程运行传统的CGI是一个请求一个进程。Servlet是本身以进程运行,但是对每个请求是在服务器进程空间里独立的线程所处理的。线程之间的轻度的上下文关联,比起进程之间的重度的上下文关联开销要小的多。要快的多。已编译与脚本语言不同,Servlet首先被编译成Java字节代码,提高了速度。在编译期间的错误和类型检测,避免的很多问题,易于开发和调试。防崩溃Servlet是由Java编写的,是由Java虚拟机执行的。JVM不允许Servlet直接访问内存区。最后一个防止崩溃的措施是JVM会将异常送到调用链的顶端。一直到它被捕获。如果没被捕获,JVM自己会处理。而不是崩溃。,Servlet简单介绍Servlet的优点(续),跨平台因为是用Java编写的,Java本身就是跨平台的。跨服务器很多Web服务器支持本地Servlet。那些不支持本地Servlet的服务器,一般会有第3方附加系统可允许服务器加载和运行Servlet持久性Servlet是可持久使用的对象。加载之后,一直保持在内存重,直到由明确的指令把它删除调。这样Servlet只要被实例话一次,就可以服务多次请求。动态加载Servlet能够从本地后网络中动态加载。可以服务启动的时候加载,也可以是等到调用的时候再加载。(资源有时候很少用的可以这样做),Servlet简单介绍Servlet的优点(续),易于部署Servlet是一个标准的部署模型。可扩展性多线程系统开销小。面向对象Servlet把所有的必要的信息和功能封装到精心设计的对象中。比如请求,响应,会话,cookies。通过基本的调用,这些对象提供的对信息和功能的基本访问,Servlet简单介绍Servlet的优点(续),独立于协议它是扩展Http服务器的功能,但是不仅仅限于这个协议。相反,Servlet是完全独立于协议之外的。它可以支持ftp,smtp,pop3,telnet等协议。不管这些是标准的,还是开发者自己创建的。安全性1:无效内存访问调用和类型严重冲突是不可能的。2:Servlet利用服务器的安全管理器来实现特定的安全策略的定制和强制实施3:一个Servlet可以访问每个客户请求中的所有信息。Servlet可以对这些数据进行安全性检查。用Java编写具有Java的所有优点。,Servlet介绍功能,Servlet在几乎所有能想象到的方面扩展的服务器的功能。允许客户和服务器之间由真正的双向交互。部分功能:1:基于客户的实质请求,动态构建并返回一个HTML文件2:处理用户的html表单输入并返回适当的响应3:公布由许多用户提交的信息而保障多用户之间的通信4:提供用户身份验证和其他安全机制5:与服务器资源如数据库,其他应用程序和文件交互。以返回有用的信息到客户6:等等。(你所能想象到的关于增强或者扩展服务器的功能的其他任何方法),Servlet基础主要内容,现在主要介绍Servlet结构和语法已经调用它的方式1:基本Servlet结构2:Servlet生命期3:讲解两个Servlet示例,Servlet基础基本Servlet结构,基类HttpServlet,GenericServlet我们编写的Servlet功能实现,都需要继承上面的其中一个。他们本身的关系就是HttpServlet继承了GenericServlet。所有Servlet至少要实现覆盖(override)一个方法。在其中可实现自定义功能。如果继承GenericServlet,则定要实现service(ServletRequestrequest,ServletResponseresponse)如果继承HttpServlet则可以选择实现HttpServlet提供的几个方法或者实现其父类GenericServlet的service方法,Servlet基础Servlet生命周期,Servlet生命周期:1、装载和激活:依据部署参数装载类、设置上下文参数2、实例化:调用init()3、服务:调用service()重复服务4、销毁:调用destory(),Servlet基础GenericServlet,init()Servlet首次加载的时候调用一次。和构造函数类似。用于初始化资源。service()每个请求都会调用destroy()Servlet被卸载时执行的方法。由于释放资源ServletRequest接口介绍,Servlet基础ServletRequest接口,getParameter(String)setAttribute(String,Object)getAttribute(String)用于非httpservlet,客户请求信息放到该对象中,传递到servlet的service()方法中,Servlet基础ServleResponse接口,用于非httpservlet,用于定制一个响应的必须方法,包含在ServletResponse对象中,这个对象将被传递到servlet的service()方法getWriter();getOutputStream();,Servlet基础HttpServlet,我们可以选择实现其中的方法。service方法是其父类GenericServlet的方法。是必定执行的。如果没有覆盖这个方法,该方法会调用其他一个方法来执行客户请求。(这是基于苦户请求的类型)init()destroy(),Servlet基础HttpServletRequest,HttpServletResponse,HttpServletRequest继承ServletRequest接口用于httpservlet,在客户请求中将传递的信息封装到HttpServlet中,这个对象被传递到servlet的service方法中,之后被传递到doGet(),doPost()方法中。重要方法:getCookies();getSession();getMethod();getQueryString();HttpServletResponse继承ServletResponse接口用于定制一个响应的必须方法包含在其对象中。同样传递到servlet的service()方法中,之后被传递到doGet(),doPost()方法中。重要方法:addCookies();sendRedirect();/重定向,Servlet例子1通用的Servlet,web.xml配置,http:/ip:port/appnane/Time,Servlet例子2HttpServlet,Web.xml配置,Servlet高级功能内容,线程安全的servelt过滤器filterhttp重定向cookies状态和会话管理请求转发,服务器端引用,servlet链接,线程安全的servlet,线程安全如果应用程序不管在它的进程空间中有多少个并行线程运行,它的行为总是可预知的,那么这个应用程序就是线程安全的。实现方法:确保没有线程能够在另外一个线程改变共享资源的过程中读取这些共享资源。这个是很难的。银行取钱线程不安全的例子测试,线程不安全的例子,如何实现线程安全synchronized关键字,synchronized可以确保代码块每次只被一个线程执行。java的同步过程是在一个对象上获取互拆锁的过程。以便该对象每次能有一个线程读取和修改。synchronized(this)synchrinized(Object)/推荐publicsynchrinizedvoidservice()一般来说,如果共享变量可以被独立的线程读取和修改或者变量本身不是线程安全的话,我们就应该考虑将它同步。相反比如数据库连接池,线程安全SingleThreadModel接口,确保一个servlet是线程安全最简单的方法。实现SingleThreadModel接口。不能被并行执行性能问题servlet实例池大多数servlet容器试图通过维护一个servlet的实例池来是性能上的问题减到最小。当servlet容器加载实现SingleThreadModel接口的servlet是,为了向并行请求提供服务,该容器会创建一个servlet实例池。池的大小是可以进行配置的。如果同时到达的请求过多,到实例池被消耗尽,那么多出来的请求就会进行串行化,放到队列中,直到有实例可以执行。通常会产生很大的性能影响。,过滤器fliter,例子字符集过滤,HTTP重定向,允许服务器用指令来响应客户的请求,从而将资源加载到不同的位置上。重定向提供了一种无缝的方法,让用户从一个url转移到另一个url。浏览器页面超链接浪潮技术中心HttpServletResponsesendRedirect(url);不能保持请求内容负载均衡,重定向负载均衡例子,cookies,http客户和服务器之间传送的小块信息。服务器端创建,保存在客户端的文本文件,通常不会超过512个字节可以使用HttpServletRequest/HttpServletResponse或者JavaScript来访问。Cookie对象封装一组name/valuegetName();返回名称get/getValue();取/设值get/setMaxAge()设置cookie的保持时间0值删除get/setVersion()取/设定版本示例,状态和会话管理,无状态协议的含义ht
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瑞达法考课件上传时间
- 瑞辉网络安全培训课件
- 开发认养农业合作协议书4篇
- 瑞丽风情教学课件
- 安全施培训心得课件
- 福州大型清洗工程方案(3篇)
- 农业碳汇开发模式创新与2025年市场潜力预测报告
- 电网工程绿色策划方案(3篇)
- 安全文明施工培训课件
- 纺织旧厂改造工程方案(3篇)
- 山东省独生子女父母退休一次性养老补助申请表
- 国寿新绿洲团体意外伤害保险(A款)条款
- 甲状旁腺功能亢进症课件
- 天翼云认证开发工程师必备考试复习题库(高分版)-上(单选题)
- 中远海运(上海)有限公司招聘考试真题及答案2022
- 癌痛及三阶梯止痛原则
- JJG 861-2007酶标分析仪
- 神经网络-课件
- 高管人员劳动合同书
- 被覆上皮课件
- 尾矿库安全监测技术规范
评论
0/150
提交评论