Web后端开发-请求响应

Web后端开发-请求响应

请求(HttpServletRequest):获取请求数据

响应(HttpServletResponse):设置响应数据

BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(京东淘宝等网站)

CS架构:Client/Server,客户端/服务端架构模式。(QQ,微信等客户端)

请求

postman

postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。

作用:常用于进行接口测试

(Apipost、Apifox)

简单参数接收

1.原始方式获取请求参数

  • Controller方法形参中声明HttpServletRequest对象
  • 调用对象的getParameter(参数名)

2.SpringBoot中接收简单参数

  • 请求参数名与方法形参变量名相同
  • 会自动进行类型转换

3.@RequestParam注解

  • 方法形参名称与请求参数名称不匹配,通过该注解完成映射
  • 该注解的required属性默认时true,代表请求参数就必须传递,有必要的话可以将required设置为false,那就代表它是一个可选的参数,可以传递可以不传递

实体对象参数

规则:请求参数名与形参对象属性名相同,即可直接通过POJO接收

数组集合参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam绑定参数关系

日期参数

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

(例如:"yyyy-MM-dd HH:mm:ss")

Json参数

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

路径参数

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

响应

响应数据

@ResponseBody

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

统一响应结果

Result(code、msg、data)

public class Result{
    //响应码,1代表成功;0代表失败
    private Integer code;
    //提示信息
    private String msg;
    //返回的数据
    private Object data;
    //...
}

统一返回 json 格式

案例

获取员工数据,返回统一响应结果,在页面渲染展示

  • 在pom.xml问价中引入dom4j地依赖,用于解析XML文件
  • 引入资料中提供的解析XML地工具类XMLParserUtils、对应的实体类Emp、XML文件emp.xml
  • 引入资料中提供的静态页面文件,放在resources下地static目录下
  • 编写Controller程序,处理请求,响应数据

springboot项目地静态资源(html,css,js等前端资源)默认存放目录为:classpath:/static、classpath:/public、classpath:/resources

分层解耦

三层架构:

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

分层解耦

内聚:软件中各个功能模块内部地功能联系。

耦合:衡量软件中各个层/模块之间地依赖、关联地程度。

软件设计原则:高内聚低耦合

控制反转:Inversion Of Control,简称IOC。对象地创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。

依赖注入:Dependency Injection,简称DI。容器为应用程序提供运行时,所以来地资源,称之为依赖注入。

Bean对象:IOC容器中创、管理的对象,称之为bean。

IOC & DI入门

1.Service层 及 Dao层地实现类,交给IOC容器管理。

2.为Controller及Service注入运行时,依赖地对象。

3.运行测试。

IOC详解

注解 说明 位置
@Component 声明bean的基础注解 不属于一下三类时,用此注解,通常见于工具类
@Controller @Component的衍生注解 标注在控制器类
@Service @Component的衍生注解 标注在业务类上
@Repository @Component的衍生注解 标注在数据访问类上(由于与mybatis整合,用的少)

注意事项:

  • 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
  • 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。

Bean的组件扫描

  • 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
  • @ComponentScan注解虽然没有显示配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包。

DI详解

Bean注入

1.@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误

Field empService in com.itheima.controller.EmpController required a single bean, but 2 were found:
	- empServiceA: defined in file [E:\springboot-web-req-resp\target\classes\com\itheima\service\impl\EmpServiceA.class
	- empServiceB: defined in file [E:\springboot-web-req-resp\target\classes\com\itheima\service\impl\EmpServiceB.class
Action:

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean

2.通过以下几种方案来解决:

  • @Primary
  • @Autowired + @Qualifier("bean的名称")
  • @Resource(name="bean的名称")

3.@Resource 与 @Autowired区别

  • @Autowired是spring框架 提供的注解,而@Resource是JDK提供的注解。
  • @Autowired默认是按照类型注入,而@Resource默认是按照名称注入。
posted @   JenckMin  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示