http协议:
超文本传输协议,是一种无状态协议,就是说客户端发送一次请求,服务器端接收请求,经过处理返回给客户端信息,然后客户端和服务器端的链接就断开了,为了维护他们之间的链接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息,有2中解决方案,一是在客户端保存,二是在服务器端保存。
1.在客户端保存:Cookie
2.在服务器端保存:Session(session需要依靠cookie来实现)
3.在用户禁用cookie的限制下,只能使用URL重写的方式在每次请求之后附上一个键值对来保存客户端的信息。
4.隐藏表单。<input type="hidden" name="method" value="login">
servlet:
1.service加let的缩写,顾名思义,服务器上运行的java小程序。
2.servlet是用java语言编写,属于javaEE,而非j2se,他是在j2se基础上进行了扩展,并遵循了一定的规范。
3.sevlet用于接收客户端发送的显示数据和隐式数据,并进行处理,然后将结果返回给客户端。
4.servlet和web服务器的不同之处在于web服务器只能返回静态页面,而servlet能够返回动态页面。
为什么servlet能够生成动态页面呢?因为servlet能够通过查询数据库实时生成数据。
sevlet处理请求响应全过程
1>>启动web服务器,接收请求。
2>>客户端发送请求
3>>浏览器对请求进行封装,并发送到web服务器端
4>>web服务器对请求信息进行解封装,如果请求的是静态页面,则交由web服务器处理,如果请求的是动态页面,则交由web容器处理。
5>>web容器根据web.xml文件去找相应的servlet类,如果没找到servlet实例,直接返回一个而错误页面给客户端。如果找到servlet,则产生一个新的线程,容器产生request和response对象,request对象封装客户端的请求信息,response对象封装返回给客户端的响应信息,将这2个对象作为参数传递给servlet的service()方法.(在web服务器没有将请求信息交给容器之前,是没有resquest和response对象的,并且这2个对象只能在容器中存在)
6>>servlet对请求信息进行处理,并将响应信息封装到response对象中返回给web服务器,此时再由服务器将响应信息进行封装,发送给客户端,客户端浏览器得到信息之后对其进行解封装,然后显示在浏览器上。
7>>当servlet处理完请求之后,就会刷新response对象,将控制权交给web服务器。
servlet生命周期
1>>服务器启动并装载servlet
2>>容器实例化servlet
3>>容器触发init()方法初始化servlet
4>>客户端发送请求,servlet调用service()方法对请求进行处理
5>>容器丢弃servlet,调用servlet的destory()方法