Servlet的本质和五个基本方法

servlet篇

servlet的本质和五个实现方法

Servlet是一个Java的接口。Servlet接口是一套处理网络网络请求的规范。

Servlet本质

Servlet只是一个处理网络请求的规范的接口,简单的说就是一个Java借口而已。Servlet从来不会和客户端打交道,打交道的是Servlet容器,比如我们常见的Tomacat容器。我们在使用Servlet时首先会把Servlet部署在Tomcat容器里面,不然的过你的Servlet不会起作用。

Tomcat才是真正和客户端打交道的一个的家伙,当客户点请求时,Tomcat根据客户端的url判断该把这个请求交给哪个Servlet去处理,Servlet调用sevice方法返回一个response对象,Tomcat再把这个response对象返回给客户端。

到头来Servlet本质上就是一个“引路人”,当需要处理网络请求的时候,Servlet就出来指引网络请求的相关功能怎么去工作(下面会介绍到工作中具体调用的方法)。

Servlet的五个方法

所有实现Servlet的类都需要实现Servlet的五个方法,分别是init()、service()、doGet()、doPost()和destroy();

  1. init()时Servelt的构造方法
    一个Servlet只会被创建一次,也就是说如果很多客户端都访问这个Servlet时,访问的都是同一个Servlet,这样就会存在一个线程不安全的问题。

    Servelt默认在Tomcat容器中是被访问时才会被创建,也就是说当Tomcat容器启动时Servlet并没有被创建,当Servlet需要工作的时候才会被创建。当然如果需要Servlet启动的比较早的可以在配置Servlet中配置出现下面一行,目的是在Tomcat容器启动时Servelt就被创建。

<load-on-startup>1</load-on-startup>
  • service()是Servlet处理请求的方法。

    该方法是判断请求的类型GET或者Post,一个请求指挥执行一次service方法。
    Servlet的本质和五个基本方法_第1张图片

  • doGet()和doPost()方法对应了http协议中的get和post请求,区别:

  • doGet只有一个流,参数附加在url之后,参数的大和类型都有严格的限制,大小只能几k类型只能是字符。doPost不通过url传递参数,通过其他的流传递参数,所以类型和大小都没有限制。

  • 由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。GET 调用会把传递给Servlet的参数在 URL 里显示出来,这样对系统安全方面存在问题;而 POST 请求则通过其他流传递参数,不会在 URL 中显示,更安全;例如用户登录时,如果是用 GET 调用会把用户账号密码都显示在 URL 中,用 POST 调用则不会显示。

  • destroy()销毁Servlet对象

或者说所有继承Servlet在类都要回答Servelt的三个问题

  • 你接受到请求时要做什么
  • 你初始化时要做什么
  • 你销毁时要做什么

你可能感兴趣的:(servlet,java,tomcat,servlet,网络)