电脑上自己做科目一的网站,南宁哪家公司建设网站比较好,开发房地产需要多少钱,win10优化大师请求
SpringBoot内置Servlet
在Tomcat这类Web服务器中#xff0c;是不识别我们自己定义的Controller的#xff0c;但在tomcat中是可以识别 Servlet程序的。在SpringBoot进行web程序开发时#xff0c;它内置了一个核心的Servlet程序 DispatcherServlet#xff0c;称之为 核…请求
SpringBoot内置Servlet
在Tomcat这类Web服务器中是不识别我们自己定义的Controller的但在tomcat中是可以识别 Servlet程序的。在SpringBoot进行web程序开发时它内置了一个核心的Servlet程序 DispatcherServlet称之为 核心控制器。 DispatcherServlet 负责接收页面发送的请求然 后根据执行的规则将请求再转发给后面的请求处理器Controller请求处理器处理完请求之后最 终再由DispatcherServlet给浏览器响应数据 那将来浏览器发送请求会携带请求数据包括请求行、请求头请求到达tomcat之后tomcat会 负责解析这些请求数据然后呢将解析后的请求数据会传递给Servlet程序的HttpServletRequest 对象那也就意味着 HttpServletRequest 对象就可以获取到请求数据。 而Tomcat还给 Servlet程序传递了一个参数 HttpServletResponse通过这个对象我们就可以给浏览器设置响 应数据 。
安装postman接口调试工具 springboot简单参数传递
不论是GET请求还是POST请求对于简单参数来讲只要保证方法中的形参名保持一致 就可以获取到请求参数中的数据值自动进行类型转换。 比如
GetMapping (/simpleParam)public String simpleParam(String name , Integer age ){// http://localhost:8080/simpleParam?nameTomage10// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10//springboot方式形参名和请求参数名相同即可System.out.println(name : age);return OK;}当请求参数名和controller方法中的形参名不相同可以使用Spring提供的RequestParam注解完成映射。 在方法形参前面加上 RequestParam 然后通过value属性执行请求参数名从而完成映射。 比如 注意RequestParam中的required属性默认为true默认值也是true代表该请求参数必须传递如果不传递将报错。 如果该参数是可选的可以将required属性设置为false。defaultValue属性可以设置参数的默认值 GetMapping (/simpleParam)//可以用value也可以用name(namename)public String simpleParam(RequestParam(valuename) String username , Integer age ){// http://localhost:8080/simpleParam?nameTomage10//springboot方式形参名和请求参数名相同即可System.out.println(username : age);return OK;}实体参数传递
简单实体参数
如果请求参数比较多可以考虑将请求参数封装到一个实体类对象中。请求参数名与实体类的属性名相同不相同就无法匹配。 例子 实体类User
public class User {private String name;private Integer age;//ALTinsert快速生成getter setter//省略 getter和setter 函数Overridepublic String toString() {return User{ name name \ , age age };}
}控制层
RestControllerpublic class RequestController {//实体参数简单实体对象//http://localhost:8080/simplePojo?namefayeage102GetMapping(/simplePojo)public String simplePojo(User user){System.out.println(user);return OK;}}数组集合参数
数组
数组参数请求参数名与形参数组名称相同且请求参数为多个定义数组类型形参即可接收参数
数组形式接收的Controller方法
RestController
public class RequestController {//数组集合参数RequestMapping(/arrayParam)public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return OK;}
}Postman测试 在前端请求时有两种传递形式 方式一 xxxxxxxxxx?hobbygamehobbyjava 方式二xxxxxxxxxxxxx?hobbygame,java
集合
集合参数请求参数名与形参集合对象名相同且请求参数为多个RequestParam 绑定参数关系 默认情况下请求中参数名相同的多个值是封装到数组。如果要封装到集合要使用RequestParam绑定参数关系 日期参数
需要注解DateTimeFormat(pattern “yyyy-MM-dd HH:mm:ss”)规定格式pattern里的字母分大小写 controller层 //http://localhost:8080/dateParam?updateTime2022-12-12 10:05:45GetMapping(/dateParam)public String dateParam(DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss) LocalDateTime updateTime){System.out.println(updateTime);return OK;}json参数
Postman发送JSON格式数据注意json所有key要用引起来
服务端Controller方法接收JSON格式数据
传递json格式的参数在Controller中会使用实体类进行封装。封装规则JSON数据键名与形参对象属性名相同定义POJO类型形参即可接收参数。需要使用 RequestBody标识。
实例的控制层代码
//http://localhost:8080/jsonParamPostMapping(/jsonParam)public String jsonParam(RequestBody User user){System.out.println(user);return OK;}路径参数
路径参数
前端通过请求URL直接传递参数后端使用{…}来标识该路径参数需要使用PathVariable获取路径参数
传递多个路径参数每个形参前面都要有**PathVariable**注解
//路径参数RequestMapping(/path/{id}/{name})public String pathParam2(PathVariable Integer id, PathVariable String name){System.out.println(id : name);return OK;}响应
ResponseBody注解实现return返回响应数据
controller方法中的return的结果使用ResponseBody注解可以响应给浏览器而在类上添加RestController就相当于添加了ResponseBody注解。 查看RestController的源码
Target({ElementType.TYPE}) //元注解修饰注解的注解
Retention(RetentionPolicy.RUNTIME) //元注解
Documented //元注解
Controller
ResponseBody
public interface RestController {AliasFor(annotation Controller.class)String value() default ;
}类上有RestController注解或ResponseBody注解时表示当前类下所有的方法返回值做为响应数据 方法的返回值如果是一个POJO对象或集合时会先转换为JSON格式在响应给浏览器
统一响应结果
统一的返回结果使用类来描述在这个结果中包含 响应状态码code当前请求是成功还是失败 状态码信息msg给页面的提示信息 返回的数据data给前端响应的数据字符串、对象、集合
静态资源默认存放位置
Springboot项目的静态资源(htmlcssjs等前端资源)默认存放目录为classpath:/static 、 classpath:/public、 classpath:/resources