servlet的存在就是要为客户服务。servlet的任务是得到一个客户的请求,再发回一个响应。而servlet的一生是由容器全盘控制的,它会创建请求和响应对象、为servlet创建一个新线程或分配一个线程,调用servlet的service()方法,并传递请求和响应对象的引用作为参数。
servlet从不存在状态迁移到初始化状态(能够为客户提供服务),首先是从构造函数开始,但是构造函数只是使其成为一个对象,而不是一个servlet,要想成为一个servlet,对象必须具备一些servlet特性,比如能够使用ServletContext引用从容器得到信息。
容器初始化一个servlet时,会为这个servlet创建一个唯一的ServletConfig对象。容器从DD(部署描述文件)读出servlet初始化参数,并把这些参数交给ServletConfig,然后把ServletConfig传递给servlet的init()方法。servlet初始化参数只能读一次,就是在容器初始化servlet的时候,然后就不能修改了。
对于HTTP/servlet而言,幂等表示同一个请求可以做两次,而不会对服务器产生负面作用,并不是说同样的请求总会得到同样的响应,也不是说一个请求没有副作用。所以GET是幂等的,POST不是幂等的。
getHeader:客户的平台和浏览器信息;
getCookies:与请求相关的cookie
getSession:与客户相关的绘画;
getMethod:请求的HTTP方法;
getInputstream:请求的输入流;
getServerPort:得到请求原本发送的端口;
getLocalPort:得到请求最后发送的端口;尽管请求要发送到一个端口(服务器所监听的端口),但是服务器会为每个线程找一个不同的本地端口,这样一来,一个应用就能同时处理多个客户了;
getRemotePort:得到客户的端口;
请求分派:服务器来完成工作,浏览器的地址栏不会发生变化;
重定向:让客户来完成工作,浏览器的地址栏会发生变化;
原文:http://www.cnblogs.com/juaner767/p/5492899.html