springMVC学习笔记(三)

一、controller的方法返回值的问题
1) 返回值类型为:ModelAndView

controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view视图。

    // 【1、返回值ModelAndView】
    public ModelAndView lits() {
        // 1.业务操作
        System.out.println("查询成功....");
        // 2.构建ModelAndView
        ModelAndView mav = new ModelAndView();
        // 2.1 绑定model ==》数据
        List data = Arrays.asList(new String[] { "王二狗子", "李二麻子", "欧阳旺财" });
        mav.addObject("user", data);
        // 2.2 绑定视图 ==》 jsp|html 的名称
        mav.setViewName("orders"); // 被视图解析器加上前缀和后缀
        return mav;
    }
2) 返回值类型为void

在controller方法形参上可以定义request和response,使用request或response指定响应结果:

1.使用request转向页面,如下:

request.getRequestDispatcher(“页面路径”).forward(request, response);

2.通过response页面重定向:

response.sendRedirect(“url”)

3.通过response指定响应结果,例如响应json数据如下:

response.setCharacterEncoding(“utf-8”);
response.setContentType(“application/json;charset=utf-8”);
response.getWriter().write(“json串”);

    // 【2、返回值为void 不推荐使用】
    // controller方法返回值类型也可以是void
    @RequestMapping("/test/void")
    public void testVoid(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 1.转发
        // request.getRequestDispatcher("../WEB-INF/jsp/user/success.jsp").forward(request,
        // response) ;

        // 2.重定向
        // 行不通
        // response.sendRedirect("http://localhost:8080/nd-springmvc01-base2/WEB-INF/jsp/user/success.jsp");
        response.sendRedirect("/nd-springmvc01-base2/order/test/redirect");

    }
3)返回值类型为 String(配合Model参数)

String---->视图名称
Model—> 数据

  // 【3、返回值为String】
    //【3.1、视图的名称】
    @RequestMapping("/test/redirect")
    public String testRedirect() {
        return "user/success";//WEB-INF/jsp/ user/success  .jsp
    }
    
  //【3.2、转发  forward:】
    @RequestMapping("/test/forward")
    public String testForward() {
        return "forward:../../WEB-INF/jsp/user/success.jsp";//WEB-INF/jsp/ user/success  .jsp
    }
  //【3.3、转发  redirect】
    @RequestMapping("test/red")
    public String testRedirect2() {
        return "redirect:../test/redirect";
    }
  //【3.4、JSON进行数据交互 ---目前前后端分离的项目】
    @RequestMapping("test/json")
    @ResponseBody  //注解的作用 将返回的结果序列化为json字符串
    public String testJson() {
        return "{\"id\":27,\"name\":\"二狗子\"}";
    }
    
    //【3.5、JSON进行数据交互 ---目前前后端分离的项目】
    //【接口1----第1种:响应数据是json格式】
    @RequestMapping(value="test/jsonObj",method=RequestMethod.GET)
    @ResponseBody  //注解的作用 1.将返回的结果序列化为json字符串 2.不会使用视图解析器
    public List<Users> testJsonObj() {
         List<Users> users = iUsersService.list(1, 3);
        return users;
    }

    /**
     * 添加用户:
     * 单体项目===>表单(jsp/html)====>controller
     * 前后端分离====>postman(模拟请求)===>controller
     * 
     * 
     * API文档
     * 请求:
             {
                        "username": "王大锤",
                        "birthday": "2020-04-19",
                        "sex": "女",
                        "address": "长沙市五一新干线新梦想"
             }
                     
          响应:
          {
              status:200,
              msg:"添加成功",
              data:[]
          }
        * 
     */
    //【接口2===>第2种:请求是json格式数据  响应也是json格式数据】
    @RequestMapping(value="/save/user",method=RequestMethod.POST)
    @ResponseBody  //注解的作用 1.将返回的结果序列化为json字符串 2.不会使用视图解析器
    public  ServerResponse<Users>  saveUser(@RequestBody Users users) {
        System.out.println("users==>"+users);
        //1.逻辑操作......
        
        return ServerResponse.SuccessResponse();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值