Java Web程序开发与分析课件:Servlet编程(一)_第1页
Java Web程序开发与分析课件:Servlet编程(一)_第2页
Java Web程序开发与分析课件:Servlet编程(一)_第3页
Java Web程序开发与分析课件:Servlet编程(一)_第4页
Java Web程序开发与分析课件:Servlet编程(一)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaWeb程序设计

——Servlet编程(1)2主要内容

Servlet概述

Servlet的开发和部署实现Servlet的相关接口和类3什么是ServletServlet是1996年由Sun与其它组织提出的Web服务器端的编程技术。(1)Servlet是服务器端的Java程序,用来扩充和增强Web服务器的功能,对客户端的请求进行响应;(2)Servlet编程技术是基于Java语言的Web服务器编程技术,主要用于Web服务器端获得客户端的访问请求信息和动态生成对客户端的响应信息;(3)Servlet是一个Java类,符合Java类的定义规则,但和一般的Java类相比,它能够处理HTTP请求。4

访问Servlet的基本过程:Web浏览器客户端Web服务器静态HTML页面Servlet容器:Servlet数据库HTTP请求HTTP响应服务器端5Servlet与JSP的关系Servlet是服务器端运行的Java程序,JSP在运行时被转换为Servlet,然后被执行。因此,执行JSP实际上与执行Servlet是一样的。

JSP采用的是脚本语言的形式,而Servlet采用的Java应用程序的实现方式,JSP中常用的内置对象与ServletAPI的对应关系如下图所示:6JSP内置对象与ServletAPI的对应关系

request对象response对象session对象out对象application对象HttpServletRequestHttpServletResponseHttpsessionPrintWriterServletContext7Servlet与JSP的区别:

(1)编程方式不同:JSP遵循脚本语言的形式,Servlet则遵循Java程序的规则标准,因此,JSP在程序的编写方面比Servlet要简单一些;

(2)运行速度不同:JSP在运行时,需要被转换为Servlet,因此,对于初次或修改后的JSP运行的速度会比Servlet要慢一些;

(3)Servlet主要应用在业务逻辑层,对于表示层的实现却不是很适合,JSP则主要是为方便表示层而设计的。8Servlet是服务器端的Java程序,运行在Web服务器的Servlet容器中;

Servlet容器从属于Java虚拟机,根据Servlet的生命周期,负责执行Servlet对象的初始化、运行和卸载。

Servlet的工作原理9

什么是Servlet的生命周期?

Servlet在容器中从创建到删除的过程被称为Servlet的生命周期,可以分为四个阶段:

装载Servlet,实例化,服务处理,卸载Servlet的工作原理10Servlet的生命周期可分为如下几个阶段:

(1)装载Servlet,如:在Servlet容器启动后,客户端首次向Servlet发出请求;

(2)实例化一个Servlet对象,调用Servlet的init()方法进行初始化,该方法只在Servlet第一次被请求加载时被调用一次;

(3)服务处理:容器收到对该Servlet的请求,则调用该Servlet对象的service()方法处理客户端的请求;

(4)卸载:当服务器端不再需要该Servlet时,调用destroy()方法卸载,释放所占用的资源。11客户端Servlet容器Servlet1.请求2.init()3.service()4.返回结果5.响应6.destroy()Servlet生命周期顺序图12主要内容Servlet概述

Servlet的开发和部署实现Servlet的相关接口和类13下面以Eclipse为开发环境,开发和部署一个简单的Servlet

(1)在某一JavaWeb工程中创建一个Servlet14(2)指定Servlet的逻辑名、描述信息、初始化参数和URL映射;15(3)指定Servlet所需实现的方法16(4)完成创建,其所创建的Servlet的Java代码为:

packagepack;

importjava.io.*;

importjava.io.IOException;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassServletTestextendsHttpServlet{

privatestaticfinallongserialVersionUID=1L;

publicServletTest(){

super();

//TODOAuto-generatedconstructorstub

}

所在包名Servlet的实现类17protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

response.setContentType("text/html");

PrintWriterout=response.getWriter();

out.print("thisisservlet");

out.close();

}

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//TODOAuto-generatedmethodstub

}

}添加的代码18查看Servlet的配置文件(Web工程中):web.xml:对Servlet进行注册19web.xml文档<?xmlversion="1.0"encoding="UTF-8"?><web-appid="WebApp_ID"version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><display-name>TestWeb</display-name><servlet><description></description><display-name>ServletTest</display-name><servlet-name>ServletTest</servlet-name><servlet-class>pack.ServletTest</servlet-class></servlet>Servlet信息的描述20

<servlet-mapping><servlet-name>ServletTest</servlet-name><url-pattern>/ServletTest</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>Servlet的映射21运行结果:22主要内容Servlet概述

Servlet的开发和部署实现Servlet的相关接口和类23

在Web程序中,实现Servlet的相关接口和类主要包括以下三个:(1)Servlet接口

Servlet接口声明的语法格式如下:

publicinterfaceServlet{}

该接口是所有的Servlet必须直接或间接实现的接口,它定义了以下的方法:24①init()方法

该方法由Servlet容器调用,仅在实例化Servlet之后调用,且调用一次。

Service()方法

destroy()方法

getServletConfig()方法

返回ServletConfig对象,该对象包含该Servlet的初始化和启动参数;

getServletInfo()方法

返回包含Servlet信息的String类型变量。25(2)GenericServlet类

GenericServlet类的定义格式如下:

publicabstractclassGenericServletimplementsServlet,ServletConfig,java.io.Serializable

GenericServlet是个抽象类,提供了对Servlet接口的基本实现,其中,Service()方法是一个抽象方法。当创建普通的和HTTP协议无关的操作时,可以通过继承该类创建新的Servlet。26(3)HttpServlet类

HttpServlet类是抽象类,其定义格式为:

publicabstractclassHttpServletextendsGenericServletimplementsjava.io.Serializable

该类继承了GenericServlet类,提供了Servlet接口中具体HTTP的实现,用于快速开发应用HTTP协议的Servlet类。

HttpServlet类提供了两个service()重载方法;

27

HttpServlet的子类必须至少重写下面的一个方法:

doGet():处理HTTP的get请求;

doPost():处理HTTP的post请求;

doHead():处理HEADER请求;

doOptions():自动决定支持什么HTTP方法;

doPut():处理HTTP的put请求;

doTrace():处理HTTP的Trace请求;

doDelete():处理HTTP的delete请求;28

通常在创建和实现HttpServlet的派生类时,不需要重写service(),doTrace(),doDelete()等方法。

一般只需要把具体实现逻辑放在doPost(),doGet()方法的任意一个中,然后再其他方法中调用这个方法就可以了。29例:通过继承HttpServlet实现一个Servlet,该Servlet能够对页面的表单数据进行处理。

packagepack;

importjava.io.PrintWriter;

importjava.io.IOException;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

30

publicclassSerletAppextendsHttpServlet{

privatestaticfinallongserialVersionUID=1L;

publicSerletApp(){

super();

//TODOAuto-generatedconstructorstub

}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{重写doGet()31request.setCharacterEncoding("gb2312");

Stringusername=request.getParameter("username");StringwelcomeInfo="welcome"+","+username;

response.setContentType("text/html");PrintWriterout=response.getWriter();

out.println(welcomeInfo);out.close();}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}}获取参数值重写doPost()32

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Inserttitlehere</title></head><body><formaction="SerletAp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论