首页 > 其他分享 >Web后端开发-请求响应

Web后端开发-请求响应

时间:2024-04-20 23:12:36浏览次数:25  
标签:Web 请求 后端 Controller 响应 bean 参数 注解

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默认是按照名称注入。

标签:Web,请求,后端,Controller,响应,bean,参数,注解
From: https://www.cnblogs.com/JenckMin/p/18148375

相关文章

  • 使用Docker部署一个简单的web项目
    使用Docker部署一个简单的web项目开发流程在本地开发一个有静态文件服务的web服务程序web服务监听ip+port为0.0.0.0:3000在服务器上使用Dockerfile构建镜像使用构建出的镜像运行容器配置Nginx将端口代理到web服务的3000端口在本地开发一个有静态文件服......
  • Flask请求和响应
    Flask请求和响应目录Flask请求和响应flask请求对象request参数args-Get参数获取form-POST请求参数JSONrequest.values路径属性路由转化器自定义转换器flask响应返回返回json自定义响应对象重定向Cookies对象Cookie的特点Session会话对象Session的特点参考资料flask请求对象使用......
  • 如何创建响应式HTML电子邮件模板
    在这个适合初学者的指南中,你将学习如何创建一个响应式电子邮件模板。你将跟随逐步说明以及代码片段设计一个在任何设备上都看起来很棒的电子邮件模板。这个项目非常适合渴望掌握电子邮件设计基础的新手!(本文视频讲解:java567.com)步骤1:设置基本结构要构建一个电子邮件模板,你可以......
  • web server apache tomcat11-10-Class Loader
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目从零手写实现tomcatminicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserverapachetomcat11-02-setup启动web......
  • vuex结合websocket使用
    1、创建一个store文件夹,并在其中创建store.js文件,结合vuex:importVuefrom'vue'importVuexfrom'vuex'importcommonfrom"../common/common.js";Vue.use(Vuex)conststore=newVuex.Store({state:{/***是否需要强制登录*/......
  • WebShell管理工具的流量特征-哥斯拉 v4.01
    一、哥斯拉v4.01PHP_EVAL_XOR_BASE64:1.WebShell连接通讯流量分析本次案例以哥斯拉v4.01连接PHP_EVAL_XOR_BASE64-WebShell木马的通讯过程为例哥斯拉v4.01主界面如下:有效载荷支持:Asp、Java、CS、Php默认加密方式有:PHP_EVAL_XOR_BASE64、PHP_XOR_BASE64、PHP_XOR_RAW我们......
  • IIS 执行此操作时出错。 详细信息:web.config 错误,.net core项目
    一、IIS执行此操作时出错。详细信息:web.config错误,.netcore项目   运行报错错误信息提示的很明确:IISWebCore模块问题二、解析:IIS下报错,但是直接启动exe文件可以正常运行。 三、解决方案先安装IIS,然后安装Asp.netCore运行时。 更多:IIS10隐藏https......
  • web server apache tomcat11-08-JNDI Resources
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目从零手写实现tomcatminicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserverapachetomcat11-02-setup启动web......
  • 用 React 结合 SAP UI5 Web Components 来开发 SAP Fiori 应用
    用React结合SAPUI5WebComponents来开发SAPFiori应用阿里云开发者​已认证账号​关注 6人赞同了该文章简介:用React结合SAPUI5WebComponents来开发SAPFiori应用在FioriFundamentals和SAPUI5WebComponent诞生之前,SA......
  • WebGIS 瓦片地图引擎实现之——地图瓦片加载计算原理介绍
    WebGIS瓦片地图引擎实现之——地图瓦片加载计算原理介绍ThinkGISGIS背景在蚂蚁搞空间数据可视化,L7地理可视化引擎作者​关注他 65人赞同了该文章.背景1.1地图瓦片之前在地图瓦片技术使用之前,用户使用在线地图,一般都是客户端把将要显示的......