app建设网站,pr值高的网站,做网站推广要注意什么,直播软件开发需要多少钱SpringBoot项目中参数获取与响应
1. 程序结构通信方式
程序结构#xff1a; C/S #xff1a; 客户端/服务器端 -Main方法。 -效果炫目、数据相对安全。 -公司成本高#xff0c;因为要分别开发客户端和服务器端。 B/S#xff1a; 浏览器端/服务器端 -效果依赖于浏览…SpringBoot项目中参数获取与响应
1. 程序结构通信方式
程序结构 C/S 客户端/服务器端 -Main方法。 -效果炫目、数据相对安全。 -公司成本高因为要分别开发客户端和服务器端。 B/S 浏览器端/服务器端 -效果依赖于浏览器、数据相对不如C/S安全token令牌模式 -公司成本低只需要单独开发服务器端。 资源信息 资源在网上能够访问的一切信息文字、图片、音乐、视频… 静态资源代码不变、效果不变。 HTML/CSS/JS/VUE… 动态资源效果改变根据代码控制。 Java、servlet…) 通信方式 WEB程序请求和响应模式。 -浏览器向服务器发信息 发请求 -服务器向浏览器发信息发响应 请求-响应是成对出现的。 -先有请求再有响应。 -必须是 浏览器先向服务器发请求服务器收到请求后才能向浏览器发响应。 2. 创建和浏览器交互的控制器-controller
包创建 Java程序Java类创建
新建名为—MyController的class类 在MyController中输入
RestController //标记当前Java类是一个可以和浏览器进行数据交换的控制器
RequestMapping(/my) //给该控制器设置一个访问路径该路径是可以在浏览器上进行访问的
public class MyController {RequestMapping(/t1)//给该方法设置一个访问路径该路径是可以在浏览器上进行访问的public String t1(){System.out.println(helloWorld!!!);//在控制台打印信息return 你好世界;//将信息发给浏览器让浏览器展示}
}
程序运行的访问路径:http://localhost:8080/my/t1
问题解释 SpringBoot启动和关闭 启动 关闭 任意按下一个小红方块均可关闭SpringBoot项目 关闭之后刷新网页不再出现运行SpringBoot项目时显示的页面 代码编写的注意事项 如果更新了代码怎么办 先正常关闭服务器再重新正常启动服务器代码执行的就是最新代码了。
3. 单参数获取 传统风格
http://主机名:端口/资源?参数列表
例如http://localhost:8080/my/t1?userNameaasexmanhobbiescodehobbiesswim
- 必须传递参数
RequestParam(参数名) 参数类型 参数名例如如果忘记传递sex这个参数浏览器就会报错
- 非必须传递参数
RequestParam(value参数名,requiredfalse) 参数类型 参数名
设置为非必须传递参数如果参数正常传递可以接收如果参数未传递返回为null例如: RequestMapping(/t2)public void t2(RequestParam(userName)String userName,RequestParam(sex)String sex,RequestParam(hobbies)String[] hobbies){//http://localhost:8080/my/t2?userNameaasexmanhobbiescodehobbiesswimSystem.out.println(userName);System.out.println(sex);System.out.println(Arrays.toString(hobbies));}
RequestMapping(/t3)
public void t3(RequestParam(userName)String userName,RequestParam(valuesex,required false)String sex,RequestParam(hobbies)String[] hobbies
){//http://localhost:8080/my/t3/userNameaasexmanhobbiescodehobbiesswim//http://localhost:8080/my/t3?userNameaahobbiescodehobbiesswimSystem.out.println(userName);System.out.println(sex);System.out.println(Arrays.toString(hobbies));
}
RESTFul风格
http://主机名:端口/资源/参数列表
例如http://localhost:8080/my/t1/aa/man/code,swim
PathVariable(参数名) 参数类型 参数名
RequestMapping(/资源名/{参数名1}/{参数名2})例如http://localhost:8080/my/t1/aa/man/code,swim
RequestMapping(/t1/{userName}/{sex}/{hobbies})
PathVariable(userName) String userName
RequestMapping(/t4/{userName}/{sex}/{hobbies})
public void t4(PathVariable(userName) String userName,PathVariable(sex)String sex,PathVariable(hobbies)String[] hobbies
){//http://localhost:8080/my/t4/aa/man/code,swimSystem.out.println(userName);System.out.println(sex);System.out.println(Arrays.toString(hobbies));
}
小结 传统方式RequestParamRESTFul风格PathVariable4. 多参数获取JavaBean/Map数据
4.1. Swagger2
postman经典测试工具
Swagger2集成到项目中比postman更加方便测试工具。环境搭建 在pom.xml中添加maven环境—再点击更新maven环境 dependencygroupIdio.springfox/groupIdartifactIdspringfox-boot-starter/artifactIdversion3.0.0/version/dependency添加注解
使用入口 8080是端口号
http://localhost:8080/swagger-ui/index.html使用操作 POST请求居多少量的GET请求
JavaBean
进行数据封装
属性名 属性值;
userName 张三;
hobbies 编程,游泳;
创建TestBean1类
Data
public class TestBean1 {private String name;private String sex;private String[] hobbies;
}
RequestMapping(/t5)
public void t5(){//ctrlaltvTestBean1 tb1 new TestBean1();tb1.setName(小张);tb1.setSex(男);String[] hobbies {编程,游泳};tb1.setHobbies(hobbies);System.out.println(tb1);//查看所有属性值System.out.println(tb1.getName());//小张
}
Map 创建出来封装数据。
RequestMapping(/t6)
public void t6(){//key:String类型 value:任意类型MapString, Object map1 new HashMap();map1.put(name,小张);map1.put(sex,男);String[] hobbies {编程,游泳};map1.put(hobbies,hobbies);System.out.println(map1);//查看所有属性值System.out.println(map1.get(name));//小张System.out.println(Arrays.toString((Object[]) map1.get(hobbies)));
}
4.2. application/x-www-form-urlencoded格式
Swagger测试同步会导致复选框用hobbiesa1|a2格式导致服务器解析失败。 普通数据
接收请求直接在controller方法参数列表上写 JavaBean或map
格式1(建议
public 返回值类型 方法名(JavaBean javaBean){}格式2不建议
public 返回值类型 方法名(MapString,Object map){}
RequestMapping(/t7)
public void t7(TestBean1 testBean1){//http://localhost:8080/my/t7?name%E5%B0%8F%E5%BC%A0sexmanhobbiescodehobbiesswimSystem.out.println(testBean1);System.out.println(testBean1.getName());
}
RequestMapping(/t8)
public void t8(MapString,Object map){//http://localhost:8080/my/t8?name%E5%B0%8F%E5%BC%A0sexmanhobbiescodehobbiesswimSystem.out.println(map);//{}System.out.println(map.get(name));//nullSystem.out.println(Arrays.toString((Object[]) map.get(hobbies)));//null
}
4.3. application/json格式
json数据接收请求
RequestBody JavaBean javaBean
RequestBody MapString,Object mapRequestMapping(/t9)
public void t9(RequestBody TestBean1 testBean1){System.out.println(testBean1);System.out.println(testBean1.getName());
}
RequestMapping(/t10)
public void t10(RequestBody MapString,Object map){System.out.println(map);//{hobbies[游泳, 编程], name小张, sex男}System.out.println(map.get(name));//小张
}
小结如果接收json请求数据若只是接收并使用一次用map.如果多个方法中都有接收和使用用JavaBeanjson数据发送响应
ResponseBody JavaBean
ResponseBody MapString,ObjectRequestMapping(/t11)
public ResponseBody TestBean1 t11(){TestBean1 tb1 new TestBean1();tb1.setName(小张);tb1.setSex(男);String[] hobbies {编程,游泳};tb1.setHobbies(hobbies);return tb1;
}
RequestMapping(/t12)
public ResponseBody MapString, Object t12(){MapString, Object map1 new HashMap();map1.put(name,小张);map1.put(sex,男);String[] hobbies {编程,游泳};map1.put(hobbies,hobbies);return map1;}
小结如果发送json响应数据若只是响应并使用一次用map.如果多个方法中都有响应和使用用JavaBean