Http协议
概述
- 协议
双方在交互、通讯的时候,遵守的一种规范、规则。
- http协议
针对网络上的客户端与服务器端在执行http请求时遵守的一种规范。
规定:
1、客户端在访问服务器端时要带上哪些东西
2、服务器返回数据的时候要带上什么东西
简介客户端和服务器端通讯
可安装抓包工具HttpWatch来实验了解。
http请求数据解析
http请求数据包括三部分:请求行、请求头、请求体
- 请求行
- 请求头
*
*请求体
浏览器真正提交到服务器上的数据
Http响应数据解析
响应的数据里包含三部分:响应行、响应头、响应体
- 响应行
*响应头
*响应体
实际返回的数据
get和post的区别
get | post | |
---|---|---|
数据传输 | 在地址栏拼接数据有安全隐患 | 数据以流的方式写过去,安全 |
适用情况 | 一般从服务器获取数据,并且客户端也不用提交上面的数据时用 | 一般提交数据到服务器使用 |
数据长度 | 仅可带1kb数据,有限 | 无限制 |
web资源
在http协议中,规定了请求和响应双方,客户端与服务器端。与web相关的资源。
- 静态资源
html 、js、css - 动态资源
servlet/jsp
servlet
实质是一个运行在web服务器上的java程序,用于接受和响应客户端的http请求,更多是配合动态资源来工作。
tomcat是servlet的容器,遇到请求挑拣合适的servlet处理。
注:访问静态web资源也需要用到servlet,不过是tomcat已经定义好的一个DefaultServlet。
配置servlet
在web工程的 WebContent – WEB-INF – web.xml中添加如下代码
<!-- 向tomcat报告,当前应用有个Servlet,名为LoginServle,具体路径是mona.tuzhi.LoginServlet -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>mona.tuzhi.LoginServlet</servlet-class>
</servlet>
<!-- 注册servlet映射,servlet-name同上,url-pattern是在地址栏的path(/开头) -->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
servlet执行过程
servlet继承体系
servlet接口
|
|
GenericServlet
(重写了init(),service(),destroy(),getServletConfig(),getServletInfo()等抽象方法)
|
|
HttpServlet(用于处理http的请求,service()中调用doget()或dopost())
servlet的通用写法
servlet的生命周期
- 初始化
- 服务
- 销毁
生命周期方法指从对象的创建到销毁一定会执行的方法。
doPost和doGet不算生命周期方法,不一定会执行。
servlet提前初始化
- 原因:
init()有时需要执行一些初始化工作,甚至是一些比较耗时的逻辑。为了减少初次访问时在init()方法逗留的时间,进行提前初始化。 - 方法:
在servlet配置文件中添加配置load-on-startup参数
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>mona.tuzhi.LoginServlet</servlet-class>
<!--数字从2开始,数字越小启动越早(1给了DefaultServlet)-->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
Servlet配置对象ServletConfig
可以用于获得servlet的参数配置信息
- 用处:
在开发中用到需要用到人家的代码,他的代码放在自己的servlet类中。而该servlet中需要不固定的参数值,要求引用者必须配置指定参数。
- 导入含servlet的jar包的步骤:
1. 导入jar包。
2. 在web.xml中注册servlet:路径写导入jar中类的全路径
3. 按提示添加参数 params
上述内容学习自黑马课程。
心得:脚步虽慢,但只进不退。