2020-08-24

SpringMVC 响应数据和结果视图

返回值分类

  • 返回值为字符串类型
@RequestMapping(value = "findAll")
    public String findAll(){
        return "success";
    }

controller 方法返回类型为字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/WEB-INF/jsp/success.jsp

  • 返回值为void类型

Servlet 原始 API 可以作为控制器中方法的参数:

1、使用 request 转向页面

@RequestMapping(value = "requestParam",method = RequestMethod.GET)
    public void requestModel1(HttpServletRequest request, HttpServletResponse response) {

        try {
            UserVO userVO = new UserVO();
            userVO.setUserId(101);
            userVO.setUserName("ll");
         request.setAttribute("userVo",userVO);          request.getRequestDispatcher("WEB-INF/jsp/requestParam.jsp").forward(request,response);

        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2、通过 response 页面重定向

@RequestMapping(value = "requestParam",method = RequestMethod.GET)
    public void requestModel1(HttpServletRequest request, HttpServletResponse response) {

        try {
            UserVO userVO = new UserVO();
            userVO.setUserId(101);
            userVO.setUserName("ll");
         request.setAttribute("userVo",userVO);          response.sendRedirect("modelview1");

        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3、通过 response 指定响应结果

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

注意:
request请求对象中,设置自定义的属性,可以在转发的目标页面获取设置的自定义属性,从而实现在同一请求周期内不同页面间的参数共享

重定向的转发相当于在浏览器地址上发起一个新的请求,一般给定的地址是在浏览器可以访问到的地址才可以定向转发,所以重定向的jsp页面不能写在WEB-INF下,可以在外面,因为WEB-INF下的jsp不能通过浏览器地址栏访问

  • 返回值为ModelAndView类型
@RequestMapping(value = "modelview2",method = RequestMethod.GET)
    public ModelAndView modelview2(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("success");
        UserVO userVO = new UserVO();
        userVO.setUserId(101);
        userVO.setUserName("ll");
        modelAndView.addObject("users","ff");
        modelAndView.addObject("userVo",userVO)return modelAndView;
       
    }

转发和重定向

  • 转发
 @RequestMapping(value = "forwardPage",method = RequestMethod.GET)
    public String forwardPage(){
        return "success";
    }

controller 方法在提供了 String 类型的返回值之后,默认就是请求转发。

 @RequestMapping(value = "forwardPage",method = RequestMethod.GET)
    public String forwardPage(){
        return "forward:/WEB-INF/pages/success.jsp";
    }

如果用了 forward:路径必须写成实际视图的 url,不能写逻辑视图。
等价于“request.getRequestDispatcher(“url”).forward(request,response)”。

  • 重定向
   @RequestMapping(value = "redirectPage",method = RequestMethod.GET)
    public String redircetPage(){
        //return "redirect:success";//不会进行视图适配器前缀加后缀进行渲染,所以一般不会给视图资源
        return "redirect:modelview1";//一般给controller方法
    }

相当于“response.sendRedirect(url)”。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不能写在 WEB-INF 目录中,否则无法找到。

这是一个 SQL 语句,用于向借阅表插入数据。该表包含以下字段:借阅编号、读者编号、书籍编号、借阅日期、归还日期、借阅状态。每条数据表示一次借阅记录。其借阅编号、读者编号、书籍编号、借阅日期和借阅状态是必填项,归还日期为可选项,如果借阅状态为“已还”则必须填归还日期。 具体插入的数据如下: - 借阅编号:100001,读者编号:123413,书籍编号:0001,借阅日期:2020-11-05,归还日期:NULL,借阅状态:借阅 - 借阅编号:100002,读者编号:223411,书籍编号:0002,借阅日期:2020-9-28,归还日期:2020-10-13,借阅状态:已还 - 借阅编号:100003,读者编号:321123,书籍编号:1001,借阅日期:2020-7-01,归还日期:NULL,借阅状态:过期 - 借阅编号:100004,读者编号:321124,书籍编号:2001,借阅日期:2020-10-09,归还日期:2020-10-14,借阅状态:已还 - 借阅编号:100005,读者编号:321124,书籍编号:0001,借阅日期:2020-10-15,归还日期:NULL,借阅状态:借阅 - 借阅编号:100006,读者编号:223411,书籍编号:2001,借阅日期:2020-10-16,归还日期:NULL,借阅状态:借阅 - 借阅编号:100007,读者编号:411111,书籍编号:1002,借阅日期:2020-9-01,归还日期:2020-9-24,借阅状态:已还 - 借阅编号:100008,读者编号:411111,书籍编号:0001,借阅日期:2020-9-25,归还日期:NULL,借阅状态:借阅 - 借阅编号:100009,读者编号:411111,书籍编号:1001,借阅日期:2020-10-08,归还日期:NULL,借阅状态:借阅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值