您好,欢迎访问三七文档
浪潮软件技术研究中心欲穷千里目,更上一层楼浪潮软件*技术研究中心2004年8月1日Servlet介绍浪潮软件技术研究中心欲穷千里目,更上一层楼Servlet简单介绍Servlet基础Servlet例子讲解Servlet高级功能实战目录浪潮软件技术研究中心欲穷千里目,更上一层楼应用模型图浪潮软件技术研究中心欲穷千里目,更上一层楼简单介绍历史背景最初的网页静态没有搜索引擎,没有客户与服务器之间的交互。CGI出现CGI结合html表单,提供了一种机制,实现了客户与服务器的双向交互。实践中发现的问题:性能较差,速度慢,灵活性差,可移植性差(尤为重要)。新技术的出现新技术竞相取代CGI来作为建立动态web站点的标准接口。其中Servlet成为一种较为受欢迎的Internet开发技术。浪潮软件技术研究中心欲穷千里目,更上一层楼编写的服务器的软件组件,能够动态的扩展http服务器的功能、工作方式是后台运行,将处理结果返回给用户。Servlet给出了一个框架,用于创建执行请求/响应的应用程序。浏览器发送一个请求给服务器,服务器把请求送给一个Servlet,这是Servlet就能处理(数据库,运算等)请求,并构造一个合适的响应(通常是html格式数据)返回给客户。Servlet不只是支持Web服务器,它能够支持所有支持Java和ServletAPI的服务器的功能。ftp,telnet,邮件,和新闻服务器。Servlet是独立于http协议的。浪潮软件技术研究中心欲穷千里目,更上一层楼是一个请求一个进程。Servlet是本身以进程运行,但是对每个请求是在服务器进程空间里独立的线程所处理的。线程之间的轻度的上下文关联,比起进程之间的重度的上下文关联开销要小的多。要快的多。已编译与脚本语言不同,Servlet首先被编译成Java字节代码,提高了速度。在编译期间的错误和类型检测,避免的很多问题,易于开发和调试。防崩溃Servlet是由Java编写的,是由Java虚拟机执行的。JVM不允许Servlet直接访问内存区。最后一个防止崩溃的措施是JVM会将异常送到调用链的顶端。一直到它被捕获。如果没被捕获,JVM自己会处理。而不是崩溃。浪潮软件技术研究中心欲穷千里目,更上一层楼的优点(续)跨平台因为是用Java编写的,Java本身就是跨平台的。跨服务器很多Web服务器支持本地Servlet。那些不支持本地Servlet的服务器,一般会有第3方附加系统可允许服务器加载和运行Servlet持久性Servlet是可持久使用的对象。加载之后,一直保持在内存重,直到由明确的指令把它删除调。这样Servlet只要被实例话一次,就可以服务多次请求。动态加载Servlet能够从本地后网络中动态加载。可以服务启动的时候加载,也可以是等到调用的时候再加载。(资源有时候很少用的可以这样做)浪潮软件技术研究中心欲穷千里目,更上一层楼的优点(续)易于部署Servlet是一个标准的部署模型。可扩展性多线程系统开销小。面向对象Servlet把所有的必要的信息和功能封装到精心设计的对象中。比如请求,响应,会话,cookies。通过基本的调用,这些对象提供的对信息和功能的基本访问浪潮软件技术研究中心欲穷千里目,更上一层楼的优点(续)独立于协议它是扩展Http服务器的功能,但是不仅仅限于这个协议。相反,Servlet是完全独立于协议之外的。它可以支持ftp,smtp,pop3,telnet等协议。不管这些是标准的,还是开发者自己创建的。安全性1:无效内存访问调用和类型严重冲突是不可能的。2:Servlet利用服务器的安全管理器来实现特定的安全策略的定制和强制实施3:一个Servlet可以访问每个客户请求中的所有信息。Servlet可以对这些数据进行安全性检查。用Java编写具有Java的所有优点。浪潮软件技术研究中心欲穷千里目,更上一层楼在几乎所有能想象到的方面扩展的服务器的功能。允许客户和服务器之间由真正的双向交互。部分功能:1:基于客户的实质请求,动态构建并返回一个HTML文件2:处理用户的html表单输入并返回适当的响应3:公布由许多用户提交的信息而保障多用户之间的通信4:提供用户身份验证和其他安全机制5:与服务器资源如数据库,其他应用程序和文件交互。以返回由用的信息到客户6:等等。。。。(你所能想象到的关于增强或者扩展服务器的功能的其他任何方法)浪潮软件技术研究中心欲穷千里目,更上一层楼:基本Servlet结构2:Servlet生命期3:讲解两个Servlet示例浪潮软件技术研究中心欲穷千里目,更上一层楼我们编写的Servlet功能实现,都需要继承上面的其中一个。他们本身的关系就是HttpServlet继承了GenericServlet。所有Servlet至少要实现覆盖(override)一个方法。在其中可实现自定义功能。如果继承GenericServlet,则定要实现service(ServletRequestrequest,ServletResponseresponse)如果继承HttpServlet则可以选择实现HttpServlet提供的几个方法或者实现其父类GenericServlet的service方法浪潮软件技术研究中心欲穷千里目,更上一层楼生命周期:1、装载和激活:依据部署参数装载类、设置上下文参数2、实例化:调用init()3、服务:调用service()重复服务4、销毁:调用destory()浪潮软件技术研究中心欲穷千里目,更上一层楼()Servlet首次加载的时候调用一次。和构造函数类似。用于初始化资源。service()每个请求都会调用destroy()Servlet被卸载时执行的方法。由于释放资源ServletRequest接口介绍浪潮软件技术研究中心欲穷千里目,更上一层楼(String)setAttribute(String,Object)getAttribute(String)用于非httpservlet,客户请求信息放到该对象中,传递到servlet的service()方法中浪潮软件技术研究中心欲穷千里目,更上一层楼,用于定制一个响应的必须方法,包含在ServletResponse对象中,这个对象将被传递到servlet的service()方法getWriter();getOutputStream();浪潮软件技术研究中心欲穷千里目,更上一层楼我们可以选择实现其中的方法。service方法是其父类GenericServlet的方法。是必定执行的。如果没有覆盖这个方法,该方法会调用其他一个方法来执行客户请求。(这是基于苦户请求的类型)init()destroy()浪潮软件技术研究中心欲穷千里目,更上一层楼,HttpServletResponseHttpServletRequest继承ServletRequest接口用于httpservlet,在客户请求中将传递的信息封装到HttpServlet中,这个对象被传递到servlet的service方法中,之后被传递到doGet(),doPost()方法中。重要方法:gettCookies();getSession();getMethod();getQueryString();HttpServletResponse继承ServletResponse接口用于定制一个响应的必须方法包含在其对象中。同样传递到servlet的service()方法中,之后被传递到doGet(),doPost()方法中。重要方法:addCookies(();sendRedirect();//重定向浪潮软件技术研究中心欲穷千里目,更上一层楼浪潮软件技术研究中心欲穷千里目,更上一层楼:port/appnane/Time浪潮软件技术研究中心欲穷千里目,更上一层楼浪潮软件技术研究中心欲穷千里目,更上一层楼配置浪潮软件技术研究中心欲穷千里目,更上一层楼状态和会话管理请求转发,服务器端引用,servlet链接浪潮软件技术研究中心欲穷千里目,更上一层楼线程安全如果应用程序不管在它的进程空间中有多少个并行线程运行,它的行为总是可预知的,那么这个应用程序就是线程安全的。实现方法:确保没有线程能够在另外一个线程改变共享资源的过程中读取这些共享资源。这个是很难的。银行取钱线程不安全的例子测试浪潮软件技术研究中心欲穷千里目,更上一层楼线程不安全的例子浪潮软件技术研究中心欲穷千里目,更上一层楼可以确保代码块每次只被一个线程执行。java的同步过程是在一个对象上获取互拆锁的过程。以便该对象每次能有一个线程读取和修改。synchronized(this){}synchrinized(Object){}//推荐publicsynchrinizedvoidservice(){}一般来说,如果共享变量可以被独立的线程读取和修改或者变量本身不是线程安全的话,我们就应该考虑将它同步。相反……比如数据库连接池浪潮软件技术研究中心欲穷千里目,更上一层楼是线程安全最简单的方法。实现SingleThreadModel接口。不能被并行执行性能问题servlet实例池大多数servlet容器试图通过维护一个servlet的实例池来是性能上的问题减到最小。当servlet容器加载实现SingleThr
本文标题:Servlet培训
链接地址:https://www.777doc.com/doc-960363 .html