一、WEB项目介绍

  • 将开发人员开发的源码(javaEE项目)部署在服务器站点,供用户可以进行远程访问。web项目包含两个部分,静态web资源和动态web资源。
  • 静态web资源技术

HTML技术、DIV+CSS技术、JavaScript技术

  • 动态web资源技术

JSP/Servlet、ASP、PHP

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协议的请求

  • 请求到 示例图:

image.png

  • 对请求里面参数进行说明

    1. 1、请求行:在请求行里面,包含了请求方式(GET方式和POST请求)、请求资源的路径、HTTP的协议版本
    2. 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协议的响应

    image.png
  • 响应行

    1. //服务器的响应行
    2. 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后可以查看到以下信息
QQ图片20201026192602.png
Cookie会话存在于Request Headers下
2、Cookie会话分类
会话期 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。
持久性 Cookie:指定过期时间或有效期之后就成为了持久性的 Cookie,可以永久保存,通过xml文件进行配置。
3、创建Cookie会话以及实现的代码

  1. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2. //创建Cookie集合用来储存
  3. Cookie[] cookies=req.getCookies();
  4. //循环遍历读取
  5. for(int i=0;cookies !=null&&i<cookies.length;i++) {
  6. Cookie c=cookies[i];
  7. String name=c.getName();
  8. System.out.println(name);
  9. String lastTime=c.getValue();
  10. System.out.println(lastTime);
  11. }
  12. Cookie e =new Cookie("lastTime","121232");
  13. resp.addCookie(e);
  14. }

二、Session会话

概念:Session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而Session 保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。客户端浏览器再次访问时只需要从该 Session中查找该客户的状态就可以了,只有当服务器销毁时,Sesssion才会消失。
1、创建Session会话以及实现的代码

  1. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2. HttpSession session=req.getSession();
  3. String msg="123";
  4. //将值存入session会话里
  5. session.setAttribute("msg", msg);
  6. //在将session会话里的值取出来
  7. String str=(String)session.getAttribute("msg");
  8. }