WebDay05作业

YangeIT大约 5 分钟

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默认按类型注入对象


二、今日单词:

单词

  1. 控制器单词:

  2. 请求体单词:

  3. 响应体单词:

  4. 路径参数单词:

  5. 业务单词:

  6. 依赖单词:

  7. 组件单词:


三、简答题:

简答题

  1. Postman有什么作用?

答:

  1. 实体对象接收参数有什么要求?

    答:

  2. 如果请求参数名和controller方法的变量名不一致如何处理?

    答:

  3. 多个同名参数如何接收?

    答:

  4. 路径参数如何接收?

    答:

  5. JSON参数如何接收?

    答:

  6. 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测试以上功能

第三题:分析以下需求,并用代码实现

第三题

模拟注册和查询:

  1. UserController类中定义register方法,接收前端发送的用户名密码参数,参数格式如下: {"username":"zhangsan","password":"123"}

  2. 在register方法中判断前端提交的用户名是否已经在d:/users.txt在存在,如果存在则响应注册失败,否则就把前端提交的用户名和密码写入users.txt中,并响应注册成功(需要用Result封装响应结果)

  3. 在UserController类中定义list方法,读取d:/users.txt文件中的所有用户名和密码,分别封装成User实体并存入List集合,并响应List集合(需要用Result封装响应结果)

  4. 尝试使用三层架构思想改写代码