Web开发
Web
SpringBootWeb入门
-
入门程序
-
![image-20251114142228127]()
-
HelloController
package com.fanxxx; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /*启动类/引导类*/ @SpringBootApplication public class SpringbootWebQuickstartApplication { public static void main(String[] args) { SpringApplication.run(SpringbootWebQuickstartApplication.class, args); } } -
SpringbootWebQuickstartApplication
package com.fanxxx; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController //表示当前类是一个请求处理类 public class HelloController { @RequestMapping("/hello") public String hello(String name){ System.out.println("name:" + name ); return "Hello" + name + "-"; } } -
然后再在浏览器输入localhost:8080/hello?name=fanxxx
-
-
入门程序剖析
HTTP协议
-
概念:超文本传输协议,规定了浏览器和服务器之间数据传输的规则
-
特点:
-
基于TCP协议:面对连接,安全
-
基于请求-响应模型的:一次请求对应一次响应
-
HTTP协议是无状态的协议:对于事务没有处理能力
-
HTTP-请求协议
![image-20251117092656302]()
![image-20251117093105724]()
-
请求数据获取
![image-20251117093319560]()
-
HTTP-响应协议
-
响应数据格式
![image-20251117094548284]()
![image-20251117095226850]()
![image-20251117095758776]()
-
响应数据设置
![image-20251117095835415]()
![image-20251117095937484]()
![image-20251117100357539]()
![image-20251117100716370]()
![image-20251117100839223]()
-
-
SpringBootWeb案例
- 开发Web程序,完成用户列表的渲染显示
![image-20251117101122762]()
![image-20251117101225691]()
![image-20251117113312571]()
- @ResponseBody —> 作用:将controller返回值直接作为响应体的数据直接响应;返回值是对象/集合->json->响应
![image-20251117113157110]()
分层解耦
-
三层架构
![image-20251117113557444]()
- Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
- service:业务逻辑层,处理具体的业务逻辑
- dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增加,删,改,查。
![image-20251117134404351]()
-
分层解耦
- 耦合:衡量软件中各个层/各个模块的依赖关联程度。
- 内聚:软件中各个功能模块的工能联系。
- 软件设计原则:高内聚低耦合。
![image-20251117135901121]()
![image-20251117140635692]()
-
IOC&DI入门
![image-20251117140806953]()
![image-20251117141304773]()
-
IOC详解
![image-20251117141539903]()
声明bean的时候,可以通过注解的value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
![image-20251117143946138]()
-
DI详解
![image-20251117144225527]()
![image-20251117144736309]()
- 第一种属性注入:代码简洁,方便快速开发
缺点:异常了类之间的依赖关系,可能会破坏类的封装性 - 第二种构造函数注入:能清晰的看到类的依赖关系,提高了代码的安全性
缺点:代码繁琐.如果构造函数过多,可能会导致函数臃肿
注意:如果只有一个构造函数,@AUtowired注解可以省略 - 第三种setter注入:保证类的封装性,依赖关系更加清晰
缺点需要额外编写setter方法,增加了代码量
![image-20251118135654562]()
- 第一种属性注入:代码简洁,方便快速开发




























浙公网安备 33010602011771号