type
status
date
slug
summary
tags
category
icon
password

JavaWeb后端开发

Web后端开发

Spring

官网:spring.io
Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。
notion image
notion image
Spring Boot可以帮助我们非常快速的构建应用程序、简化开发、提高效率。

SpringBootWeb入门

需求:使用SpringBoot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World~"。
notion image
①.创建springboot工程,并勾选web开发相关依赖。
②.定义HelloController类,添加方法hello,并添加注解。
③.运行测试

HTTP协议

HTTP-概述

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
notion image
特点:
1.基于TCP协议:面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3.HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
  • 缺点:多次请求间不能共享数据。
  • 优点:速度快

HTTP-请求协议

HTTP-请求数据格式
notion image
notion image
请求方式-GET:请求参数在请求行中,没有请求体,如:/brand/findA1l?name=0PPo&status=1。GET请求大小是有限制的。
请求方式-POST:请求参数在请求体中,POST请求大小是没有限制的。

HTTP-响应协议

HTTP-响应格式
notion image
notion image
常见的响应状态码
状态码
英文描述
解释
200
OK
客户端请求成功,即处理成功,这是我们最想看到的状态码
302
Found
指示所请求的资源已移动到由Location响应头给定的URL,浏览器会自动重新访问到这个页面
304
Not Modified
告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400
Bad Request
客户端请求有语法错误,不能被服务器所理解
403
Forbidden
服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资颜
404
NotFound
请求资源不存在,一般是URL输入有误,或者网站资源被移除了
405
Method Not Allowed
请求方式有误,比如应该用GET请求方式的资源,用了POST
428
Precondition Required
最务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429
Too Many Request
指示用户在给定时间内发送了太多请求(限速"),配合Retry-After(多长时间后可以请求)响应头一起使用
431
Request Header Fields Too Large
请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500
Internal Server Error
服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503
Service Unavailable
服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

HTTP-协议解析

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
notion image
原生:ServerSocket
已封装好的:Jetty://、WebLogic、IBM WebSphere、Apache Tomcat

Web服务器-Tomcat

Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务”。
notion image

简介

概念:Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量avaEE规范。
JavaEE:Java Enterprise Edition,Java企业版。指ava企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDl、EjB(过时,已被Spring替代)、RMl、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
Tomcat也被称为Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行

基本使用

下载:官网下载,地址https://tomcat.apache.org/download-90.cgi
安装:绿色版,直接解压即可
卸载:直接删除目录即可
启动:双击:bin\startup.bat
控制台中文乱码:修改conf/logging.properties
关闭:
直接×掉运行窗口:强制关闭 bin\shutdown.bat:正常关闭 Ctrl+C:正常关闭
notion image
常见问题
启动窗口一闪而过:检查JAVA HOME:环境变量是否正确配置
端口号冲突:找到对应程序,将其关闭掉
notion image

入门程序解析

notion image
notion image
起步依赖:
  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖。
SpringBoot的依赖中包含了一个内嵌Tomcat,所以也占用8080端口,开发常用内嵌的Tomcat,而不是独立的Tomcat服务器。
内嵌Tomcat服务器:基于Springboot开发的web应用程序,内置了tomcat服务器,当启动类运行时,会自动启动内嵌的tomcat服务器。

请求响应

notion image
请求响应:
  • 请求(HttpServletRequest):获取请求数据
  • 响应(HttpServletResponse):设置响应数据
  • BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(维护方便体验一般)
  • CS架构:Client/Server,客户端/服务器架构模式。(开发、维护麻烦体验不错)

请求

Postman

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
作用:常用于进行接口测试
notion image

简单参数

原始方式
在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取。
notion image
SpringBoot方式
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
notion image
简单参数:如果方法形参名称与请求参数名称不匹配,可以使用@RequestParam完成映射
注意事项:
  • @RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false。

实体参数

简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可
notion image
复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POO属性参数。
notion image

数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
notion image
集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam绑定参数关系
notion image

日期参数

日期参数:使用@DateTimeFormat注解完成日期参数格式转换
notion image

Json参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识
notion image

路径参数

路径参数:通过请求URL直接传递参数,使用{.来标识该路径参数,需要使用@PathVariable获取路径参数
notion image

响应

响应数据

notion image
@ResponserBody 注解:
类型:方法注解、类注解
位置:Controller方法上/类上
作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为SON格式响应
说明:@RestController=@Controller+@ResponseBody;
notion image

统一响应结果

notion image

案例

获取员工数据,返回统一响应结果,在页面渲染展示
加载并解析emp.Xml文件中的数据,完成数据处理,并在页面展示。
notion image
notion image
在pom.xml文件中引入dom4j的依赖,用于解析XML文件
引入资料中提供的解析XML的工具类XMLParserUtils、对应的实体类Emp、XML文件emp.xml
引入资料中提供的静态页面文件,放在resources下的static目录下
编写Controller程序,处理请求,响应数据
notion image
notion image
notion image
Springboot项目的静态资源(html,css,js等前端资源)默认存放目录为:classpath:/static、classpath:/public、classpath:/resources
notion image

分层解耦

三层架构

notion image
Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据
Service:业务逻辑层,处理具体的业务逻辑。
Dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。
notion image

分层解耦

内聚:软件中各个功能模块内部的功能联系。
耦合:衡量软件中各个层/模块之间的依赖、关联的程度。
软件设计原则:高内聚低耦合。
notion image
控制反转:Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
依赖注入:Dependency Injection,简称Dl。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:IOC容器中创建、管理的对象,称之为bean。
notion image

IOC & DI入门

①.Service,层及Dao层的实现类,交给IOC容器管理。
notion image
②.为Controller及Service注入运行时,依赖的对象。
notion image
③.运行测试。

IOC详解

Bean的声明
要把某个对象交给OC容器管理,需要在对应的类上加上如下注解之一:
notion image
注意事项:
  • 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
  • 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。
Bean组件扫描
  • 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
  • @ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包。

DI详解

Bean注入
  • @Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误:
notion image
通过以下几种方案来解决:
  • @Primary
  • @Qualifier
  • @Resource
@Autowired:默认按照类型自动装配。
如果同类型的bean存在多个:
  • @Primary
  • @Autowired+@Qualifier("bean的名称")
  • @Resource(name="bean的名称")
@Resource与@Autowired区别
  • @Autowired是spring框架提供的注解,而@Resource是)DK提供的注解。
  • @Autowired默认是按照类型注入,而@Resourcel默认是按照名称注入。

数据库

Mybatis

 
上一篇
SpringBootWeb案例
下一篇
JavaWeb 前端基础笔记