springMVC(四):springMVC响应数据绑定

1、返回值为void

使用response直接响应,如:

    /**
     * 返回类型为void
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping("/testVoid")
    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 设置中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        // 直接会进行响应
        response.getWriter().print("你好");
        return;
    }

2、返回值为String

2.1、将数据绑订到request

@RequestMapping("/login4.do")
public String login4(AdminParam 		ap,HttpServletRequest req) {
	System.out.println("login4()");
	String adminCode = ap.getAdminCode();
	//将数据绑定到request对象上
	req.setAttribute("adminCode", adminCode);
	return "index";
}

2.2、将数据绑定到Model

    /**
     * 返回类型为String
     * @param model
     * @return
     */
    @RequestMapping("/testString")
    public String testString(Model model){
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setDate(new Date());
        model.addAttribute("userInfo",userInfo);
        return "success";
    }

2.3、将数据绑定到ModelMap

//DispatcherServlet从ModelMap对象获取数据,然后将这些数据绑定到request.
@RequestMapping("/login6.do")
public String login6(AdminParam ap,ModelMap mm) {
	System.out.println("login6()");
	String adminCode = ap.getAdminCode();
	mm.addAttribute("adminCode",adminCode);
	return "index";
}

2.4、将数据绑订到session

@RequestMapping("/login7.do")
public String login7(AdminParam ap,HttpSession session) {
	System.out.println("login7()");
	String adminCode = ap.getAdminCode();
	//将数据绑定到session
	session.setAttribute("adminCode", 		adminCode);
	return "index";
}

3、返回值为ModelAndView

    /**
     * 返回类型为ModelAndView
     * @return
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        ModelAndView mv = new ModelAndView();
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("李四");
        userInfo.setPassword("456");
        userInfo.setDate(new Date());

        // 把userInfo对象存储到mv对象中,也会把userInfo对象存入到request对象
        mv.addObject("userInfo",userInfo);

        // 跳转到哪个页面
        mv.setViewName("success");
        return mv;
    }

4、重定向

4.1、返回值为void

    /**
     * 重定向
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping("/testRedirect")
    public void testRedirect(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 重定向
        response.sendRedirect(request.getContextPath()+"/index.jsp");
        return;
    }

4.2、返回值为String

    /**
     * 使用关键字的方式进行重定向
     * @return
     */
    @RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect(HttpServletRequest request){
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setDate(new Date());
        request.setAttribute("userInfo",userInfo);

        // 重定向
        return "redirect:/index.jsp";
    }

4.3、返回值为ModelAndView

    /**
     * 使用RedirectView重定向
     * @return
     */
    @RequestMapping("/testRedirect1")
    public ModelAndView testRedirect1(HttpServletRequest request){
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setDate(new Date());
        request.setAttribute("userInfo",userInfo);

        RedirectView rv = new RedirectView(request.getContextPath() + "/index.jsp");
        ModelAndView mav = new ModelAndView(rv);
        return mav;
    }

5、转发

5.1、返回值为void

    /**
     * 转发
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping("/testForward")
    public void testForward(HttpServletRequest request, HttpServletResponse response) throws Exception {
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setDate(new Date());
        request.setAttribute("userInfo",userInfo);
        // 编写请求转发的程序
        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
        return;
    }

5.2、返回值为String

    /**
     * 使用关键字的方式进行转发
     * @return
     */
    @RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect(HttpServletRequest request){
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setDate(new Date());
        request.setAttribute("userInfo",userInfo);
        // 请求的转发
        return "forward:/WEB-INF/pages/success.jsp";
    }

6、响应json数据

    /**
     * 模拟异步请求响应
     * RequestBody注解:将json的字符串转换成JavaBean的对象
     * ResponseBody注解:将JavaBean对象转换成json字符串
     */
    @RequestMapping("/testAjax")
    public @ResponseBody UserInfo testAjax(@RequestBody UserInfo userInfo){
        // 客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到userInfo对象中
        System.out.println(userInfo);
        userInfo.setUsername("haha");
        userInfo.setPassword("123");
        return userInfo;
    }
发布了134 篇原创文章 · 获赞 10 · 访问量 7343

猜你喜欢

转载自blog.csdn.net/yu1755128147/article/details/103901721