Servlet的学习日志

Servlet 是在服务器上运行的小程序。它的生命周期是:

  1. 客户端请求该 Servlet;

  2. 加载 Servlet 类到内存;

  3. 实例化并调用init()方法初始化该 Servlet;

  4. service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());

  5. destroy()。

创建Servlet对象的时机:

  1. Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。

  2. 在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。

  3. Servlet Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。

    <servlet>
           <servlet-name>Init</servlet-name>
           <servlet-class>org.xl.servlet.InitServlet</servlet-class>
           <load-on-startup>1</load-on-startup></servlet>

servlet运行于servlet容器中。servlet容器可以接受客户端的请求并作出相应。通常我们用到的就是http的请求和响应了。容器通过url来判断请求应该由哪个servlet来处理。这是就会调用这个servlet的service方法。平时我们写servlet时也是覆盖这个方法。
HttpServlet实际上调用了doGet或者doPost方法,所以继承自这个类的时候只要覆盖doGet和doPost方法。

http的get方法是将你要传输的数据放在url后的,也就是我们常用的test.jsp?name=aaa&age=10这种格式,数据都是可以通过url就可以看到了,你在网页中的属性就能看到这个url,这是get方法,由于受到http协议的限制,这种方式传输数据有大小限制,1024,为了能够传输更多的数据,你可以采用post,post是将数据放到了http的Content中,这就不受http协议的影响了,而且传输的数据不能直接被看到(登陆的用户名和密码可不能用get哦)。大量的数据或是文件上在数据,都只能用post来传而且get方法提交的页面能够通过history.back()回退,但post的数据就不能,回退时告诉已经过期,应为你已经post出去了,就不能取回来了。 
简单的说,get是通过http header来传输数据,有数量限制,而post则是通过http body来传输数据,没有数量限制.
servlet就是专门用来处理http请求的,所以对应不同数据传输方式的两种方法就是doGet()和doPost().

你可能感兴趣的:(生命周期,创建对象,doGet(),doPost().)