一、WEB项目介绍
- 将开发人员开发的源码(javaEE项目)部署在服务器站点,供用户可以进行远程访问。web项目包含两个部分,静态web资源和动态web资源。
- 静态web资源技术
HTML技术、DIV+CSS技术、JavaScript技术
- 动态web资源技术
http协议简介
- B/S系统,需要用户远程链接服务器站点,必须要遵循一定的网络协议,这里规定在远程访问站点的时候,需要遵循HTTP协议,这个协议是TCP/IP协议的应用协议。
- HTTP超文本传输协议,全称:Hypertext transfer propotocl
- HTTP有两个版本
- HTTP/1.0版本
- HTTP/1.1版本
两个协议的区别:
1.0版本的协议,当链接后,数据传输结束会断开连接,如果需要再次传输,需要再次链接。
1.1.版本的协议。当链接后。数据传输结束,会保持连接,除非主动关闭连接。
HTTP协议的请求和响应(重点)
通过客户端(包括浏览器)发送请求,称之为HTTP的请求,当发生请求之后,服务器需要给客户端响应数据,这个过程称为HTTP的响应。
注意:以后只要提到请求,一定是客户端发送给服务器;如果是提到响应,一定是服务器对客户端发送了数据。
HTTP协议的请求
- 请求到 示例图:
对请求里面参数进行说明
1、请求行:在请求行里面,包含了请求方式(GET方式和POST请求)、请求资源的路径、HTTP的协议版本
GET /demo/1.html HTTP/1.1
在请求行里面有请求方式的区别
记常用的POST方式和GET方式,说明一下POST方式和GET方式的区别。
- 两个方式的传参不一样。get传参方式是将数据直接明文写在请求URL地址里面,比如:http://localhost:8080/demo/1/html?userName = “张三”&password = “zhangsan”;POST请求方式,数据不会明文显示在地址栏,通过请求体进行数据传输的。
- 两个方式的传输数据的大小不一样,get请求方式传输数据大小最大为1k,post请求方式理论上数据的大小是没有限制的。如果数据量过大,建议分片传输。
- 请求头中的细节
- Accept:浏览器告诉服务器,我所支持的数据格式。
- Accept-Encoding:浏览器告诉服务器,我所支持的压缩格式
- Accept-Language:浏览器告诉服务器,我所支持的语言环境
- Cache-Control:浏览器告诉服务器,缓存最长时效。
- Connection:浏览器告诉服务器,是保持连接还是断开连接,Keep-Alive:保持连接
- Host:浏览器告诉服务器,我所请求的主机及端口
- User-Agent:浏览器告诉服务器,当前使用的浏览器的版本
- Date:浏览器告诉服务器,当次请求发生的时间。
- Referer:浏览器告诉服务器,我是从哪个页面跳转过来的
- Cookie:后续会有专门的专题讲解。
HTTP协议的响应
响应行
//服务器的响应行
HTTP/1.1 200 ok
在响应行里面,HTTP/1.1表示协议的版本,200表示状态码,ok表示原因或者描述
状态码:表示该次请求后,服务器给浏览器或者客户端响应的状态,由状态码来表示,100-599之间。
- 100-199:说明该次请求成功,但是服务器要等待客户端进一步的请求,很少见。
- 200-299:该次请求成功,并且响应也成功,可以说明这次请求响应已经完成。
- 300-399:说明该次请求成功,但是,需要客户端进一步有的处理。很少见
- 400-499:说明该次请求成功,但是服务器找不到请求的资源,常见的404
- 500-599:说明请求失败,服务器炸了,一般错误是500
- 响应头:
- Accept-Ranges:服务器告诉浏览器,发送的数据类型
- Connection:服务器告诉浏览器,是否保持连接。
- Content-Length:服务器告诉浏览器,本次响应的数据长度。
- Content-Type:服务器告诉浏览器,本次响应内容的数据格式以及编码集,(后面用于设置编码集要使用的响应头字段)。
- Date:当次响应的时间
- Keep-Alive: 保持连接的时间限制
- Last-Modified:最后缓存的时间
二、Servlet接口介绍
概念:
servlet接口中定义的主要五个方法:
1、init():用于初始化的方法,没有特殊代码处理的时候,发送请求的时候执行该方法。
2、service():用于处理请求和响应的方法,程序员编写代码的部分。
3、getServletConfig();该方法主要能够得到一个ServletConfig对象。
4、getServletInfo():只能获取Servlet版本号等信息。一般不用。
5、destroy():销毁的方法,如果没有特殊代码处理,关闭服务器的时候销毁。
三、web服务器中的其他对象
1、ServletConfig对象
作用:获取配置文件(web.xml)中的参数,一些数据可以先配置在web.xml文件中,由ServletConfig对象进行获取,在servlet接口中提供了有参的init方法,参数为ServletConfig对象,在初始化Servlet对象的时候,会调用init方法,在这个时候,web服务器会自动将web.xml里面的参数加载到ServletConfig对象。在web.xml配置文件中配置数据。
2、ServletContext对象
- 一个web容器里面,只有一个ServletContext对象,获取ServletContext对象有两种方式
方式1:通过ServletConfig对象中的getServeltContext()方法来获取ServletContext对象
ServletContext context = this.getServletConfig().getServletContext();
方式2:可以直接通过Servlet对象中的getServletContext()方法来获取ServletConext对象,推荐方式。
ServletContext context = this.getServletContext();
Servlet的第一个作用:实现各个Servlet类中的数据共享。
一、Cookie会话
概念:Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,会话存在于浏览器层中,它会在浏览器之后向同一服务器再次发起请求时被用上,就不需要用户去频繁的输入数据进行验证了。
浏览器行为跟踪(比如用户的浏览其他服务器之后的保留信息)。
1、创建方式
在客户端给服务器发送完HTTP请求之后,服务器可以在反馈的HTTP响应报文中包含 Set-Cookie 首部字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。
在浏览器中按下F12后可以查看到以下信息
Cookie会话存在于Request Headers下
2、Cookie会话分类
会话期 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。
持久性 Cookie:指定过期时间或有效期之后就成为了持久性的 Cookie,可以永久保存,通过xml文件进行配置。
3、创建Cookie会话以及实现的代码
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建Cookie集合用来储存
Cookie[] cookies=req.getCookies();
//循环遍历读取
for(int i=0;cookies !=null&&i<cookies.length;i++) {
Cookie c=cookies[i];
String name=c.getName();
System.out.println(name);
String lastTime=c.getValue();
System.out.println(lastTime);
}
Cookie e =new Cookie("lastTime","121232");
resp.addCookie(e);
}
二、Session会话
概念:Session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而Session 保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。客户端浏览器再次访问时只需要从该 Session中查找该客户的状态就可以了,只有当服务器销毁时,Sesssion才会消失。
1、创建Session会话以及实现的代码
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session=req.getSession();
String msg="123";
//将值存入session会话里
session.setAttribute("msg", msg);
//在将session会话里的值取出来
String str=(String)session.getAttribute("msg");
}