1、javaweb的三大组件
servlet:用来处理浏览器和服务器之间的请求和响应
filter:过滤器
listener:监听器
2、jsp(java server page)的四大域
-
jsp本质上就是一个servlet
-
四大域对象:
pageContext:请求到响应
request:一次请求范围
session:一次会话范围
application:整个应用 -
其他内置对象
response:响应数据
page:当前页对象
out:数据输出到页面对象
config:servlet的配置类对象
exception:异常对象
3、cookie和session
比较:
- 相同点:在一次会话的多次请求间,共享数据
- 不同点:1.cookie存储在客户端,session存储在服务器端
2.cookie有大小限制,session没有大小限制
3.cookie存在浏览器中,数据传输不安全;session存在硬盘中,数据传输安全
4.生命周期不同,默认情况下,浏览器关闭,cookie就会消失,可以调用setmaxage设置存储时间;服务器关闭,session消失,默认失效时间是30分钟。
实现:
- cookie:浏览器给服务端发出请求,服务端查到数据后,tomcat服务器将response从的cookie对象解析,然后以http格式解析cookie对象,然后响应给浏览器;
浏览器接收到响应,通过http格式解析响应到的cookie对象,然后存到浏览器中;
浏览器再次访问客户端时,会携带cookie,tomcat服务器通过http网络协议解析cookie对象。
- session:session是依赖于cookie实现的
浏览器第一次访问服务器端,会先判断服务器端是否有一个键为jsessionid的cookie对象,如果没有,会创建一个session对象,生成session的id,然后存到集合中;然后创建一个cookie对象,键为jsessionid,值为刚才创建的session的id。 如果有,就通过jsessionid获取session的id,然后查找对应的session,如果session还存在,就直接引用;如果不存在,重复第一次没有jsessionid的操作。
4、请求转发、访问重定向
- 请求转发:浏览器的地址栏不会发生变化;服务器内部资源的转发;只能转发一次
- 访问重定向:浏览器的地址栏会发生变化;可以重定向到其它网站;可以重定向多次;不能使用request域来共享数据。
5、请求、响应的乱码问题
请求:post请求:调用request的setCharacterEncoding方法设置编码格式为utf-8
get请求:tomcat8以后直接在配置文件中配置编码属性为utf-8
响应:调用response的setContentType设置编码格式为utf-8
6、servlet和filter的生命周期
servlet:第一次访问服务器时,servlet就会被web服务器创建
每次访问服务器时,service方法就会执行一次
服务器关闭时,servlet就会被销毁,执行destroy方法
filter:服务器启动时,filter就会被web服务器创建,执行init方法
每次访问服务器被拦截时,doFilter方法就会被调用
服务器关闭时,filter就被销毁,执行destroy方法
7、Http的协同流程
1.在浏览器中输入url或者ip或者域名
2.如果是域名,通过dsn解析成ip地址
3.建立tcp请求,三次握手
4.发送http请求
5.访问服务器,给浏览器响应数据
6.断开tcp连接,四次挥手
7.浏览器对返回的数据进行页面渲染