在 web.xml 中配置BonjourServlet的访问路径
<servlet> <servlet-name>BonjourServlet</servlet-name> <servlet-class>com.lilith.servlet.BonjourServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>BonjourServlet</servlet-name> <url-pattern>/bonjour</url-pattern> </servlet-mapping> <context-param> <param-name>username</param-name> <param-value>peter</param-value> </context-param> 复制代码
context-param是上下文参数,属于整个web工程
重启Tomcat,浏览器访问 http://localhost:8080/bonjour
可以成功获取到web.xml中配置的context-param的值
获取工程路径和部署路径
通过ServletConfig对象的getContextPath和getRealPath方法可以获取到当前工程路径和当前项目的部署路径
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取web.xml中的上下文参数context-param ServletContext servletContext = getServletContext(); String username = servletContext.getInitParameter("username"); System.out.println("上下文参数username的值为:" + username); // 获取当前工程的路径 String contextPath = servletContext.getContextPath(); System.out.println("当期工程路径为:" + contextPath); // 获取部署路径 String realPath = servletContext.getRealPath("/"); System.out.println("当前部署路径为:" + realPath); } 复制代码
重启Tomcat,浏览器输入 http://localhost:8080/bonjour
存取数据
在controller包中新建SalutServlet,用于在ServletContext对象中存取数据的测试
public class SalutServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext = getServletContext(); servletContext.setAttribute("key1","value1"); System.out.println("在" + this.getClass() + "中获取servletContext中key1的值:" + servletContext.getAttribute("key1")); } } 复制代码
在web.xml中配置SalutServlet的访问路径
<servlet> <servlet-name>SalutServlet</servlet-name> <servlet-class>com.lilith.servlet.SalutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SalutServlet</servlet-name> <url-pattern>/salut</url-pattern> </servlet-mapping> 复制代码
controller包中新建SalutServlet2,直接获取servletContext对象中的数据
public class SalutServlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext = getServletContext(); System.out.println("在" + this.getClass() + "中获取servletContext中存储的数据:" + servletContext.getAttribute("key1")); } } 复制代码
在web.xml中配置SalutServlet2的访问路径
<servlet> <servlet-name>SalutServlet2</servlet-name> <servlet-class>com.lilith.servlet.SalutServlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>SalutServlet2</servlet-name> <url-pattern>/salut2</url-pattern> </servlet-mapping> 复制代码
重启Tomcat,浏览器输入http://localhost:8080/salut 后再输入http://localhost:8080/salut2, 再次输入http://localhost:8080/salut
在ServletContext中存取的数据作用于整个web工程,只要是同一个web工程,任何自定义的Servlet程序都能获取ServletContext中的数据,并且ServletContext是在整个web工程启动的时候创建,在web工程关闭的时候销毁。
三、HTTP协议
协议是一种规则、一种约束;HTTP协议是指客户端和服务端通信时发送的数据格式要
要遵守的规则,HTTP协议中的数据又可以称作报文
HTTP协议的格式
- 客户端发送给服务端的数据叫请求
- 服务端回传给客户端的数据叫响应
请求又分为GET请求和POST请求两种
GET 请求
GET请求由以下几部分组成
- 请求行
- 请求方式GET
- 请求的资源路径
- 请求的协议版本号
- 请求头
- 键值对格式的数组组成
火狐浏览器中显示的GET请求的请求行
这里的请求行经过获取浏览器的格式化;原始格式应改为
GET /bonjour HTTP1.1 复制代码
GET请求的请求头
请求头中Key的含义
- Accept:告诉服务器,客户端可以接收的数据类型
- Accept-Language:告诉服务器,客户端可以接收的语言类型
- zh_CN:中文中国
- en_US:英文美国
- User-Agent:代理也就是浏览器的信息
- Accept-Encoding:客户端可以接收的数据编码或者压缩格式
- Host:请求的服务器的IP和端口号
- Connection:告诉服务器请求连接如何处理
- Keep-Alive:告诉服务器回传数据不要马上关闭,保持一小段时间的连接
- Closed:马上关闭
POST请求
POST请求由以下部分组成
- 请求行
- 请求方式POST
- 请求的资源路径
- 请求的协议版本号
- 请求头
- 键值对格式的数组组成
- 空行:在请求头和请求体中间有一行空行
- 请求体:发送给服务端的数据
请求行
请求头
- Content-Type:表示发送数据的数据类型
- application/x-www-form-urlencoded:表示提交的数据格式为name=value&password=value,然后对其进行URL编码既把非英文格式转换为%xx%xx
- multipart/form-data:表示以多段的形式提交数据到服务端,以流的形式提交,常用于文件上传
- Content-Length:表示发送的数据的长度
- Cache-Control:缓存控制
请求体
GET和POST使用情况
GET请求有
- form标签中method属性为get时发送get请求
- a标签
- link标签引入css
- script标签引入js
- img标签引入图片
- iframe引入html页面
- 浏览器中输入地址按回车
POST请求有
- from标签的method属性为post
HTTP响应
HTTP响应由以下几部分组成
- 响应行
- 响应的协议和版本号
- 响应的状态码
- 响应的状态描述符
- 响应头
- 键值对格式组成的数据
- 空行:响应头和响应体之间有一行空行
- 响应体:服务端回传给客户端的数据
常用响应码
- 200:请求成功
- 302:请求重定向
- 404:请求地址错误
- 500:服务器内部错误
MIME类型
MIMT是HTTP协议中的数据类型,全称是Multipurpose Internet Mail Extensions既多功能Internet邮件扩充服务,MIME类型的格式是”大类型/小类型“,并与某一种文件的扩展名相对应
文件 | 后缀 | MIME类型 |
超文本标记语言HTML | .html | text/html |
普通文本 | .txt | text/plain |
RTF文本 | .rtf | application/rtf |
GIF图形 | .gif | image/gif |
JPEG图形 | .jpeg、.jpg | image/jpeg |
au声音文件 | .au | audio/basic |
MIDI音乐文件 | .mid、.midi | audio/midi、audio/x-midi |
RealAudio | .ra、.ram | audio/x-pn-realaudio |
MPEG文件 | .mpg、.mpeg | video/x-msvideo |
AVI文件 | .avi | video/x-msvideo |
GZIP文件 | .gz | application/x-gzip |
TAR文件 | .tar | application/x-tar |