- servlet的生命周期
分为五个阶段:加载、创建、初始化、处理客户请求、卸载
1.加载:容器通过类加载器使用servlet类对应的文件加载servlet
2.创建:通过调用servlet构造函数创建一个servlet实例
3.初始化:调用init()方法初始化
4.处理客户请求:每当有一个客户请求,容器会创建一个新的线程来处理客户请求(调用service()方法来响应客户请求,service()方法会根据请求的method属性来调用doget()&dopost()方法)
5.卸载:容器在卸载servlet之前,需要调用destroy()方法让servlet自己释放其占用的资源
转发(forward)和重定向(redirect)的区别
1.地址栏显示不同,转发地址栏显示的是原来的地址,因为其是由服务器请求资源,直接访问目标地址的url,并读取响应内容,然后将内容发送至浏览器,浏览器并不知道目标地址。重定向显示的是新的url,因为其是个服务器根据逻辑发送状态码至浏览器,让浏览器重新请求目标地址,所以浏览器是知道目标地址的
2.数据共享方式不同,转发页面和目标页面均可共享request的数据。重定向则是不可以共享数据
3.通常应用的场景不同,转发一般用于用户登录的时候,根据角色转发到相应的模块。重定向一般用于用户注销登录时返回主页面和跳转到其他的网站等
4.效率不同,通常认为转发的效率要更高session和cookie有什么区别
1.数据存储的地址不同,cookie数据保存在客户端,session数据保存在服务器端
2.cookie可以被客户端禁用,但是客户端无法禁用服务端的session
3.存储的对象不同,session能够存储任意的java对象,cookie只能存储string类型的对象
4.单个cookie保存的数据<=4kb,一个站点最多保存20个cookie。对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制
5.cookie对客户端是可见的,存在泄密风险,因此cookie存储一些不敏感的信息。session对客户端不可见,相对安全get请求和post请求有什么区别
1.get请求参数传递拼接url后面的,post请求参数放在resquest body中
2.get请求参数长度会受到url长度的限制,对于post请求理论上是不会受限制的,但是实际上各个服务器会规定对post提交数据大小进行限制
3.post请求安全性比get请求好servlet有哪些核心方法
1.init():在servlet的生命期中,仅执行一次init()方法。它是在服务器装入servlet时执行的。可以配置服务器,以在启动服务器或客户机首次访问servlet时装入servlet。无论有多少客户机访问servlet,都不会重复执行init()。缺省的init()方法通常时符合要求的,但也可以用定制init()方法来覆盖它,典型的是管理服务器端资源
2.service():service()方法是servlet的核心。每当一个客户请求一个httpservlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个请求(servletrequest)对象和一个响应(servletresponse)对象作为参数。在httpservlet中已存在service()方法。缺省的服务功能是调用与http请求的方法相应的do功能
3.doget():当一个客户通过html表单发出一个http get请求或直接请求一个url时,doget()方法被调用。与get请求相关的参数添加到url的后面,并与这个请求一起发送,当不会修改服务器端的数据时,应该使用doget()方法
4.dopost():当一个客户通过html表单发出一个http post请求时,dopost()方法被调用。与post请求相关的参数作为一个单独的http请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用dopost()方法
5.destroy():destroy()方法仅执行一次,即在服务器停止且卸载servlet时执行该方法。典型的,将servlet作为服务器进程的一部分来关闭。缺少的destroy()方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源
6.getservletconfig():getservletconfig()方法返回一个servletconfig对象,该对象用来返回初始化参数和servletcontext。servletcontext接口提供有关servlet的环境信息
7.getservletinfo():getservletinfo()方法是一个可选的方法,她提供有关servlet的信息,如作者、版本、版权jsp的九大内置对象是什么
1.request:httpservletrequest接口对象
2.response:httpservletresponse接口的对象
3.out:jspwriter类的对象,用于把结果输出至网页上
4.session:httpsession类的对象
5.application:servletcontext类的对象,与应用上下文有关
6.config:servletcongfig类的对象
7.pagecontext:pagecontext类的对象,提供对jsp页面所有对象以及命名空间的访问
8.page:类似于java类中的this关键字,代表当前页面
9.exception:exception类的对象,代表发生错误的jsp页面中对应的异常对象jsp四大作用域是什么
1.pagecontext:页面域,在当前页面有效,离开当前jsp页面(无论是重定向还是转发),则pagecontext中的所有属性值就会丢失
2.request:请求域,在当前请求中有效,如果通过转发方式跳转,则转发目标页面仍然可以拿到request中的属性值
3.session:会话域,在当前会话有效,会话失效,则session中的数据也随之丢失
4.application:应用域,在所有应用程序中有效,只要服务器不停止,则application对象就一直存在,并且为所有会话所共享请描述一下osi七层参考模型
1.应用层:网络服务与最终用户的一个接口,常见的协议有:http ftp smtp snmp dns
2.表示层:数据的表示、安全、压缩。确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取
3.会话层:建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话
4.传输层:定义传输数据的协议端口号,以及流控和差错校验,协议有tcp udp
5.网络层:进行逻辑地址寻址,实现不同网络之间的路径选择,协议有icmp igmp ip等
6.数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路
7.物理层:建立、维护、断开物理连接