第71节:Java中HTTP和Servlet
前言
哭着也要看完!!!字数:
学习xml
和TomCat
会写xml,看懂xml
解析对象
SAXReader reader = new SAXReader();
解析文件
Document document = reader.read(...);
获取根元素
Element rootElement = document.getRootElement();
Element element = rootElement.element("stu").element("name");
String namerootElement.element("stu").element("name").getText();
List<Element> list = rootElement.elements("stu");
for(int i= 0 ; i<list.size ; i++){
Element element = list.get(i);
element.getText();
}
rootElement.selectNodes("//stu");
rootElement.selectSingleNode("//stu");
协议HTTP
HTTP
协议和Servlet
什么是协议,就是规则,规范,用于双方在交互,通讯的时候遵循的一种规范,规则.而http
协议是对网络上的客户端和服务端在执行http
请求的时候遵循的一种规范,其实就是规定了客户端在访问服务器端的时候,要带上一些东西,服务端返回数据的时候,也要带点东西,礼尚往来嘛!!!
http协议的版本有: “1.0” 和 "1.1"等.
"1.0"在请求数据,服务器返回后,就会断开连接.而"1.1"版本在请求数据,服务器返回后,还会保留连接,除了服务器关掉(一定时间会自动关掉).
安装抓包工具.
下载HttpWatch
http://localhost:8080/examples/servlets/
HW3001
功能请求返回HTTP
状态代码失败或导致内部浏览器错误。失败的请求可能会阻止网页正常运行并导致性能问题1发生
请求行
请求的数据包含三种:
请求头,请求行,请求体.
请求行 请求地址路径
POST
GET
Accept:
客户端向服务器表示,我能支持什么类型的数据
Referer:
真正请求的地址路径,全路径
Accept-Language:
支持语言格式
User-Agent:
用户代理 向服务器表明 当前来访的客户端信息
Content-Type:
提交的数据类型,经过urlencoding编码的form表单的数据
Accept-Encoding:
压缩算法
Host:
主机地址
Content-Length:
数据长度
Connection:
保存连接
Cache-Control:
对缓存的操作
浏览器发送的数据
key = value
htttp
响应
数据分析: 响应行, 响应头, 响应体
状态码:
200: 成功
404: 找不到资源
403: 拒绝
500: 服务器异常
响应头:
Server: 服务器类型
Content-Type: 服务器返回客户端的内容类型
Content-Length: 返回数据长度
Date: 响应时间
GET
和POST
的区别
请求路径不同,post
请求不带数据,Get
带数据.
带上的数据不同,post
会使用流方式写数据,GET
请求在地址上带数据.
post
使用流写数据,所以要Content-Length
说明长度.
post
数据是一流的方式写的,不会显示在地址上
以流的方式写数据,所以没有大小限制
get
会再地址上拼接数据
数据有限制
有两种分类:
静态:
html
,js
,css
动态:
servlet/jsp
servlet
servlet
是什么?
其实就是一个java
程序,用于接收和响应.
创建
web
工程
测试
servlet
javax.servlet
中
接口
interface servlet
all known implementing Classes:
public interface Servlet
Implemented by: FacesServlet,GenencServlet,JspPage
servlet
是用来接收和响应客户端的请求.
servlet
是运行在web
服务器中的小型java
程序,servlet
通常通过http
超文本传输协议接收和响应来自web
客户端的请求.
ctrl+t
Servlet ->
GenericServlet
HelloServlet
ConetProcessor
JspPage
Provides an abstract class to be subclassed to create
an htttp servlet suitable for a web site, a subclass of
<code> httpservlet </code> must override at least
// servlet
servlet
genericservlet
httpservlet
// 源码
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String method = req.getMethod();
if (method.equals(METHOD_GET)) {
long lastModified = getLastModified(req);
if (lastModified == -1) {
// servlet doesn't support if-modified-since, no reason
// to go through further expensive logic
doGet(req, resp);
} else {
long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
if (ifModifiedSince < (lastModified / 1000 * 1000)) {
// If the servlet mod time is later, call doGet()
// Round down to the nearest second for a proper compare
// A ifModifiedSince of -1 will always be less
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
} else {
resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);