JavaWeb学习总结001-初始servlet

1.HTTP协议:

 

   客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。

 

    HTTPhypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

 

    HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

 

2.HTTP协议简介:

 

HTTP使用请求-响应的方式进行传输,一个请求对应一个响应,并且请求只能是由客户端发起的。

 

HTTP协议的版本:HTTP/1.0HTTP/1.1

 

HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。

 

HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

 

3.HTTP请求:

   

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括:一个请求行、若干请求头、以及实体内容,如下所示 :

 

4.请求行:

请求行中的GET称之为请求方式,请求方式有:

POSTGETHEADOPTIONSDELETETRACEPUT

常用的有: GET、 POST

用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

 

不管POSTGET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:

如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

GET /mail/1.html?name=abc&password=xyz HTTP/1.1

GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K

如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

 

5.HTTP响应:

 

一个HTTP响应代表服务器向客户端回送的数据,它包括:一个状态行、若干响应头(消息头)、以及实体内容 。

 

 

6.状态行:

 

格式:HTTP版本号 状态码 原因叙述<CRLF>

举例:HTTP/1.1 200 OK

    状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:

 

状态码     含义

100199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

200299  表示成功接收请求并已完成整个处理过程,常用200

300399 为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,常用302307304

400499 客户端的请求有错误,常用404

500599 服务器端出现错误,常用 500

 

7.CGI 通用网关接口,实现页面的动态生成。Servlet是改进的CGI

    

 

8.简介:Servletsun公司提供的一门用于开发动态web资源的技术。

 

Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

编写一个Java类,实现servlet接口。

把开发好的Java类部署到web服务器中。

 

9.Servlet容器:

 

Servlet容器为Java Web应用提供运行时环境,它负责管理ServletJSP的生命周期,以及管理它们的共享数据。

也称为Servlet引擎

是一个编译好的可执行程序,它是web服务器与servlet间的媒介。负责将用户请求翻译成Servlet能够理解的形式传递给servlet,同时传给servlet一个对象使之可以送回响应

负责管理 servlet 的生命周期

Servlet不能独立运行,必须部署到Servlet容器中,由容器来实例化和调用Servlet方法

Servlet容器也称为Java Web应用容器或Servlet/JSP容器

目前流行的Servlet容器为:Tomcat  Resin  J2EE服务器:如weblogicwebsphere

 

10.web.xml文件:

 

通过web.xml文件,可以将web应用中的:

某个web资源配置为web应用首页

servlet程序映射到某个url地址上

web应用配置监听器

web应用配置过滤器

但凡涉及到对web资源进行配置,都需要通过web.xml文件

举例:通过web.xml文件配置web应用首页再配置成网站主页。

注意:Web.xml文件必须放在web应用\WEB-INF目录下。

 

11.web.xml配置文件:

 

将 Servlet 组件 注册到容器中

Servlet容器根据 web.xml 文件的配置信息来找到要运行的Servlet类,并加载、执行

 

标签<servlet>用于注册servlet程序,包括两个子标签:

<servlet-mane>: 设置注册名称,不可冲突

<servlet-class>:指定当前注册的servlet的完整类名,包括类的包名

 

servletwet.xml中映射其访问路径,包括两个子标签:

<servlet-mane>: 用于指定已经注册过的servlet名称

<url-pattern>:用于设置servlet的对外访问路径

 

12.servlet执行过程:

 

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:

 

1.Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。

2.装载并创建该Servlet的一个实例对象。 

3.调用Servlet实例对象的init()方法。

4.创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servletservice()方法并将请求和响应对象作为参数传递进去。

5.WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servletdestroy()方法。

 

13.Tomcat容器处理请求过程:

 

1.用户链接指向一个Servlet

2.Tomcat创建两个对象:HttpServletRequestHttpServletResponse

3.Tomcat找到Servlet,产生一个Servlet线程,并把创建的两个对象传递给这个Servlet线程

4.Tomcat调用Servletservice()方法,service()方法会调用doGet()doPost

5.doGet()生成动态页面,传递给Response对象

6.TomcatResponse对象转换成一个HTTP响应,发给请求的用户。 

 

14.servlet API:

 

包含 javax.servlet.* 和 javax.servlet.http.* 两个软件包

javax.servlet 包含所有 Servlet 实现和扩展到通用接口和类(与HTTP协议无关的Servlet类)

javax.servlet.http 包含与HTTP协议相关的功能

所有servlet须实现 javax.servlet.Servlet 接口。可以通过直接或继承方式实现

GenericServlet 和 HttpServlet 两个类实现了Servlet 的所有接口。

 

