SpringMVC返回值类型及响应数据类型

本文探讨了SpringMVC中控制器方法的三种返回值类型:String、void和ModelAndView,以及如何处理JSON数据响应。同时,提到了与JSP视图相关的处理方式和Controller中的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

返回值是String、void、ModelAndView类型
    /**
     * 返回值是字符串类型
     *
     * @param model
     * @return
     */
    @RequestMapping("/testString")
    public String testString(Model model) {
        System.out.println("testString方法执行了");
        User user = new User();
        user.setUsername("张三");
        user.setPassword("123456");
        user.setAge(20);
        model.addAttribute("user", user);
        //指定逻辑视图的名称,根据视图解析器为物理视图的地址
        //跳转到某个页面
        return "success";
    }

    /**
     * 返回值是void
     * 如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到
     * 默认会跳转到@RequestMapping(value="/initUpdate") initUpdate的页面
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @RequestMapping("/testVoid")
    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("testVoid方法执行了");

        //1.转发
        //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);

        //2.重定向
        //response.sendRedirect(request.getContextPath() + "/index.jsp");

        //解决中文乱码
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        //直接进行响应
        response.getWriter().write("你好");

        return;
    }

    /**
     * 返回值是ModelAndView
     * ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图
     *
     * @return
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView() {
        //创建ModelAndView对象
        ModelAndView mv = new ModelAndView();
        User user = new User();
        user.setUsername("李四");
        user.setPassword("123456");
        user.setAge(20);

        System.out.println("testModelAndView方法执行了");


        //将User对象存入mv,User对象会同时存入request对象中
        mv.addObject("user", user);
        //设置跳转到哪个页面
        mv.setViewName("success");
        return mv;
    }

    /**
     * 返回值中使用关键字进行转发或重定向
     *
     * @return
     */
    @RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect() {
        //使用关键字进行转发和重定向的时候不能再使用视图解析器对象,需自己补全路径
        //转发
        //return "forward:/WEB-INF/pages/success.jsp";
        //重定向
        return "redirect:/index.jsp";
    }
响应JSON数据
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
            $("#btn").click(function () {
                $.ajax({
                    url: "user/testAjax",
                    contentType: "application/json;charset=utf-8",
                    data: '{"username":"张三","password":"123456","age":30}',
                    dataType: "json",
                    type: "post",
                    async: true,
                    success: function (data) {
                        alert("响应的姓名:" + data.username)
                    }
                });
            });
        });
    </script>
</head>
<body>
<button id="btn">ajax异步请求</button>
</body>
</html>

Controller
	@RequestMapping("/testAjax")
    public @ResponseBody
    User testAjax(@RequestBody User user) {
        //客户端发送ajax请求,将json字符串封装到User中
        System.out.println(user);

        //返回一个新的User
        user.setUsername("lisi");
        user.setPassword("abcd");
        user.setAge(12);

        return user;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值