Servlet技术基础.ppt
《Servlet技术基础.ppt》由会员分享,可在线阅读,更多相关《Servlet技术基础.ppt(95页珍藏版)》请在三一办公上搜索。
1、第1部分 Servlet技术基础,主讲人:柴大鹏 Email:,主要内容,Servlet简介,1,HTTP与HttpServlet,2,Servlet的配置,3,4,请求转发与重定向,5,Servlet上下文,Servlet简介,历史背景,当网络开始被用于提供服务时,服务供应商逐渐意识到需要提供动态的内容。Applet作为最早尝试实现这一目标的技术,侧重于使用客户端平台提供动态的用户体验。与此同时,开发商还对将服务器平台用于这一目的进行了调查。,Servlet简介,最初,CGI(Common Gateway Interface)脚本是用于生成动态内容的主要技术。尽管被广泛使用,但是CGI脚本技
2、术存在着一些缺点,包括平台依赖性和缺乏可扩展性。为了解决这些问题,Java Servlet技术提供了一种便捷的方式用来生成动态的、面向用户的内容。,Servlet简介,什么是Servlet?,Java Servlet是与平台无关的服务器端组件,它可以运行在Servlet容器中,由Servlet容器负责与客户端的通信(采用“请求/响应”模式)以及调用Servlet的方法。,Servlet简介,Servlet的功能,创建并返回基于客户请求的动态HTML页面。创建可嵌入到现有HTML页面中的部分HTML页面(HTML片段)。与其他服务器资源(如数据库或基于Java的应用程序)进行通信。,Servle
3、t简介,接收多个客户端的输入,并将结果广播到多个客户端上。例如,Servlet可以实现支持多个参与者的游戏服务器。根据客户请求采用特定的MIME(Multipurpose Internet Mail Extensions)类型对数据过滤,例如进行图像格式转换。,Servlet简介,Servlet的缺点,尽管Servlet功能非常强大,但并没有被大规模地使用,主要原因在于Servlet的编写很繁琐,它将网页的显示部分和业务逻辑功能混合在一起,不易于维护和分工。,Servlet简介,【例2.1】编写一个Servlet,向客户端输出一个字符串“Hello,world”。,简单的Servlet实例,S
4、ervlet简介,编写Servlet源文件,package cn.sdcet.servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloWorldServlet extends HttpServlet protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException PrintWriter out=respo
5、nse.getWriter();out.println(Hello,world);out.close();,Servlet简介,自动编译源程序,在MyEclipse集成开发环境下进行开发,IDE会自动对Servlet进行编译。在工作空间目录下的“ServletProjWebRootWEB-INFclassescnsdcetservlet”文件夹下可以看到生成的.class文件。,Servlet简介,手动编译源程序,打开命令窗口,转到HelloWorldServlet.java所在的目录,然后执行:javac HelloWorldServlet.java注意:编译过程中常见的错误是找不到java
6、x.servlet和javax.servlet.http这两个包及包中的类。要解决这个问题,就需要让Java编译器知道Servlet API库所在的位置。Tomcat中已经包含了这个库文件,它的完整路径为libservlet-api.jar,只需要在系统的CLASSPATH环境变量中添加这个JAR文件的路径就可以了。,Servlet简介,部署Servlet,在web.xml中为HelloWorldServlet.java添加如下配置信息:HelloWorldServlet HelloWorldServlet HelloWorldServlet/hello,Servlet简介,访问Servlet
7、,打开浏览器,在地址栏中输入http:/localhost:8080/ch02/hello后回车。,Servlet简介,Servlet的生命周期,Servlet的生命周期由Web容器控制,当Servlet被请求时Web容器的操作:如果Servlet实例不存在,Web容器会首先加载Servlet类,然后创建一个该Servlet的实例,接着调用它的init()方法进行初始化。调用service()方法,并向它传递请求和响应对象。当Web容器检测到一个Servlet实例应该被移除时,就会调用它的destroy()方法,以便让该实例可以释放它所使用的资源。,Servlet简介,Servlet生命周期,
8、Servlet简介,Servlet API,Servlet的框架是由两个Java包组成的:javax.servlet和javax.servlet.http。在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的通用接口和类。在javax.servlet.http包中定义了采用HTTP协议通信的HttpServlet类。,Servlet简介,Servlet框架类图,Servlet简介,实现Servlet的方法,扩展GenericServlet类,扩展HttpServlet类,当用户开发自己的Servlet时,可以有下面两种方法:,Servlet简介,如果Servlet类扩
9、展了GenericServlet类,则必须实现service()方法。Servlet容器将客户的请求信息封装在ServletRequest对象中,然后传递给service()方法;service()方法将响应客户端的结果通过ServletResponse对象传给客户。public abstract void service(ServletRequest request,ServletResponse response)throws ServletException,IOException;,扩展GenericServlet类,Servlet简介,HttpServlet已经实现了service(
10、)方法,它首先从HttpServletRequest对象中获取HTTP的请求方式,然后再根据请求方式调用相应的方法。HTTP的请求方式包括DELETE、GET、OPTIONS、POST、PUT和TRACE,在HttpServlet类中分别提供了与之相对应的方法,它们是doDelete()、doGet()、doOptions()、doPost()、doPut()和doTrace()。,扩展HttpServlet类,Servlet简介,Servlet接口,Servlet框架的核心是javax.servlet.Servlet接口,所有的Servlet都应当实现这一接口,它包括下面的5个方法:,ini
11、t()service()destroy(),getServletConfig()getServletInfo(),Servlet简介,ServletRequest接口,ServletRequest接口中封装了客户请求信息,如客户请求方式、参数名和参数值、客户端使用的协议、以及发出客户请求的远程主机信息等。ServletRequest的子类可以为Servlet提供更多的与特定协议相关的方法,如HttpServletRequest提供了读取HTTP Head信息的方法。,Servlet简介,ServletRequest接口的部分方法,Servlet简介,ServletResponse接口,Serv
12、letResponse接口为Servlet提供了返回响应结果的方法,它允许Servlet设置返回数据的长度和MIME类型,并且提供输出流ServletOutputStream。ServletResponse子类可以提供更多和特定协议相关的方法,如HttpServletResponse可以提供设定HTTP HEAD信息的方法。,Servlet简介,ServletResponse接口的部分方法,Servlet简介,ServletConfig接口,Servlet容器使用ServletConfig对象在Servlet初始化时向其传递配置信息。,HTTP与HttpServlet,HTTP概述,HTTP(
13、HyperText Transfer Protocol,超文本传输协议),属于高层应用协议,工作在OSI七层体系中的应用层。HTTP协议主要用在浏览器和Web服务器之间进行通信,是一种最基本的客户机/服务器的访问协议。浏览器向服务器发送请求,而服务器回应相应的网页。,HTTP与HttpServlet,HTTP协议的主要特点,客户机/服务器模式。简单快速。灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。无连接:每次连接只处理一个请求。服务器处理完客户的请求,并收到客户端的应答后,就断开连接。可以节省传输时间。,HTTP与HttpServlet,无状态:
14、协议对于事务处理没有记忆能力。意味着如果后续处理需要前面的信息,它必须重新传输,这样可能导致每次连接传送的数据量增大。另一方面,如果服务器不需要先前信息时它的应答就较快。,HTTP与HttpServlet,图:连接过程,HTTP与HttpServlet,HTTP消息格式,HTTP消息报文分为三部分:请求行/状态行 头信息 实体,HTTP与HttpServlet,HTTP请求,GET/sample.jsp HTTP/1.1Accept:image/gif,image/jpeg,*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostU
15、ser-Agent:Mozilla/4.0(compatible;MSIE5.01;Windows NT 5.0)Accept-Encodin:gzip,deflateusername=chaidapeng&password=123456,请求行,请求头,请求正文,HTTP与HttpServlet,请求的第一行是“请求方法 URI 协议/版本”,其中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1”代表协议和协议的版本。URI完整的指定了要访问的网络资源,通常只要给出相对于服务器根目录的相对目录即可,因此总是以“/”开头。,(1)请求行,HTTP与HttpSer
16、vlet,根据HTTP标准,HTTP请求可以使用多种请求方法,其中最常用的是GET和POST。,HTTP与HttpServlet,GET请求,GET请求最为常见,它后面跟随一个网页的位置,服务器接受请求并返回其请求的页面。在地址栏输入一个地址或在网页上点击链接时,浏览器就像服务器发送了HTTP GET请求。除了页面位置作为参数外,请求中还可以包含其它的内容作为参数,以发送给服务器更多的信息。,HTTP与HttpServlet,POST请求,POST请求要求服务器接收大量的信息,除了POST后面跟随的参数之外,浏览器还会在后面持续发送数据,让服务器进行处理。当填写好表单数据后提交时(method
17、=post),发送的一般是POST请求。通常,POST方法是和服务器应用程序分不开的,服务器应该启动一个服务器应用程序来处理POST发送来的表单数据。,HTTP与HttpServlet,请求头包含许多有关客户端环境和请求正文的有用信息,如请求头可以声明浏览器所用的语言、请求正文的长度等。,(2)请求头,(3)请求正文,请求头和请求正文之间是一个空行。这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户端提交的查询字符串信息。,HTTP与HttpServlet,HTTP响应,HTTP/1.1 200 OKServer:Apache Tomcat/6.0.20Date:
18、Mon,6 Oct 2003 13:13:33 GMTContext-Type:text/htmlLast-Modified:Mon,6 Oct 2003 13:23:42 GMTContent-Length:112HTTP响应示例 Hello HTTP!,状态行,响应头,响应正文,HTTP与HttpServlet,HTTP响应的第一行类似于HTTP请求的第一行,包括协议、状态代码和描述。这里表示通信所用的协议是HTTP 1.1,服务器已经成功处理了客户端发出的请求(200表示成功)。,(1)响应行,HTTP与HttpServlet,状态代码,HTTP与HttpServlet,响应头包含了许多
19、有用的信息,例如服务器类型、日期时间、内容类型和长度等。,(2)响应头,HTTP与HttpServlet,响应正文就是服务器返回的HTML页面,响应头和正文之间也必须用空行分隔。,(3)响应正文,HTTP与HttpServlet,HttpServlet简介,HttpServlet能够根据客户端发出的HTTP请求,生成相应的HTTP响应结果。当获取客户端发出的请求后,Servlet容器负责创建一个HttpServletRequest对象,并把HTTP请求信息封装到这个对象中。Servlet容器还向HttpServlet提供了HttpServletResponse对象,HttpServlet可以通
20、过它来生成HTTP响应的内容。,HTTP与HttpServlet,HttpServletRequest的常用方法,HTTP与HttpServlet,HttpServletReponse的常用方法,HTTP与HttpServlet,HttpServlet的实现,扩展HttpServlet抽象类。覆盖HttpServlet中的部分方法,如doGet()或doPost()方法。获取HTTP请求信息,例如通过HttpServletRequest对象来检索HTML表单所提交的数据或者URL中的查询字符串。无论是哪一种形式,在HttpServletRequest对象中都是以参数名/参数值的形式存放的。,H
21、TTP与HttpServlet,生成HTTP响应结果。通过HttpServletResponse对象可以生成响应结果。HttpServletResponse对象有一个getWriter()方法,该方法返回一个PrintWriter对象,使用这个对象的print()或者println()方法可以向客户端发送字符串数据。,HTTP与HttpServlet,【例2.2】编写一个带表单的HTML页面,表单中提供了一个文本域,让用户输入姓名后提交给Servlet进行处理。在Servlet中,从提交的表单信息中取出用户姓名,然后加上欢迎信息输出到客户端。,访问页面,HTTP与HttpServlet,欢迎页
22、面 请输入用户名:,编写index.html文件,HTTP与HttpServlet,编写和编译源文件,import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class WelcomeServlet extends HttpServlet protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException request.setCharacte
23、rEncoding(UTF-8);String user=request.getParameter(user);response.setContentType(text/html;charset=UTF-8);PrintWriter out=response.getWriter();out.println();out.println(欢迎页面);out.println();out.println(欢迎您,+user+!);out.println();out.close();,HTTP与HttpServlet,配置Servlet,在web.xml文件中添加下面的配置信息:WelcomeServl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Servlet 技术 基础
链接地址:https://www.31ppt.com/p-6518979.html