标签:
Servlet 是在服务器上运行的小程序。它的生命周期是:
客户端请求该 Servlet;
加载 Servlet 类到内存;
实例化并调用init()方法初始化该 Servlet;
service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());
destroy()。
创建Servlet对象的时机:
Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。
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().
标签:
原文地址:http://my.oschina.net/u/2411776/blog/477664