您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java-Servlet
Servlet服务器程序编程技术学习内容1.动态页面技术2.Servlet基本原理3.ServletAPI4.Servlet生命周期5.Servlet程序的基本结构6.编译、部署和访问Servlet7.HttpServlet类(doGet()和doPost())动态页面技术第一代CGI(CommonGatewayInterface)语言:PerlCC++UNIXshell缺点:每个申请,需要分配一个独立的进程.第二代NSAPI(NetscapeServerAPI)语言:CC++Java缺点:应用程序与WEB服务器任务在同一个进程;API也特定的产品密切关联.第三代Servlet(ServerApplet)语言:Java线程级管理,效率高;共享多种数据源(数据库);跨平台服务新版本为2.4版Servlet与JavaServlet是一个扩展的Java类ServletAPI:–javax.sevlet–javax.sevlet.httpServlet与Java类不同之处:–Servlet设计处理HTTP请求–Servlet运行在服务器端Servlet以Java2技术为基础的服务器端应用程序组件。在Web应用系统中,取代CGI程序。其技术优点:•运行效率:每个Servlet均对应一个独立的“线程”(thread),执行效率和运行稳定性优于CGI程序。•技术适应性:利用Java技术规范方便设计多用途的Servlet组件•跨平台能力:依托Java的跨平台基因,Servlet具备运行在任何Java平台的性能Servlet与Jsp容器:–Servlet容器–Jsp容器运行机制:–Servlet运行于事务逻辑–Jsp服务于客户端管理方式:–Servlet受制于/WEB-INF/web.xml–Jsp配置为/conf/server.xml功能:–Servlet致力解决事务逻辑的相关算法–Jsp主要处理可视化用户界面问题抽象关系:–Servletjavax.servlet/javax.servlet.http–Jspjavax.servlet.jspJ2EE服务器执行方式:Servlet调用servlet的实体或html、jsp文挡Jsp嵌入html或独立的jsp文挡Servlet特征100%PureJava的服务器端程序。支持多种网络协议。在默认情况下,采用无状态的请求-响应处理方式。提供线程级运行,增强服务器端响应客户请求功能组成J2EE服务器的重要组成单元Servlet(=Server+Applet):与Applet相对应,是运行于Web服务器端的Java程序,扩展Web服务器的功能。Servlet使用HTTP协议与客户端进行通讯,能够根据客户端的HTTP请求类型选择适当的Servlet方法处理请求并做出响应。Servlets用特定的Java线程解决方案替代了其它Web服务器方编程模式(CGI,ISAPI等)ServletAPI支持异构服务器环境和协议,具有很强的可移植性Servlet扩展Web服务器功能,能够访问JavaAPI库,包括用于访问企业数据库的JDBCAPI。Servlet的基本概念Servlet的基本概念Servlet的工作流程接收客户端发来的显式数据(formdata)隐藏数据(HTTPrequestheaders)生成结果HTML格式向客户端发送显式数据通过状态代码(HTTPstatuscodes)和响应头(HTTPresponseheaders)向客户端发送隐藏数据WebBrowserWebServerServletRequestResponsehtmlServlet主要的任务–在服务器端提供服务–创建和返回由用户动态交互请求的服务页面–提供后台计算功能–与其它的服务器或应用程序进行通讯–接受多服务请求,并将结果广播到多客户机上–设定HTTP的应答参数–处理结果以格式化的形式返回给用户端JavaServletAPIJavaServletAPI是java扩展程序包,由两个包组成:(1)javax.servlet包含所有servlet类的基本接口和基本类(2)javax.servlet.http包含基于HTTP协议的servlet所需的基本类servlet包的核心是javax.servlet.Servlet接口:•所有的servlet提供基本框架•定义servlet生命周期的基本方法•定义5个方法因此,所有的Servlet都必须实现这一接口ServletAPI主要包javax.servletclass:GenericServletServletInputStreamServletoutStreaminterface:ServletServletConfigServletContextServletRequestServletResponsejavax.servlet.httpclass:HttpServletHttpUtilsinterface:HttpServletRequestHttpServletResponsejavax.servlet.jspclass:requestresponseoutpageContextapplicationsessionconfigpageexceptioninterface:Servlet类层次结构Interfacejavax.servlet.Servletinit()getServletConfig()service()getServletInfo()destroy()Interfacejavax.servlet.ServletConfiggetInitParameter()getServletContext()getInitParameterNames()getServletName()Interfacejavax.io.Serializablejavax.servlet.GenericServletinit()getServletConfig()service()getServletInfo()destroy()getInitParameter()getServletContext()getInitParameterNames()getServletName()log()javax.servlet.http.HttpServletdoDelete()doGet()doOptions()doPost()doPut()doTrace()getLastModified()service()UserServletInterfacejavax.servlet.ServletRequestInterfacejavax.servlet.ServletResponseInterfacejavax.servlet.http.HttpServletRequestInterfacejavax.servlet.http.HttpServletResponseGenericServlet类实现了Servlet接口HttpServlet类扩展了GenericServlet类在用户开发Servlet类时,必须继承以下两个类中的一个:•GenericServlet类•HttpServlet类ServletGenericServletHttpServletMyServletJavaServletAPI通过继承javax.servlet.GenericServlet实现协议无关的servlet通过继承javax.servlet.http.HttpServlet实现基于WEBHTTP协议的servlet二者均有方法service(ServletRequest,ServletResponse)(1)ServletRequest封装从客户端发送给servelt的请求信息(2)ServletResponse封装servelt返回客户端的应答信息GenericServlet的service()是抽象方法,HttpServlet的service()则已经实现了该方法。JavaServletAPIGenericServlet类格式:publicabstractvoidservice(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOEexception{……}参数说明:ServletRequest封装用户的请求信息,传送给servletServletResponse封装请求的响应信息,传送给用户格式:publicabstractvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOEexception{……}参数说明:HttpServletRequest获取HTTP请求方式、参数名及值、远程主机等信息,以确定调用相应的方法。HttpServletResponse返回响应信息,设置返回数据长度、MIME类型、提供ServletOutStream等例Hello.javaimportjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloextendsHttpServlet{publicvoidinit(ServletConfigconfig)throwsServletException{super.init(config);}//publicvoidservice(HttpServletRequestreqest,HttpServletResponseresponse)throwsIOException{//获得一个向客户发送数据的输出流:PrintWriterout=response.getWriter();response.setContentType(text/html;charset=GB2312);//设置响应的MIME类型。out.println(HTMLBODY);out.println(“北京-中华人民共和国的首都);out.println(/body/html);}}Servlet的生命周期:开始于程序被装载到Servlet容器结束于被终止或重新装入其间历经三个阶段,分别为三个方法所支持与实现•初始化阶段init()•响应请求阶段service()•终止阶段destroy()Servlet生命周期Servlet工作流程1容器收到一个请求,把Servlet装入内存2容器调用init()方法,开始Servlet生命周期3servlet()方法提供线程,开始响应用户请求Servlet线程1Servlet线程2….Servlet线程N5容器结束Servlet调用destroy()方法Servlet生命周期环境配置编译Servlet文件环境由于servlet类javaEE技术,未包含在JDK,因此编译前必需:–将servlet-api.jar导入。Ex:setclasspath=%JAVA_HOME%\lib\servlet-api.jar–将servlet-api.jar复制在\jre\lib\ext目录下服务器部署环境Servlet文件编译的class类文件必需要部署在授权访问的目录中才能够正常地执行。–Tomcat:Context环境\WEB-INF\classes\ServletengineServlet&WEBcontainerWEBserverclientHttpServlet{servser()doGet()doPost()}HttpRequestHttpResponseHttpRequestHttpResponseHttpServletRequestHttpServletRespons
本文标题:Java-Servlet
链接地址:https://www.777doc.com/doc-4499012 .html