目录
一,Web简介
Web是指万维网(World Wide Web),它是一种基于互联网的信息系统,通过超文本传输协议(HTTP)来传输数据。Web的出现极大地改变了人们获取信息、交流和合作的方式,成为了互联网最重要的应用之一。
Web的特点包括:
- 超文本标记语言(HTML):Web页面的基本语言,用于创建文档的结构和内容。
- 统一资源定位器(URL):统一的资源定位符,用于指定互联网上资源的地址。
- 超文本传输协议(HTTP):用于传输Web页面和其他资源的协议。
- 网站和网页:互联网上的内容以网站和网页的形式存在,用户可以通过浏览器访问这些内容。
Web的发展经历了多个阶段,从静态网页到动态网页,再到移动Web和Web应用程序等。随着HTML5、CSS3和JavaScript等技术的不断发展,Web的功能和表现形式也得到了极大的丰富和扩展。
二,Web分为三个主要部分
-
客户端(Client):客户端指的是用户使用的设备,如PC、手机、平板电脑等。在Web中,客户端通常运行Web浏览器,通过浏览器向服务器请求Web页面或其他资源,同时将服务器返回的内容呈现给用户。
-
服务器端(Server):服务器端指的是Web应用程序运行的计算机,负责接收客户端请求并提供响应。服务器端通常通过Web服务器软件来处理请求,将请求转发到相应的Web应用程序,然后将Web应用程序返回的内容发送回客户端。
-
网络(Network):网络是客户端和服务器之间数据传输的媒介,可以是局域网、广域网或互联网。在Web中,网络扮演着将客户端请求和服务器响应传递的角色,确保数据能够在客户端和服务器之间传输。
这三个部分相互协作,构成了Web的基本架构。客户端和服务器端通过网络进行通信,客户端向服务器端请求Web页面或其他资源,服务器端接收请求并响应,最终将结果返回给客户端。
三,实体类
1,类图
2,相关注解
@MappedSuperclass
//JPA注解,用于实体类的父类,被标注的父类不是完整的实体类,不会映射到数据库,而是把其属性映射到子类的数据库列。因此被标注的类不能再标注@Entity或@Table
@Id
//JPA注解,声明该字段映射为数据库中的主键列
@GeneratedValue&@GenericGenerator
//JPA注解,通过stragegy属性声明主键的生成策略,MySQL中默认是自增AUTO(auto increment)其他还有TABLE、SEQUENCE、IDENTITY等,在本项目中使用自定义类型,则可使用generator = "uuid2"指定生成类型。
//第二个注解是自定义主键生成策略生成器,必须与第一个搭配使用,@GeneratedValue注解中的"generator"属性要与@GenericGenerator注解中name属性一致,strategy属性表示hibernate的主键生成策略
@Column
//指定数据库列的相关设置,比如各种约束如unique nullable等,还可指定创建列时的相关定义,比如本项目中指定类型binary
@Entity
//指定被注解的类为实体类,ORM则会把其映射到数据库的表,如果不手动设置表名则默认会把类名作为表名
@Temporal
//注解日期时间类型字段持久化到数据库时的存储精度,其枚举类型为TemporalType,枚举值有DATE日期、TIME时间、TIMESTAMP日期时间
@Getter&@Setter
//lombok注解,用于自动生成getter和setter
@Transient
//注解字段,被注解的字段在ORM映射到数据库时会忽略,用于Java代码中一些辅助性的字段如常量等
@ManyToOne&@OneToMany&@ManyToMany
//注解实体关系,多对一、一对多、多对多,使用mappedBy属性指定主次关系,具体的规则请参考项目代码
@Table
//使用改注解自定义映射的表明,因为默认使用类名作为表名即可,所以该注解一般用于表名与关键字冲突的情况,比如本项目中的option关键字、或者电商系统中的order关键字
@JsonBackReference&@JsonManagedReference&@JsonIgnore
//在序列化的时候,@JsonManagedReference 注解的属性则会被序列化,@JsonBackReference 的注解将会被忽略
//@JsonBackReference 注解,通常说明这个字段是关联的一个双向引用字段,这个字段在这个双向引用的角色是 “孩子”。这个字段的值只能是对象(Bean),不能是集合、图、数组等
//@JsonManagedReference 注解,通常说明这个字段是一个双向引用的字段,这个字段在这个双向引用中的角色为 “父”,与这个字段对应的引用需要注解为 @JsonBackReference
四,登录注册接口调试
1.使用的测试工具
-
一般的接口测试,在Edge或Chrome上使用PostWoman插件(Postman插件已下架)
-
测试接口需要提交复杂json时,可使用在线json编辑器
-
涉及到文件上传,必须安装Postman应用
-
使用Chrome或Edge的开发者工具,可在网络面板中解析接口资源
-
如需分析接口发送的数据,可安装fiddler,在请求过程中抓包
2,一般接口测试
-
-
①选择请求方法,如GET、POST、PUT、DELETE等
-
②输入接口请求地址
-
③请求发送按钮
-
④输入请求参数
-
⑤响应得到的json数据
-
3,不同的请求参数
-
-
上图1是
@RequestBody
注解的参数,类型是application/json
,输入的参数为json格式 -
上图2是
@RequestParam
注解的参数,类型是x-www-form-urlencoded
,最常见的表单参数传递方式 -
上图3是Get请求时的
@RequestParam
参数
-
4,可将一个项目的所有需要调试接口保存在多个模块中
5.文件上传接口测试
五,异常处理
1,定义错误页面
①添加首页(resources/templates/index.html)及相应Controller
--添加控制器注解
--添加index方法
--添加路由注解
②添加404和500页面
③运行测试,分别访问首页、制造错误访问其他两个页面
2,自定义错误处理
①添加自定义异常类(业务异常类BusinessException和资源不存在异常类NotFoundException)
②添加统一的异常处理类PracticeExceptionHandler
--使用ControllerAdvice注解把所有Controller作为切面统一提供错误处理功能
--添加专门处理业务异常的方法,使用ExceptionHandler注解
--添加通用的异常处理方法,使用ExceptionHandler注解
--还可使用ModelAttribute注解添加全局数据
3.自定义错误页面
①添加Thymleaf依赖
②完成error页面
4,接口专用错误处理类
①添加handlers文件夹,并添加专用于RESTful接口异常的处理类ApiExceptionHandler
②使用注解指定处理的类型为RestController
③在内部定义一个类型ExceptionWrapper专用于包装异常信息
④添加异常处理方法,同样使用ExceptionHandler注解,返回异常包装类对象
⑥在完成接口开发后,制造异常以测试该异常处理类
六,Web知识点总结
-
HTML:超文本标记语言(HTML)是Web页面的基本语言,用于创建文档的结构和内容。
-
CSS:层叠样式表(CSS)用于定义Web页面的外观和样式。
-
JavaScript:JavaScript是一种编程语言,用于创建交互式Web应用程序和动态效果。
-
客户端和服务器端:Web应用程序由客户端和服务器端两部分组成。客户端指的是用户使用的设备,如PC、手机、平板电脑等,通过浏览器向服务器请求Web页面或其他资源。服务器端指的是Web应用程序运行的计算机,负责接收客户端请求并提供响应。
-
HTTP协议:超文本传输协议(HTTP)是Web上数据传输的标准协议。客户端和服务器之间的通信都是通过HTTP进行的。
-
URL:统一资源定位符(URL)是Web上资源的地址。URL指定了Web页面、图像、视频、音频等资源的位置和名称。
-
网页设计:网页设计是指将HTML、CSS、JavaScript等技术应用于创建美观、易用和有效的Web页面的过程。
-
响应式设计:响应式设计是指创建能够适应各种设备和屏幕大小的Web页面,以提供最佳的用户体验。
-
Web应用程序:Web应用程序是指运行在Web浏览器中的应用程序,包括在线购物、社交网络、在线游戏等。
-
SEO:搜索引擎优化(SEO)是一种优化Web页面以获得更高排名和流量的技术。