Servlet对象生命周期:
1.网站中所有的Servlet接口实现类的实例对象,只能有Http服务器负责创建。开发人员不能手动创建Serlet接口实现类的实例对象
2.在默认的情况下,Http服务器接受到对于当前Servlet接口实现类第一次请求是自动创建这个Servlet接口实现类的实例对象
在手动配置情况下,要求Http服务器在启动是自动创建某个Servlet接口实现类的实例对象
<servlet>
<servlet-name>mm</servlet-name>
<servlet-class>com.bjpowernode.controller.OneServlet</servlet-class>
<load-on-startup>1<load-on-startup>
</servlet>
3.在Http服务器运行期间,一个Servlet接口实现类只能被创建出一个实例对象
4.在Http服务器关闭时,自动将网站中所有的Servlet对象进行销毁
HttpServletResponse接口:
1.介绍:
1)HttpServletResponse接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
2) HttpServletResponse接口实现类有Http服务器负责提供
3)HttpServletResponse接口负责将doGet/doPost方法执行结果写入到响应体交给浏览器
4)开发人员习惯于将HttpServletResponse接口修饰的对象称为响应对象
2.主要功能:
1)将执行结果屹二进制形式写入到响应体
2)设置响应头中content-type属性值,从而控制浏览器实用对应编译器将响应体二进制数据编译成文字,图片,视屏,命令
3)设置响应头中location属性,将一个请求地址复制的给location,从而控制浏览器向指定服务器发送请求
HttpServletRequest接口
1.介绍:
1)HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
2)HttpServletRequest接口实现类由Http服务器负责提供
3)HttpServletRequest接口负责在doGet/doPost方法运行时读取Http请求协议包中信息
4)开发人员习惯于将HttpServletRequest接口修饰对象称为请求对象
2.作用:
1)可以读取Http请求协议包中请求行信息
2)可以读取保存在Http请求协议包中请求头或者请求体中请求参数信息
3)可以替代浏览器向Http服务器申请资源文件调用
请求对象和响应对象生命周期
1.在Http服务器接受到浏览器发送的Http请求协议包之后自动为当前的Http请求协议包生成一个请求对象和一个响应对象
2.在Http服务器调用doGet/doPost方法时,负责将请求对象和响应对象作为实参传递到方法,保证doGet/doPost正确执行
3.在Http服务器准备推送Http响应协议包之前,负责将本次请求关联的请求对象和响应对象销毁
欢迎资源文件
1.前提:
用户可以记住网站名,但是不会记住网站资源文件名
2.默认欢迎资源文件:
用户发送一个针对某个网站的默认请求时此时有Http服务器自动从当前网站返回的资源文件
正常请求:http://localhost:8080/myweb/index.html
默认请求:http://localhost:8080/myweb/
3.Tomcat对于默认欢迎资源文件定位规定
1)规则位置:Tomcat安装位置/conf/web.xml
2)规则命令:<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
多个Servlet之间调用规则:
1.前提条件:
某些来自于浏览器发送请求,往往需要服务端中多个Servlet协同处理。但是浏览器一次只能访问一个Servlet,导致用户需要手动通过浏览器发起多次请求才能得到服务。这样增加用户获得服务难度,导致用户放弃访问当前网站
2.提高用户使用感受规则:
无论本次请求涉及到多少个Servlet,用户只需要手动通知浏览器发起一次请求即可
3.多个Servlet之间调用规则:
1)重定向解决方案
2)请求转发解决方案
重定向解决方案:
1.工作原理:用户第一次通过手动方式通知浏览器OneServlet。OneServlet工作完毕后,将第二个Servlet地址写入响应头location属性中,导致Tomcat将302状态码写入到状态行。
2.实现命令:
respomse.sendRedirect("请求地址")
将地址写入到响应包中响应头中location属性
3.特征:
1)请求地址:既可以把当前网站内部的资源文件地址发送给浏览器,也可以吧其他网站资源文件
2)请求次数:地址发送给浏览器至少发送两次请求,但是只有第一次请求是用户手动发送。后续请求都是浏览器自动发送的、
3)请求方式:重定向解决方案中,通过地址栏通知浏览器发起下一次请求,因此通过重定向解决方案调用的资源文件接受的请求方式一定是GET
4.缺点:
重定向解决方案需要在浏览器与服务器之间进行多次往返,大量时间消耗在往返次数上,增加用户等待服务器时间
请求转发方案:
1.原理:用户第一次通过手动方式要求浏览器访问第一个Servlet。OneServlet工作完毕后,通过当前的请求对象代替浏览器想Tomcat发送请求,申请调用TwoServlet。Tomcat在接受到这个请求之后,自动调用TwoServlet来完成剩余工作
2.实现命令:请求对象代替浏览器向Tomcat发送请求:
//1.通过当前请求对象生成对象生成资源文件申请报告对象
RequestDispatcher report=reques.getRequestDispatcher("/资源文件名")
//2.讲报告对象发送给Tomcat
report.forward(当前请求对象,当前响应对象)
3.优点:
1)无论本次请求涉及到多少个Servlet,用户只需要手动通过浏览器发送一次请求
2)Servlet之间调用发生在服务端计算机上,节省服务端与浏览器之间往返次数增加处理服务速度
4特征:
1)请求次数在请求转发过程中,浏览器只发送一次请求
2)请求地址只能向Tomcat服务器申请调用当前网站下资源文件地址
3)请求方式 在请求转发过程中,浏览器只发送一个了个Http请求协议包。参与本次请求的所有Servlet共享同一个请求协议包,因此这些Servlet接收到请求方式与浏览器发送的请求方式保持一致
多个Servlet之间数据共享实现方案:
1.数据共享:OneServlet工作完毕后,将产生数据交给TwoServlet来使用
2.Servlet规范中提供四种数据共享方案
1.ServletContext接口
2.Cookie类
3.HttpSession接口
4.HttpServletRequest接口
.ServletContext接口:
.ServletContext全局作用域对象生命周期:
1)在Http服务器电启动过程中,自动为当前网站在内存中创建一个全局作用域对象
2)在Http服务器运行期间事,一个网站只有一个全局作用域对象
3)在Http服务器运行期间,全局作用域对象一直处于存活状态
4)在Http服务器准备关闭时,负责将当前网站中全局作用域对象进行销毁处理