请求响应(后端必备)

一、请求

1.简单参数

  • 原始方式:

在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取

@RequestMapping("/simpleParam")
    public String simpleParam(HttpServletRequest request){

       String name = request.getParameter("name");
        String ageStr = request.getParameter("age");

        int age = Integer.parseInt(ageStr);
        System.out.println(name + age);

        return "OK";
    }
  • SpringBoot方式

简单参数:参数名与形参变量名相同,定义形参即可接收参数

//Springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(String name,Integer age){
        System.out.println(name + age);
        return "OK";
    }

 如果方法形参名与请求参数名称不匹配,可以使用@RequestParam完成映射

注意事项:@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。该参数是可选的,可以设置为false

  @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam(name = "name") String username, Integer age){
        System.out.println(username + age);
        return "OK";
    }

2.实体参数

  • 简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

3.数组集合参数

  • 数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数 
 @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }
  • 数组集合参数:通过注解RequestParam绑定参数
@RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby){
        System.out.println(hobby);
        return "OK";
    }

4.日期参数

  • 使用@DateTimeFormat注解完成日期参数格式转换
@RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){
        System.out.println(updateTime);
        return "OK";
    }

5.Json参数

  • Json数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识

    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user) {
        System.out.println(user);
        return "OK";
    }

6.路径参数

  • 通过请求URL直接传递参数,使用{...}来标识该路径参数,需要使用@PathVariable获取路径参数
 @RequestMapping("/path/{id}")
    public String pathParam(@PathVariable Integer id) {
        System.out.println(id);
        return "OK";
    }

获取多个路径参数

  @RequestMapping("/path/{id}/{name}")
    public String pathParam(@PathVariable Integer id,@PathVariable String name) {
        System.out.println(id);
        System.out.println(name);
        return "OK";
    }

二、响应

1.@ResponseBody

  • 类型:方法注解、类注解
  • 位置:Controller方法上
  • 作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应
  • 说明:@RestController=@Controller+@ResponseBody

2.统一响应结果

  • 统一响应结果封装类
public class Result {
    private Integer code; //1 成功  0 失败
    private String msg; //提示信息
    private Object data; //数据 date

    public Result(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public Result() {
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    public static Result success(){
        return new Result(1,"success",null);
    }
    public static Result error(String msg){
        return new Result(0,msg,null);
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}
@RestController
public class ResponseController {

    @RequestMapping("/hello")
    public Result hello(){
        System.out.println("Hello,world");
        return Result.success("hello,world");
    }
    @RequestMapping("/getAddr")
    public Result getAddr(){
        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");
        return Result.success(addr);
    }
    @RequestMapping("/listAddr")
    public Result listAddr(){
        ArrayList<Object> list = new ArrayList<>();

        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");

        Address addr2 = new Address();
        addr2.setProvince("湖南");
        addr2.setCity("长沙");

        list.add(addr);
        list.add(addr2);
        return Result.success(list);
    }
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一名Java后端程序员,以下是一些必备的技能: 1. Java语言:作为Java后端开发人员,深入了解Java语言的语法、特性和面向对象编程是必不可少的。 2. Web开发:掌握Java的Web开发框架,如Spring、Spring Boot和Spring MVC,以及相关的技术,如Servlet、JSP和RESTful API等。 3. 数据库和SQL:了解关系型数据库(如MySQL、Oracle)和NoSQL数据库(如MongoDB、Redis)的基本概念和使用方法,熟悉SQL语言以进行数据操作。 4. 前端技术:熟悉基本的前端开发技术,如HTML、CSS和JavaScript,以便与前端开发人员进行协作并理解前后端交互。 5. 网络和协议:了解网络通信原理、HTTP协议以及常见的网络安全问题,能够处理网络请求响应。 6. 版本控制工具:熟练使用版本控制工具(如Git)来管理代码,并了解分支管理、合并等基本操作。 7. 测试和调试:掌握单元测试和集成测试的方法和工具,能够进行代码调试和性能优化。 8. 设计模式:熟悉常用的设计模式,如工厂模式、单例模式、观察者模式等,以提高代码的可维护性和扩展性。 9. 服务器和部署:了解常见的服务器操作系统(如Linux)、服务器配置和部署,熟悉常用的部署工具(如Docker)和Web服务器(如Tomcat)的使用。 10. 敏捷开发方法:熟悉敏捷开发方法(如Scrum),能够参与团队合作,进行需求分析和任务管理。 除了上述技术技能外,良好的沟通能力、问题解决能力、团队合作精神和持续学习的态度也是Java后端程序员必备的软技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值