JavaWeb详讲

JavaWeb内容

一、Servlet简介⭐

Servlet 就是 Sun 公司开发动态 Web 的一门技术

Sun 在这些 API (Application Programming Interface,应用程序接口)中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:

  • 编写一个类,实现Servlet接口。
  • 把开发好的Java类部署到web服务器中。

把实现了 Servlet 接口的 Java 程序叫做,Servlet

1.HelloServlet

Serlvet 接口 Sun 公司有两个默认的实现类:HttpServlet,GenericServlet

  1. Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
  2. Servlet 是运行在服务器上的一个 java 小程序(接口)它可以接收客户端发送过来的请求,并响应数据给客户端。
1-1.编写一个Servlet程序

在这里插入图片描述

S1:编写一个普通类

S2:实现 Servlet 接口,这里我们直接继承 HttpServlet

public class HelloServlet extends HttpServlet {
    
    //由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter(); //响应流
        writer.print("Hello,Serlvet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

1-2.编写 Servlet 的XML映射与配置规则
@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {
    
}
* 表示输入什么数字都行
    
第四点不要配置,一般项目只用其中一种配置方法

在这里插入图片描述

为什么需要映射:我们写的是 Java 程序,但是要通过浏览器访问,而浏览器需要连接 Web 服务器,所以我们需要再 Web 服务中注册我们写的 Servlet,还需给他一个浏览器能够访问的路径;

    <!--注册Servlet-->
    <servlet>
         <!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) -->
        <servlet-name>hello</servlet-name>
        <!--servlet-class 是 Servlet 程序的全类名-->
        <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
    </servlet>

    <!--servlet-mapping 标签给 servlet 程序配置访问地址-->
    <servlet-mapping>
        <!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个 Servlet 程序使用-->
        <servlet-name>hello</servlet-name>
        <!--
			url-pattern 标签配置访问地址 
			/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 
			/hello 表示地址为:http://ip:port/工程路径/hello
 		-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
1-3 Servlet 原理

Servlet 是由 Web 服务器调用,Web 服务器在收到浏览器请求之后,会:
在这里插入图片描述

1-4.Servlet生命周期🧡

在这里插入图片描述

  1. 执行 Servlet 构造器方法

  2. 执行 init() 初始化方法

    1,2,是在客户端第一次访问的时候创建 Servlet 程序会调用

  3. 执行 service() 方法

    每次访问都会调用。

  4. 执行 destroy() 销毁方法

    web 工程停止的时候调用。

  5. servlet在容器中是单例的,线程不安全的

1-5.Request
获得请求

在这里插入图片描述

String method=this.getMethod();
//判断
if("GET".equals(method)){
    //Get方式获取请求参数
    params=this.getQueryString();
}else id("POST".equals(method)){
    //POST方式获取请求参数
    BufferedReader reader =this.getReader();
    params=reader.readLine();
}

//通用方法
Map<String,String[]> getParameterMap():获取所有参数的Map集合
 String[] getParameterValues(String name):根据名称获取参数值
💗String getParameter(String name):根据名称获取参数值(单个值)
解决中文乱码

在这里插入图片描述

请求转发🧡

在这里插入图片描述

1-6.Response
设置响应数据

在这里插入图片描述

重定向🧡

在这里插入图片描述

解决中文乱码(常用)🧡
response.setContentType("text/html;charset=utf-8");
1-7.ServletContext
定义
  1. ServletContext 是一个接口,它表示 Servlet 上下文对象
  2. 一个 web 工程,只有一个 ServletContext 对象实例
  3. ServletContext 对象是一个域对象。(是可以像 Map 一样存取数据的对象,叫域对象。)
  4. ServletContext 是在 web 工程部署启动的时候创建。在 web 工程停止的时候销毁
作用🧡
  1. 读取资源文件

    Properties

    • 在 java 目录下新建 properties
    • 在 resources 目录下新建 properties

    发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classpath:

    思路:需要一个文件流;

    public class ServletDemo05 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		
            //获取资源路径的io流
            InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/com/kuang/servlet/aa.properties");
    		
            Properties prop = new Properties();
            prop.load(is);
            String user = prop.getProperty("username");
            String pwd = prop.getProperty("password");
    
