注册公司网站模板,android开发技术,信得过的建设工程人员查询,网站的工商网监怎么做进去0.1
在上一次的课程中#xff0c;我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用#xff0c;浏览器发起请求 /hello 后 #xff0c;给浏览器返回字符串 “Hello World ~”。
其实呢#xff0c;是我们在浏览器发起请求#xff0c;请求了我们…0.1
在上一次的课程中我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用浏览器发起请求 /hello 后 给浏览器返回字符串 “Hello World ~”。
其实呢是我们在浏览器发起请求请求了我们的后端web服务器(也就是内置的Tomcat)。而我们在开发web程序时呢定义了一个控制器类Controller请求会被部署在Tomcat中的Controller接收然后Controller再给浏览器一个响应响应一个字符串 “Hello World”。 而在请求响应的过程中是遵循HTTP协议的。
但是呢这里要告诉大家的时其实在Tomcat这类Web服务器中是不识别我们自己定义的Controller的。但是我们前面讲到过Tomcat是一个Servlet容器是支持Serlvet规范的所以呢在tomcat中是可以识别 Servlet程序的。 那我们所编写的XxxController 是如何处理请求的又与Servlet之间有什么联系呢
其实呢在SpringBoot进行web程序开发时它内置了一个核心的Servlet程序 DispatcherServlet称之为 核心控制器。 DispatcherServlet 负责接收页面发送的请求然后根据执行的规则将请求再转发给后面的请求处理器Controller请求处理器处理完请求之后最终再由DispatcherServlet给浏览器响应数据。
那将来浏览器发送请求会携带请求数据包括请求行、请求头请求到达tomcat之后tomcat会负责解析这些请求数据然后呢将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象那也就意味着 HttpServletRequest 对象就可以获取到请求数据。 而Tomcat还给Servlet程序传递了一个参数 HttpServletResponse通过这个对象我们就可以给浏览器设置响应数据 。 1. 简单参数
RestController
public class RequestController {// http://localhost:8080/simpleParam?nameTomage10// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10 参数名:age , 参数值:10//springboot方式RequestMapping(/simpleParam)public String simpleParam(String name , Integer age ){//形参名和请求参数名保持一致System.out.println(name : age);return OK;}
} 参数不一致
RestController
public class RequestController {// http://localhost:8080/simpleParam?nameTomage20// 请求参数名name//springboot方式RequestMapping(/simpleParam)public String simpleParam(String username , Integer age ){//请求参数名和形参名不相同System.out.println(username : age);return OK;}
} name没拿到
答案运行没有报错。 controller方法中的username值为nullage值为20 结论对于简单参数来讲请求参数名和controller方法中的形参名不一致时无法接收到请求数据
那么如果我们开发中遇到了这种请求参数名和controller方法中的形参名不相同怎么办
解决方案可以使用Spring提供的RequestParam注解完成映射
在方法形参前面加上 RequestParam 然后通过value属性执行请求参数名从而完成映射。代码如下
可见能拿到name了。
2. 实体参数
在使用简单参数做为数据传递方式时前端传递了多少个请求参数后端controller方法中的形参就要书写多少个。如果请求参数比较多通过上述的方式一个参数一个参数的接收会比较繁琐。
此时我们可以考虑将请求参数封装到一个实体类对象中。 要想完成数据封装需要遵守如下规则请求参数名与实体类的属性名相同
//实体参数简单实体对象RequestMapping(/simplePojo)public String simplePojo(User user){System.out.println(user);return OK;} 3. 数组集合参数
数组集合参数的使用场景在HTML的表单中有一个表单项是支持多选的(复选框)可以提交选择的多个值。 测试数据一样。
4. 日期参数 //日期时间参数RequestMapping(/dateParam)public String date(DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss)LocalDateTime dateTime){System.out.println(dateTime);return dateTime.toString();} 5. JSON数据
在学习前端技术时我们有讲到过JSON而在前后端进行交互时如果是比较复杂的参数前后端通过会使用JSON格式的数据进行传输。 JSON是开发中最常用的前后端数据交互方式
我们学习JSON格式参数主要从以下两个方面着手 Postman在发送请求时如何传递json格式的请求参数 在服务端的controller方法中如何接收json格式的请求参数
Postman发送JSON格式数据
服务端Controller方法接收JSON格式数据 传递json格式的参数在Controller中会使用实体类进行封装。 封装规则JSON数据键名与形参对象属性名相同定义POJO类型形参即可接收参数。需要使用 RequestBody标识。 6. 路径参数
传统的开发中请求参数是放在请求体(POST请求)传递或跟在URL后面通过?keyvalue的形式传递(GET请求)。