Servlet基础

Posted 喜东东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet基础相关的知识,希望对你有一定的参考价值。

1:为什么需要Servlert?

:在jsp技术出现之前,如果想动态成html页面,那就只有在服务器端运行Java程序,并生成HTML格式的内容。Servlet就是运行在服务前端的Java程序。

1-1:JSP开发Web程序流程图

 

 

1—2:Servlet开发Web流程图

 

 

2:什么是Servlet?

:浏览器发送一个HTTP请求,HTTP请求由Web容器分配给特定的Servlet进行处理,Servlet的本质是一个Java对象,这个对象拥有一系列的方法来处理HTTP请求。常见的方法有doGet(),doPost()等。Web容器中包含了多个Servlet,特定的HTTP请求该由哪一个Servlet来处理是由Web容器中的web.xml来决定的。

Servlet是一个符合特定规范的Java程序,是一个基于Java技术的web组件,运行在服务器端,由Servlet容器所管理用于生成动态的内容,Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写的一个Java类,它主要用于处理客户端请求并做出响应,

 

3:Servletr容器?

:Servlet容器也叫作Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,管理和运行Servlet/jsp的容器也称为Web容器,

4:Servlet与JSP的关系?

1.JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表达。

2.JSP编译后是"类servlet"。

3.Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且 完全 从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组 成一个扩展 名 为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

JSP在运行时会被Web容器翻译成一个Servlet.

5:Servlet接口常用的方法:

方法名称

功能描述

public void init(ServletConfig config)

由servlet容器调用,用于完成Servlet对象在处理客户请求前的初始化工作。

public void service(ServletRequest request, ServletResponse response)

由servlet容器调用,用于处理客户端的请求

public void destroy()

由servlet容器调用,释放Servlet对象所使用的资源

public ServletConfig getServletConfig()

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

public String getServletInfo()

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

6:抽象类GenericServlet的常用方法

方法名称

功能描述

public void init(ServletConfig config)

调用Servlet接口中的init()方法。此方法还有一个无参的重载方法,其功能与此方法相同

public String getInitParameter(Stringname)

返回名称为name的初始化参数的值

public ServletContextgetServletContext()

返回ServletContext对象的引用

7:抽象类HttpServlet:

抽象类HttpServlet继承自GenericServlet类,具有与GenericServlet类似的方法和对象,支持HTTP的post()和get()方法,并提供了与HTTP相关的实现。

HttpServlet能够根据客户发出的HTTP请求,进行相关的处理,并得到相应的结果,然后此结果被自动封装到HttpServletRequest对象中。

HTTPServlet的常用方法:

方法名称

功能描述

public void service(ServletRequest request, ServletResponse response)

调用GenericServlet类中service()方法的实现

public void service(HttpServletRequest request, HttpServletResponse response)

接收HTTP请求,并将它们分发给此类中定义的doXxx方号

protected void doXXX(HttpServletRequest request, HttpServletResponse response)

|根据请求方式的不同,分别调用相应的处理方法,如doGet(),doPost()等

HttpServletserviceHttpServletRequest request, HttpServletResponse )相当于一个分发器,可以根据请求方法的类型,调用相应的doXXX()方法,所以在编写Servlet时只需要根据应用的需求,重新写doGet()或者doPost()方法即可。

HttpServlet类是一个抽象类,如果需要编写Servlet就需要继承HttpServlet类,从中需要响应到客户端的数据封装到HttpServletResponse对象中,

8ServletConfig接口;

servlet容器使用ServletConfig对象在Servlet初始化期间向其传递配置信息,一个Servlet只有一个servletConfig对象,

ServletConfig的常用方法:

方法名称

功能描述

 

public void getInitParameter(String name)

获取web.xml中设置的以name命名的初始化参数值

 

public ServletContext   getServletContext()

返回Servlet的上下文对象的引用

 
 

 

9:ServletContext对象的常用方法:

方法名称

功能描述

public String getInitParameter(String name)

获取名称为name的系统范围内的初始化参数,系统范围内的初始化处参数可以在部署描述符中使用<context-param>元素定义

public void setAttribute(String name,Object object)

设置名称为name的属性

public Object getAttribute(String name)

获取名称为name的属性

public String getRealpath(String path)

返回参数所代表目录的真实路径

public void log(String messge)

记录一般日志

 

10:ServletRequestrian接口的常用方法

方法名称

功能描述

public Object getAttribute(String name)

获取名称为name的属性值

public void setAttibute(String name,Object  object)

在请求中保存名称为name的属性

public void removeAttribute(String name)

清除请求中名字为name的属性

 

11:httpServletRequest接口常用方法

方法名称 功能描述
public String getContextPath() 返回请求URL中表示请求上下文的路径,上下文路径时请求URL的开始部分
public Cookie[] getCookies() 返回客户端在此次请求中发送的所有cookie对象
public HttpSession getsession() 返回和此次请求相关联的session,如果没有给客户端分配session,则会创建一个新的session
public String getMethod() 返回此次请求所使用的HTTP方法的名字,如GET,POST

 

12:ServletResponse接口常用方法:

方法名称

功能描述

public PrintWrite getWriter()

返回PrintWrite对象,用于向客户端发送文本

public String getCharacteEncoding()

返回在响应发送的正文所使用的字符编码集

public void setCharacterEncoding()

设置发送到客户端的响应市委字符编码

public void setContentType(String type)

设置发送到客户端响应的内容类型,此时响应的状态属于尚未提交

13: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进行编码

14:Servlet的生命周期

 

 

以上是关于Servlet基础的主要内容,如果未能解决你的问题,请参考以下文章

Servlet技术——Servlet基础

Servlet基础

javaWeb_Servlet_Servlet基础_Servlet概述以及HelloWorld

JavaWeb------servlet基础

Servlet基础知识

javaWeb_Servlet_servlet基础_ServletConfig