            resp.getWriter().print(user+":"+pwd);
    
        }
    
    }
    
    
  2. 获取当前的工程路径,格式: /工程路径

    // 2、获取当前的工程路径,格式: /工程路径
    System.out.println( "当前工程路径:" + context.getContextPath() ); 
    
  3. 获取工程部署后在服务器硬盘上的绝对路径

    // 3、获取工程部署后在服务器硬盘上的绝对路径 
    /* 斜杠被服务器解析地址为:http://ip:port/工程名/ 映射到 IDEA 代码的 web 目录 */ 
        System.out.println("工程部署的路径是:" + context.getRealPath("/")); 
        System.out.println("工程下 css 目录的绝对路径是:" + context.getRealPath("/css")); 	       System.out.println("工程下 imgs 目录 1.jpg 的绝对路径是:" +context.getRealPath("/imgs/1.jpg"));
    
  4. 共享数据

    在一个 servlet 中保存的数据,可以在另一个 servlet 中拿到;

    public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	
        //创建ServletContext对象
        ServletContext context = this.getServletContext();
    
        String username = "秦疆"; //数据
        
        //将一个数据保存在了ServletContext中,名字为:username 。值 username
        context.setAttribute("username",username); 
    
    }
    
    public class GetServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext context = this.getServletContext();
            //获取之前Servlet程序中设置的username的值
            String username = (String) context.getAttribute("username");
    
    
        	resp.getWriter().print("名字"+username);
    
    }
    }
    

二、JSP

1.jsp脚本

JSP 本质上就是⼀个 Servlet,JSP 主要负责与⽤户交互,将最终的界⾯呈现给⽤户, HTML+JS+CSS+Java 的混合⽂件。

当服务器接收到⼀个后缀是 jsp 的请求时,将该请求交给 JSP 引擎去处理,每⼀个 JSP ⻚⾯第⼀次被访 问的时候,JSP 引擎会将它翻译成⼀个 Servlet ⽂件,再由 Web 容器调⽤ Servlet 完成响应。

单纯从开发的⻆度看,JSP 就是在 HTML 中嵌⼊ Java 程序。

具体的嵌⼊⽅式有 3 种:

1-1、JSP 脚本,执⾏ Java 逻辑代码
<% Java代码 %> 
1-2、JSP 声明:定义 Java ⽅法
<%! 声明 Java ⽅法 %>
1-3、JSP 表达式:把 Java 对象直接输出到 HTML ⻚⾯中
 <%=Java变量 %>
<%! public String test(){ return "HelloWorld"; } %>

<% String str = test(); %> 

<%=str%>
1-4.JSP已经逐步退出了程序圈

2.EL表达式

在这里插入图片描述

page域与application域都不常用

3.JSTL标签

3-1.入门

在这里插入图片描述

3-2.<c:forEach>

在这里插入图片描述

4.MVC模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、会话⭐

**会话:**就是客户端和服务器之间发⽣的⼀系列连续的请求和响应的过程,打开浏览器进⾏操作到关闭浏

览器的过程。

**会话状态:**指服务器和浏览器在会话过程中产⽣的状态信息,借助于会话状态,服务器能够把属于同⼀

次会话的⼀系列请求和响应关联起来

属于同⼀次会话的请求都有⼀个相同的标识符,sessionID

在这里插入图片描述

1.Cookie

1-1.Cookie的基本使用

Cookie 是服务端在 HTTP 响应中附带传给浏览器的⼀个⼩⽂本⽂件,⼀旦浏览器保存了某个 Cookie,

在之后的请求和响应过程中,会将此 Cookie 来回传递,这样就可以通过 Cookie 这个载体完成客户端

和服务端的数据交互

在浏览器第一个访问的时候将Cookie头设置为一个CookieID并返回,下次访问的时候直接将这次的CookieID一起传输过去

在这里插入图片描述

1-2.Cookie的使用原理

Cookie是基于HTTP协议实现的

  • 响应头:set-Cookie
  • 请求头:cookie
1-3.Cookie的使用细节

在这里插入图片描述

2.Session

属于同⼀次会话的请求都有⼀个相同的标识符,sessionID。

在服务器设置一个SessionID便于使用

2-1.Session的基本使用

在这里插入图片描述

2-2.Session的使用原理

在这里插入图片描述

Session是基于Cookie实现的,将cookie的头设置为Session的ID传输给浏览器

当浏览器关闭,再开启时,SeesionID的值会发生改变

2-3.Session的使用细节

在这里插入图片描述

3.Session与Cookie的区别

在这里插入图片描述

四、Filter

1.Filter定义

在这里插入图片描述

2.Filter快速入门

在这里插入图片描述

3.Filter执行流程

在这里插入图片描述

4.Filter使用细节

4-1.拦截路径

在这里插入图片描述

4-2.过滤器链

在这里插入图片描述

