HTTP相关内容补充

目录

一、URI 和 URL

二、使用 Cookie 的状态管理

三、返回结果的 HTTP状态码


一、URI 和 URL

URI :统一资源标识符

URL:统一资源定位符

URI 格式

登录信息(认证)指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项
服务器地址使用绝对 URI 必须指定待访问的服务器地址。地址可以是类似hackr.jp 这种 DNS 可解析的名称,或是 192.168.1.1 这类 IPv4 地址名,还可以是 [0:0:0:0:0:0:0:1] 这样用方括号括起来的 IPv6 地址名。
务器端口号指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动使用默认端口号。
带层次的文件路径指定服务器上的文件路径来定位特指的资源。这与 UNIX 系统的文件目录结构相似。
查询字符串针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。
片段标识符使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。但在 RFC 中并没有明确规定其使用方法。该项也为可选项。

二、使用 Cookie 的状态管理

Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。

  1. 首次请求时,服务器生成 Cookie 并返回给客户端存储。
  2. 后续请求中,客户端自动携带 Cookie,服务器通过解析 Cookie 识别用户状态。
  3. 服务器可根据需求更新或删除 Cookie,客户端按指令执行操作,实现状态管理。

三、返回结果的 HTTP状态码

2XX成功2XX 的响应结果表明请求被正常处理了。
200 OK表示从客户端发来的请求在服务器端被正常处理了
204 No Content该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。
206 Partial Content该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容。
3XX 重定向3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
302 Found临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。
303 See Othe该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源。
304 Not Modified该状态码表示客户端发送附带条件的请求 A 时,服务器端允许请求访问资源,但未满足条件的情况。
307 Temporary Redirect临时重定向。该状态码与 302 Found 有着相同的含义
4XX 客户端错误4XX 的响应结果表明客户端是发生错误的原因所在
400 Bad Request该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求
401 Unauthorize该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示用户认证失败。
403 Forbidden该状态码表明对请求资源的访问被服务器拒绝了。
404 Not Found该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
5XX 服务器错误5XX 的响应结果表明服务器本身发生错误。
500 Internal Server Error该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web应用存在的 bug 或某些临时的故障。
502 Bad Gateway表示 客户端(如浏览器)能与服务器建立连接,但服务器作为 “网关” 或 “代理” 时,从上游服务器(如应用服务器、数据库)获取响应时发生了错误
503 Service Unavailable该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

好的,我将根据提供的文档内容补充并生成相关的代码。以下是详细的内容和代码: ### 1. 工程目录结构 工程目录结构如图 1-1 所示: ![工程目录结构](path_to_screenshot) ### 2. 项目核心文件 #### 2.1 使用 Mybatis 框架 ##### Employee.java ```java package com.example.springbootemphis.entity; import lombok.Data; @Data public class Employee { private Long id; private Long departmentId; private Long registLevelId; private Long schedulingId; private String realName; private String password; private Integer delMark; } ``` ##### EmployeeMapper.java ```java package com.example.springbootemphis.mapper; import com.example.springbootemphis.entity.Employee; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface EmployeeMapper { @Select("SELECT * FROM employee") List<Employee> getAllEmployees(); } ``` ##### EmployeeMapper.xml ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.springbootemphis.mapper.EmployeeMapper"> <select id="getAllEmployees" resultType="com.example.springbootemphis.entity.Employee"> SELECT * FROM employee </select> </mapper> ``` ##### XX 文件 (其他相关配置文件) #### 2.2 使用 Mybatis-plus 框架 ##### application.yml ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/his?useSSL=false&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:mapper/*.xml ``` ##### Employee.java ```java package com.example.springbootemphis.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("employee") public class Employee { @TableId(type = IdType.AUTO) private Long id; private Long departmentId; private Long registLevelId; private Long schedulingId; private String realName; private String password; private Integer delMark; } ``` ##### EmployeeMapper.java ```java package com.example.springbootemphis.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.springbootemphis.entity.Employee; public interface EmployeeMapper extends BaseMapper<Employee> { } ``` ##### XX 文件 (其他相关配置文件) ### 3. 测试类 ##### MybatisMpTest.java ```java package com.example.springbootemphis.test; import com.example.springbootemphis.entity.Employee; import com.example.springbootemphis.mapper.EmployeeMapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest public class MybatisMpTest { @Autowired private EmployeeMapper employeeMapper; @Test public void testGetAllEmployees() { List<Employee> employees = employeeMapper.selectAll(); for (Employee employee : employees) { System.out.println(employee); } } } ``` ### 4. 结论 通过对 MyBatis 和 MyBatis-Plus 的使用,我们可以得出以下结论: - **MyBatis**: - 需要手动编写 SQL 语句。 - 配置相对复杂,需要 XML 映射文件。 - 更加灵活,适合复杂的业务场景。 - **MyBatis-Plus**: - 提供了更多的内置功能,如分页、条件构造器等。 - 配置简单,不需要 XML 映射文件。 - 生产效率更高,适合快速开发。 综上所述,MyBatis-Plus 在简化开发、提高生产效率方面具有明显优势,但 MyBatis 在处理复杂业务逻辑时更加灵活。选择哪个框架取决于具体的项目需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值