美文网首页
深入理解Servlet

深入理解Servlet

作者: Johnny_ | 来源:发表于2018-12-18 20:58 被阅读0次

深入理解Servlet

什么是Servlet

在Java web中Servlet是一种用来处理请求和发送响应的组件。


image54.png

Servlet和Tomcat的关系

Tomcat 是Web应用服务器,是一个Servlet/JSP容器。 Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户。而Servlet是一种运行在支持Java语言的服务器上的组件,Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品。


image55.png

在整个请求和响应的过程中:

  • Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。
  • Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器

Java Servlet API 是Servlet容器(tomcat)和servlet之间的接口,它定义了serlvet的各种方法,还定义了Servlet容器传送给Servlet的对象类,其中最重要的就是ServletRequest和ServletResponse。所以说我们在编写servlet时,需要实现Servlet接口,按照其规范进行操作。

Servlet生命周期

通过跟踪源码会发现,Servlet的根是一个接口,代码如下:

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}

这个接口定义了Servlet最重要的方法,service方法用于处理请求和响应,在它前后分别是init初始化方法和destroy回收资源方法。


image56.png

Servlet中的几个重点对象

1. ServletConfig

public interface ServletConfig {
    String getServletName();/获取servlet的名称,也就是我们在web.xml中配置的servlet-name

    ServletContext getServletContext();//获取ServletContext对象,关于ServletContext的内容在下面介绍

    String getInitParameter(String var1);//获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数

    Enumeration<String> getInitParameterNames();//获取在Servlet中所有初始化参数的名字,也就是key值,可以通过key值,来找到各个初始化参数的value值。
}

ServletConfig接口中定义了如上几个方法,用于操作web.xml中的内容。

2. ServletContext

tomcat为每个web项目都创建一个ServletContext实例,tomcat在启动时创建,服务器关闭时销毁,在一个web项目中共享数据,管理web项目资源,为整个web配置公共信息等,通俗点讲,就是一个web项目,就存在一个ServletContext实例,每个Servlet读可以访问到它。因此,它封装了一些公共资源的访问。

  1. web项目中共享数据
    • getAttribute(String name)
    • setAttribute(String name, Object obj)
    • removeAttribute(String name)
  2. 整个web项目初始化参数 (这个就是全局初始化参数,每个Servlet中都能获取到该初始化值)
    • getInitPatameter(String name)
    • getInitParameterNames()
  3. 获取web项目资源
    • getServletContext().getRealPath("/WEB-INF/web.xml")
    • getServletContext().getResourceAsStream("/WEB-INF/web.xml")
  4. 指定路径下的所有内容
    • getServletContext().getResourcePaths("/WEB-INF")

3. request

request就是将请求文本封装而成的对象,所以通过request能获得请求文本中的所有内容,请求头、请求体、请求行。

4. response

response和request相反,response定义了返回给客户端的数据。

相关文章

  • 深入理解Servlet

    深入理解Servlet 什么是Servlet 在Java web中Servlet是一种用来处理请求和发送响应的组件...

  • 深入理解 Servlet

    1、什么是 Servlet ? Servlet(Server Applet)是 Java Servlet 的简称,...

  • 深入理解Servlet

    在学习Servlet中,自己也遇到很多坑,后来在乐字节公开课上学到了很多,为了跟广大朋友互勉,小编整理了几点以供参...

  • 深入理解Tomcat——Servlet容器(Container)

    深入理解Tomcat——Servlet容器 Servlet容器处理客户端的请求并填充response对象。Serv...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • 深入理解JSP和Servlet

    开始编写比较复杂的jsp啦。 全称:javaserver pages在传统的网页HTML文件(.htm,.html...

  • Servlet

    一、了解tomcat容器 个人学习笔记,所以很乱~ 先上几篇好文洗脑? 深入理解Tomcat架构Servlet 体...

  • 理解Servlet、Servlet容器

    本文参考总结自 理解Servlet和Servlet容器、Web服务器等概念 CGI是什么 CGI 早期的Web服务...

  • 理解Servlet

    搞Java开发不可避免要用到Servlet,知其然知其所以然,它是什么呢?可以看我前面写的1-Java的认识扫盲,...

  • 理解Servlet

    前言 这篇文章的出发点是为了整理Servlet相关知识点,以免在相关概念混淆或分不清的时候到处查阅资料。 一、什么...

网友评论

      本文标题:深入理解Servlet

      本文链接:https://www.haomeiwen.com/subject/zlrrkqtx.html