同时配置多个 Filter,Filter 的调⽤顺序是由 web.xml 中的配置顺序来决定的,写在上⾯的配置先调

⽤,因为 web.xml 是从上到下顺序读取的。

5.常用的地方

5-1.统⼀处理中⽂乱码。
5-2.屏蔽敏感词。
@WebFilter("/test")//所拦截的类路径
public class WordFilter implements Filter {
 @Override
 public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain) throws IOException, ServletException
{
 servletRequest.setCharacterEncoding("UTF-8");
 //将"敏感词"替换成"***"
 String name = servletRequest.getParameter("name");
 name = name.replaceAll("敏感词","***");
  //将值传递回去
 servletRequest.setAttribute("name",name);
  //放行
 filterChain.doFilter(servletRequest,servletResponse);
 }
}
@WebServlet("/test")
public class TestServlet extends HttpServlet {
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
  //获取filter传递的值
 String name = (String) req.getAttribute("name");
 System.out.println("servlet:"+name);
 }
}
5-3.控制资源的访问权限。
@WebFilter("/download.jsp")
public class DownloadFilter implements Filter {
 @Override
 public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain) throws IOException, ServletException
{
 HttpServletRequest request = (HttpServletRequest) servletRequest;
 HttpServletResponse response = (HttpServletResponse) servletResponse;
 HttpSession session = request.getSession();
 String name = (String) session.getAttribute("name");
 if(name == null){
 //不是登录状态
 response.sendRedirect("/login.jsp");
 }else{
 filterChain.doFilter(servletRequest,servletResponse);
 }
 }
}
5-4.上传和下载

JSP

1、input 的 type 设置为 fifile

2、form 表单的 method 设置 post,get 请求会将⽂件名传给服务端,⽽不是⽂件本身

3、form 表单的 enctype 设置 multipart/form-data,以⼆进制的形式传输数据

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 

<html> 

<head> 

 <title>Title</title> 

</head> 

<body> 

 <form enctype="multipart/form-data" action="/upload" method="post"> 

 <input name="desc" type="text"/><br/> 

 <input name="text" type="file"/><br/> 

 <input type="submit" value="上传"/> 

 </form> 

</body> 

</html> 

Servlet

fifileupload 组件可以将所有的请求信息都解析成 FileIteam 对象,可以通过对 FileItem 对象的操作完成

上传,⾯向对象的思想。



package com.southwind.servlet; 

import org.apache.commons.fileupload.FileItem; 

import org.apache.commons.fileupload.FileUploadException; 

import org.apache.commons.fileupload.disk.DiskFileItemFactory; 

import org.apache.commons.fileupload.servlet.ServletFileUpload; 

import javax.servlet.ServletException; 

import javax.servlet.annotation.WebServlet; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

import java.io.*; 

import java.util.List; 

@WebServlet("/upload") 

public class UploadServlet extends HttpServlet { 

 @Override 

 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 

throws ServletException, IOException { } 

 @Override 

 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 

throws ServletException, IOException { 

// //通过输⼊流获取客户端传来的数据流 

// InputStream inputStream = req.getInputStream(); 

// Reader reader = new InputStreamReader(inputStream); 

// BufferedReader bufferedReader = new BufferedReader(reader); 

// //通过输出流将数据流输出到本地硬盘 

// //获取⽂件夹的绝对路径 

// String path = req.getServletContext().getRealPath("file/copy.txt"); 

// OutputStream outputStream = new FileOutputStream(path); 

// Writer writer = new OutputStreamWriter(outputStream); 

// BufferedWriter bufferedWriter = new BufferedWriter(writer); 

// String str = ""; 

// while((str = bufferedReader.readLine())!=null){ 

// System.out.println(str); 

// bufferedWriter.write(str); 

// } 

// bufferedWriter.close(); 

// writer.close(); 

// outputStream.close(); 

// bufferedReader.close(); 

// reader.close(); 

// inputStream.close(); 

 try { 

 DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); 

 ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory); 

 List<FileItem> list = servletFileUpload.parseRequest(req); 

