Day1
B/S架涉及的角色以及协议
Servlet的抽象类作用
因为只有接口中只有service方法有用,所以抽象类减少接口的方法数量,降低工作量,用继承两次的方法来实现。
1.创建一个java类继承与HttpServlet父类,使之成为一个Servlet接口。
2.重写httpservlet父类的两个方法,doGet和doPost。
Servlet的生命周期
1.在默认情况下,http服务器接受到对于当前servlet接口实现类第一次请求时自动创建servlet的实例对象。可以手动要求服务器在启动时创建某个servlet的实例对象
<servlet>
<servlet-name>two</servlet-name>
<servlet-class>com.example.servlettest.controller.TwoServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
2.在Http服务器运行期间,一个Servlet接口实现类只能被创建一个实例对象。
3.在Http服务器关闭时,自动将网站中的所有servlet销毁。
HttpServletResponse接口
主要作用:
1.将执行结果以二进制的形式写入响应体。
2.设置响应体中content-type属性值,从而控制浏览器使用对于编译器将响应体二进制数据编译为文字,图片,视频...(一定要在得到输出流之前,更改content-type)
3.设置location属性,浏览器在接受到响应包之后,如果发现响应头中存在location属性,自动通过地址栏向location指定网站发送请求。
HttpServletRequest接口
1.HttpServletRequest接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
2.HttpServletRequest接口实现类由Http服务器负责提供
3.HttpServletRequest接口负责在doGet/doPost方法运行时读取Http请求协议包中信息
4.开发人员习惯于将HttpServletRequest接口修饰的对象称为【请求对象】
作用:
-
可以读取Http请求协议包中【请求行】信息
-
可以读取保存在Http请求协议包中【请求头】或则【请求体】中请求参数信息
-
可以代替浏览器向Http服务器申请资源文件调用
url和urI
URI:资源文件精准定位地址,在请求行中没有这个信息,是从url中截取的一段字符串。
Get和Post
浏览器以GET方式发送请求,请求参数保存在请求头,在Http请求协议包到达Http服务器之后,第一件事就是进行解码,请求头二进制内容由Tomcat负责解码,tomcat9.0默认用utf-8解码
浏览器以POST方式发送请求,请求体二进制内容由当前请求对象负责解码,request默认用东欧字符集解码,解码得到乱码。(在post请求方式下,在读取请求体内容之前,对请求对象重新进行一次utf-8解码)
Day2
请求对象和响应对象的生命周期
<