WebDay05作业
WebDay05作业
一、选择题:
选择题
1. 下面注解描述错误的是( )
A. @RequestBody是用于封装json参数的注解
B. @RequestParam可以将多个同名参数封装给集合
C. @RequestMapping可以作用在类上也可以作用在方法上
D. @PathVariable可以用于请求参数名和方法形参不同名的情况。
2. 【多选题】下面关于传参说法正确的是( )
A. 当传递的参数是name=zhangsan
形式的参数,controller中既可以用String变量接收,又可以用实体类型接收
B. 日期类型的参数必须注明pattern,否则会抛异常
C. json格式的参数controller中只能使用实体类型接收
D. 路径参数的个数不宜过多
3. 下面关于响应说法正确的是( )
A. 一次请求必须对应一次响应,这样才是一次完整的数据交互
B. 如果controller层中方法上没有指定@ResponseBody,则不能响应数据
C. @RestController和@Controller的效果是一样的
D. 当响应数据是一个实体对象时,如果controller层中方法上有@ResponseBody注解,底层会将实体对象的toString数据返回
4. 下面关于统一响应结果类说法错误的是( )
A. 统一响应结果类一般包含三个属性:响应状态码,描述信息,返回的数据
B. 响应状态码用来表示操作是成功还是失败
C. 描述信息用于描述响应结果类型
D. 返回的数据一般用于封装查询结果
5. 【多选题】下面关于三层架构说法正确的是( )
A. 三层架构中controller用于接收请求和处理响应
B. service用于处理业务逻辑
C. dao用于数据访问
D. controller层一般先定义接口再定义实现类
6. 【多选题】下面关于IOC的说法正确的是( )
A. IOC翻译过来叫做依赖注入
B. SpringIOC的本质就是Spring框架帮我们创建对象并加入到容器管理
C. 用IOC思想可以在一定程度上使得代码解耦合
D. IOC容器创建的对象我们一般叫做bean
7. 下面关于IOC注解的说法错误的是( )
A. @Controller注解一般加上控制层
B. @RestController 等价于 @Controller + @RequestBody
C. @Service一般用于业务层
D. @Repository用于数据层
8. 下面关于DI说法错误的是( )
A. DI的本质就是在给成员变量赋值
B. @Autowired一般用于注入对象
C. @Value一般用于注入基本类型和字符串数据
D. @Resource默认按类型注入对象
二、今日单词:
单词
控制器
单词:请求体
单词:响应体
单词:路径参数
单词:业务
单词:依赖
单词:组件
单词:
三、简答题:
简答题
- Postman有什么作用?
答:
实体对象接收参数有什么要求?
答:
如果请求参数名和controller方法的变量名不一致如何处理?
答:
多个同名参数如何接收?
答:
路径参数如何接收?
答:
JSON参数如何接收?
答:
IOC和DI有哪些常用的注解?分别有什么作用?
答:
四、排错题:
排错题1:
排错题1
// 已知请求方式为GET,路径为: http://localhost:8080/param1?username=zhangsan
// 将代码改为可以正确接收参数
@RestController
public class ParamController {
@RequestMapping("/param1")
public String param1(String name, int age) {
System.out.println(name);
System.out.println(age);
return "param1 ok";
}
}
排错题2:
排错题2
// 已知请求方式为GET, 路径为: http://localhost:8080/param2?username=zhangsan&password=123
// 将代码改为可以正确接收参数
@RestController
public class ParamController {
@RequestMapping("/param2")
public String param2(User user) {
System.out.println(user);
return "param2 ok";
}
}
public class User {
}
排错题3:
排错题3
// 已知请求方式为POST,请求路径为: http://localhost:8080/param3
// 请求参数为 {"name":"zhangsan","gender":"男"}
// 将代码改为可以正确接收参数
@RestController
public class ParamController {
@RequestMapping("/param3")
public String param3(User user){
System.out.println(user);
return "param3 ok";
}
}
public class User {
}
五、代码题:
第一题:分析以下需求,并用代码实现
第一题
接收参数:
定义ParamController类,在类中定义6个方法,分别用于接收以下类型的请求参数:
1. 普通参数
2. pojo参数
3. 日期参数
4. 集合参数
5. json参数
6. 路径参数
第二题:分析以下需求,并用代码实现
第二题
模拟登录:
1.在d:/users.txt文件中存放正确的用户名和密码数据如下:
username=zhangsan&password=123
username=lisi&password=234
2.定义UserController类,在类中定义login方法,接收前端发送的用户名密码参数,参数格式如下:
{"username":"zhangsan","password":"123"}
3.在login方法中判断前端提交的用户名密码是否正确,如果正确则响应登录成功,否则响应登录失败(需要用Result封装响应结果)
4.使用postman测试以上功能
第三题:分析以下需求,并用代码实现
第三题
模拟注册和查询:
在
UserController
类中定义register方法
,接收前端发送的用户名密码参数,参数格式如下:{"username":"zhangsan","password":"123"}
在register方法中判断前端提交的用户名是否已经在
d:/users.txt
在存在,如果存在则响应注册失败,否则就把前端提交的用户名和密码写入users.txt
中,并响应注册成功(需要用Result封装响应结果)在UserController类中定义list方法,读取
d:/users.txt
文件中的所有用户名和密码,分别封装成User实体并存入List集合,并响应List集合(需要用Result封装响应结果)尝试使用三层架构思想改写代码