SpringMVC之4返回值类型和响应数据类型

返回值分类

1.字符串

controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

<!--视图解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <!-- 文件的前缀-->
        <property name="prefix" value="/WEB-INF/pages/" />
        <!-- 文件的后缀名-->
        <property name="suffix" value=".jsp" />
     </bean>
------------------------------------------------controller
public String testString(Model model) {
        System.out.println("testString.......");
        //模拟从数据库中查询User对象
        User user = new User();
        user.setUsername("joyTop");
        user.setPassword("123.com");
        user.setAge(22);
        model.addAttribute("user",user);
        return "success";
    }
-----------------------------------------------success.jsp:前端取值
    ${user}
    ${user.username}
    ${user.password}
    ${user.age}
2.void
@RequestMapping("/testVoid")
    public void testVoid11(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("testVoid.......");
        //1.编写请求转发  使用转发不会调用springMVC.xml里面配置的视图解析器
        //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
        //2.重定向  只能访问webapp下面的jsp页面
        //response.sendRedirect(request.getContextPath()+"/index.jsp");
        //3.直接响应   response解决乱码问题
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().println("无返回参数直接响应");
        return;
    }
3. 响应之返回值ModelAndView
 @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView() {
        System.out.println("testString.......");
        ModelAndView mv = new ModelAndView();
        //模拟从数据库中查询User对象
        User user = new User();
        user.setUsername("joyTop");
        user.setPassword("123.com");
        user.setAge(21);
        //把user对象存入ModelAndView中,底层也是把user存入request域对象中
        mv.addObject("user", user);
        //跳转到指定目录,使用springMVC.xml配置的视图解析器
        mv.setViewName("success");
        return mv;
    }
4.forward 转发orRedirect 重定向
@RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect() {
        System.out.println("testForwardOrRedirect.......");
        //请求转发  不走springMVC.xml配置文件中的视图解析器,所有要写全路径
        //return "forward:/WEB-INF/pages/success.jsp";
        //重定向 走springMVC.xml配置文件中的视图解析器
        return "redirect:/index.jsp";
    }
5.ResponseBody 响应和接收 json 数据
//--------------------前端
<button id="btn">发送ajax的请求</button>
<script type="text/javascript" src="./js/jquery.min.js"></script>
    <script>
        //页面加载,绑定点击事件
       $(function () {
           $("#btn").click(function () {
               //alert("hello btn");
               $.ajax({
                   //编写json格式,设置属性和值
                   url:"user/testAjax",
                   contentType:"application/json;charset=UTF-8",
                   data:'{"username":"joyTop","password":"123.com","age":"2"}',
                   type:"post",
                   success:function (data) {
                       //data服务器端响应的json数据
                       alert(data);
                       alert(data.username);
                   }
               });
           });
       });
    </script>
   //---------------------后端
    @RequestMapping("/testAjax")
    @ResponseBody
    public  User testAjax(@RequestBody User user) {
        System.out.println(user+"testAjax.......");
        //客户端发送ajax请求,传的是json字符串,后端把json字符串封装到user对象中
        //响应,
        user.setUsername("卢军");
        user.setAge(22);
        return user;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值