 for(FileItem fileItem : list){ 

 if(fileItem.isFormField()){ 

     String name = fileItem.getFieldName(); 

     String value = fileItem.getString("UTF-8"); 

     System.out.println(name+":"+value); 

 }else{ 

     String fileName = fileItem.getName(); 

     long size = fileItem.getSize(); 

     System.out.println(fileName+":"+size+"Byte"); 

     InputStream inputStream = fileItem.getInputStream(); 

// Reader reader = new InputStreamReader(inputStream); 

// BufferedReader bufferedReader = new 

BufferedReader(reader); 

     String path = 

    req.getServletContext().getRealPath("file/"+fileName); 

     OutputStream outputStream = new FileOutputStream(path); 

    // Writer writer = new OutputStreamWriter(outputStream);// BufferedWriter bufferedWriter = new 

    BufferedWriter(writer); 

     int temp = 0; 

     while((temp = inputStream.read())!=-1){ 

     outputStream.write(temp); 

 } 

    // bufferedWriter.close(); 

    // writer.close(); 

     outputStream.close(); 

    // bufferedReader.close(); 

    // reader.close(); 

     inputStream.close(); 

     System.out.println("上传成功"); 

 } 

 } 

 } catch (FileUploadException e) { 

 e.printStackTrace(); 

 } 

 } 

}

下载

package com.southwind.servlet; 

import javax.servlet.ServletException; 

import javax.servlet.annotation.WebServlet; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

import java.io.FileInputStream; 

import java.io.IOException; 

import java.io.InputStream; 

import java.io.OutputStream; 

@WebServlet("/download") 

public class DownloadServlet extends HttpServlet { 

 @Override 

 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 

throws ServletException, IOException { 

 String type = req.getParameter("type"); 

 String fileName = ""; 

 switch (type){ 

 case "png": 

 fileName = "1.png"; 

 break; 

 case "txt": 

 fileName = "test.txt"; 

 break; 

 } 

 //设置响应⽅式 

 resp.setContentType("application/x-msdownload"); 

 //设置下载之后的⽂件名 

 resp.setHeader("Content-Disposition","attachment;filename="+fileName); 

 //获取输出流 

 OutputStream outputStream = resp.getOutputStream(); 

 String path = req.getServletContext().getRealPath("file/"+fileName); 

 InputStream inputStream = new FileInputStream(path); 

 int temp = 0; 

 while((temp=inputStream.read())!=-1){ 

 outputStream.write(temp); 

 } 

 inputStream.close(); 

 outputStream.close(); 

 } 

}

五、Listener(用得不多)

1.Listener概念

在这里插入图片描述

2.Listener基本

使用

在这里插入图片描述

六、AJAX⭐

1.AJAX概念

在这里插入图片描述

异步:客户端在等待服务器时,可以进行其他动作

2.AJAX快速入门

在这里插入图片描述

  • 2,3,4的代码在www.w3cschool.com里面找
  • 3中url中填全路径(http:localhost…)

七、JSON⭐

1.基本概念

在这里插入图片描述

2.基本语法

在这里插入图片描述

3.JSON与java数据的转换

在这里插入图片描述

八、JDBC

1.JDBC的简介

在这里插入图片描述

2.JDBC快速入门

在这里插入图片描述

3.JDBC的API详解

3-1.DriverManager(驱动管理类)

作用:

  1. 注册驱动

    Class.forName("驱动名");//java5之后可以省略不写
    
  2. 获取数据库连接

    Connection conn=DriverManager.getConnection(url,userName,password);
    /*url(连接路径)
    语法:jdbc:mysql//ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2
    示例:jdbc:mysql://127.0.0.1:3306/db1
    细节:
    	1.如果连接的是本机的Mysql服务器默认端口号是3306,则url可以简写为:jdbc:mysql://数据库名称?参数键值对
    	2.配置useSSL=false参数,禁用安全连接方式,解决警告提示
    	jdbc:mysql://db1?useSSL=false
    	3.高版本要写时区
    	serverTimezone=GMT%2B8
    */
    
    
    
3-2.Connection(数据库连接对象)
  1. 获取执行SQL的对象

    • 普通执行SQl对象
    Statement createStatement()
    
    • 预编译SQL的执行SQL对象:防止SQL注入
    PreparedStatement prepareStatement(sql)
    
    • 执行存储过程的对象
    CallableStatement prepareCall(sql)
    
    1. 管理事物
    • **开启事务:**setAutoCommit(boolean x): true为自动提交事务,false为手动提交事务,即为开启事务
    • **提交事务:**commit()
    • **回滚事务:**rollback()
3-3.Statement
  1. 执行SQL语句

    • executeUpdate(sql):执行添加/删除/修改语句返回受影响的行数(int)
    • executeQuery(sql):执行查询语句,返回查询结果一个虚拟表(ResultSet)
    while(rs.next()){
    	int id=rs.getInt("id");
    	String name=rs.getString("name");
    }
    
3-4.PreparedStatement
String sql="select *from user where name=? and id=?";