15.Servlet的实现:

 

通过继承 HttpServlet 实现 自定义 Servlet

Server 端响应方法:doGet(), doPost()

复写 doGet 或者 doPost 方法

通过HttpServletRequest,可以得到所有的输入数据,比如表单数据、HTTP请求报头等客户信息

通过HttpServletResponse可以指定输出信息

 

接口 : HttpServletRequest

接口 : HttpServletResponse

 

16.<load-on-startup>元素:

 

如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。

举例:

<servlet>

<servlet-name>invoker</servlet-name>

<servlet-class>

org.apache.catalina.servlets.InvokerServlet

</servlet-class>

<load-on-startup>2</load-on-startup>

</servlet>

用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据。

里面的值越小越早被调用,一般是23

 

17.缺省servlet

 

如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet 

凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。

 

18.Servlet接口实现类:

 

Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServletHttpServlet

HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

 

HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServletdoGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGetdoPost方法,而不要去覆写service方法。

 

19.Servlet接口:

 

概述:定义了所有Servlet需要实现的方法

Servlet接口的常用方法:

方法名称 功能描述

public void init(ServletConfig config) 由 servlet 容器调用,用于完成Servlet对象在处理客户请求前的初始化工作

public  void service(ServletRequest   req, ServletResponse  res) 由 servlet 容器调用,用来处理客户端的请求

public  void destroy() 由 servlet 容器调用,释放Servlet对象所使用的资源

public ServletConfig getServletConfig() 返回ServletConfig  对象,该对象包含此 servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init() 方法的对象

public String getServletInfo() 返回有关 servlet 的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(比如 HTMLXML,等等)

 

20.init()方法:

 

Servlet实例化之后,Servlet容器会调用init()方法让Servlet对象在处理客户请求前可以完成一些初始化的工作,例如,建立数据库的连接,获取配置信息等

对于每一个Servlet实例,init()方法只能被调用一次

init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。

可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。

 

21.ServeltConfig对象:

 

Servlet初始化过程中获取配置信息

一个Servlet只有一个ServletConfig对象

ServletConfig的常用方法

方法名称 功能描述

public String getInitParameter(String name)  获取web.xml中设置的以name命名的初始化参数值

public ServletContext getServletContext( ) 返回Servlet的上下文对象引用

 

22.ServletContext对象:

 

Servlet引擎为每个web应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在Servletconfig对象中,调用Servlet.getServletContext方法可以返回ServletContext对象的应用

由于一个web应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为application对象(web应用程序对象)

功能:

获取web应用程序的初始化参数

记录日志

Application域范围的属性

访问资源文件

获取虚拟路径所映射的本地路径

Web应用程序之间的访问

ServletContext的其他方法

 

23.service()方法:

 

service()方法来处理客户端的请求

应用的逻辑实现和流程控制由重写service()方法来实现

容器会构造一个表示客户端请求信息的请求对象(类型为ServletRequest

一个用于对客户端进行响应的响应对象(类型为ServletResponse

service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。

 

24.ServletRequest对象:

 

HttpServletReques概述:

除了继承ServletRequest接口中的方法,还增加了一些用于读取请求信息的方法

HttpServletRequest的常用方法

方法名称 功能描述

public String getContextPath() 返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分

public Cookie[ ]  getCookies() 返回客户端在此次请求中发送的所有cookie对象

public HttpSession getSession() 返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session

public String  getMethod()     返回此次请求所使用的HTTP方法的名字,如GETPOST

 

25.ServletResponse对象:

 

HttpServletResponse概述

除了继承ServletResponse接口中的方法,还增加了新的方法

HttpServletResponse的常用方法

方法名称 功能描述

public void  addCookie(Cookie cookie) 增加一个cookie到响应中,这个方法可多次调用,设置多个cookie

public void  addHeader(String name,String value) 将一个名称为name,值为value的响应报头添加到响应中

public void  sendRedirect(String  location) 发送一个临时的重定向响应到客户端,以便客户端访问新的URL

public void  encodeURL(String url) 使用session ID对用于重定向的URL进行编码

 

26.destroy()方法

 

Servlet对象可以释放它所使用的资源

当需要释放内存或者容器关闭时,容器就会调用Servlet对象的destroy()方法

在一个Servlet实例中, destroy()方法只能被调用一次

 

27.getServletConfig()方法

 

该方法返回容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含了Servlet的初始化参数

 

28.getServletInfo()方法

 

返回一个String类型的字符串,其中包括了关于Servlet的信息,例如,作者、版本和版权。该方法返回的应该是纯文本字符串,而不是任何类型的标记(HTMLXML等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值