//定义PreparedStatement对象
PreparedStatement pstmt=conn.prepareStatement(sql);

//设置?的值
pstmt.setString(1,name);
pstmt.setInt(2,id);

//执行sql
ResultSet rs=pstmt.executeQuery();

4.数据库连接池

4-1.简介

在这里插入图片描述

4-2.实现

在这里插入图片描述

4-3.操作

在这里插入图片描述

九、Http⭐

1.什么是 HTTP?

HTTP(hypertext transport protocol) 超文本传输协议

  • 文本 :HTML,字符串…
  • 超文本:图片,音乐,视频,定位,地图…
  • 80 端口

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer):是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL。

  • 443 端口

2. 两个时代

HTTP 1.0:

  • HTTP/1.0:客户端与 Web 服务器连接后,只能获得一个Wen 资源,然后就断开连接,加入某个页面有多个图片资源需要加载,那么需要连接多次,影响服务器和客户端的性能。

HTTP 2.0:

  • HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。

3. HTTP 请求

客户端 -> 发送请求(Request)->服务器

请求包含:请求行,请求头,请求主体

请求行包含三个信息:请求方式,请求的URL,请求的协议(一般都是HTTP1.1)

访问百度:
  1. Request URL:https://www.baidu.com/ 请求地址
  2. Request Method:GET get方法/post方法
  3. Status Code:200 OK 状态码:200
  4. Remote(远程) Address:14.215.177.39:443
  1. Accept:text/html
  2. Accept-Encoding:gzip, deflate, br
  3. Accept-Language:zh-CN,zh;q=0.9 语言
  4. Cache-Control:max-age=0
  5. Connection:keep-alive

1、请求行

请求行中的请求方式:GET

请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…

  • get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
  • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。

2、消息头

  1. Accept:告诉浏览器,它所支持的数据类型
  2. Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
  3. Accept-Language:告诉浏览器,它的语言环境
  4. Cache-Control:缓存控制
  5. Connection:告诉浏览器,请求完成是断开还是保持连接
  6. HOST:主机…/.

4. HTTP 响应

  • 服务器 -> 响应(response) ->客户端

响应包含:响应行,响应头,响应体

  1. 响应行:协议,状态码,响应状态
  2. 响应头:服务器的信息,服务器发给浏览器的信息(内容的媒体类型,编码,内容长度)
  3. 响应体:响应的实际内容
访问百度:
  1. Cache-Control:private 缓存控制
  2. Connection:Keep-Alive 连接
  3. Content-Encoding:gzip 编码
  4. Content-Type:text/html 类型

1、响应体

  1. Accept:告诉浏览器,它所支持的数据类型
  2. Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
  3. Accept-Language:告诉浏览器,它的语言环境
  4. Cache-Control:缓存控制
  5. Connection:告诉浏览器,请求完成是断开还是保持连接
  6. HOST:主机…/.
  7. Refresh:告诉客户端,多久刷新一次;
  8. Location:让网页重新定位;

2、响应状态码

200:请求响应成功 200

3xx:请求重定向(重定向:你重新到我给你新位置去;)

4xx:找不到资源 404

5xx:服务器代码错误 500 502:网关错误

常见面试题:

-Language**:告诉浏览器,它的语言环境

  1. Cache-Control:缓存控制
  2. Connection:告诉浏览器,请求完成是断开还是保持连接
  3. HOST:主机…/.

4. HTTP 响应

  • 服务器 -> 响应(response) ->客户端

响应包含:响应行,响应头,响应体

  1. 响应行:协议,状态码,响应状态
  2. 响应头:服务器的信息,服务器发给浏览器的信息(内容的媒体类型,编码,内容长度)
  3. 响应体:响应的实际内容
访问百度:
  1. Cache-Control:private 缓存控制
  2. Connection:Keep-Alive 连接
  3. Content-Encoding:gzip 编码
  4. Content-Type:text/html 类型

1、响应体

  1. Accept:告诉浏览器,它所支持的数据类型
  2. Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
  3. Accept-Language:告诉浏览器,它的语言环境
  4. Cache-Control:缓存控制
  5. Connection:告诉浏览器,请求完成是断开还是保持连接
  6. HOST:主机…/.
  7. Refresh:告诉客户端,多久刷新一次;
  8. Location:让网页重新定位;

2、响应状态码

200:请求响应成功 200

3xx:请求重定向(重定向:你重新到我给你新位置去;)

4xx:找不到资源 404

5xx:服务器代码错误 500 502:网关错误

常见面试题:

当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值