springmvc响应数据和结果视图

返回值分类
1、返回字符串
Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。

@RequestMapping(value="/hello")
public String sayHello() {
    System.out.println("Hello SpringMVC!!");
    // 跳转到XX页面
    return "success";
}

2、返回值是void
默认会跳转到@RequestMapping(value="/initUpdate") initUpdate的页面

@RequestMapping(value="/initAdd")
public void initAdd(HttpServletRequest request,HttpServletResponse response) throws Exception {
    System.out.println("请求转发或者重定向");
    // 请求转发
    // request.getRequestDispatcher("/WEB-INF/pages/add.jsp").forward(request, response);
    // 重定向
    // response.sendRedirect(request.getContextPath()+"/add2.jsp");
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    // 直接响应数据
    response.getWriter().print("你好");
    return;
}

3、返回值为ModelAndView

/**
* 返回ModelAndView对象
* 可以传入视图的名称(即跳转的页面),还可以传入对象。
* @return
* @throws Exception
*/
@RequestMapping(value="/findAll")
public ModelAndView findAll() throws Exception {
    ModelAndView mv = new ModelAndView();
    // 跳转到list.jsp的页面
    mv.setViewName("list");
    // 模拟从数据库中查询所有的用户信息
    List<User> users = new ArrayList<>();
    User user1 = new User();
    user1.setUsername("张三");
    user1.setPassword("123");
    users.add(user1);
    // 添加对象
    mv.addObject("users", users);
    return mv;
}

SpringMVC框架提供的转发和重定向
forward请求转发

/**
* 使用forward关键字进行请求转发
* "forward:转发的JSP路径",不走视图解析器了,所以需要编写完整的路径
* @return
* @throws Exception
*/
@RequestMapping("/delete")
public String delete() throws Exception {
    System.out.println("delete方法执行了...");
    // return "forward:/WEB-INF/pages/success.jsp";
    return "forward:/user/findAll";
}

redirect重定向

/**
* 重定向
* @return
* @throws Exception
*/
@RequestMapping("/count")
public String count() throws Exception {
    System.out.println("count方法执行了...");
    return "redirect:/add.jsp";
    // return "redirect:/user/findAll";
}

ResponseBody响应json数据
使用@RequestBody获取请求体数据

// 页面加载
// 页面加载
$(function(){
// 绑定点击事件
$("#btn").click(function(){
    $.ajax({
            url:"user/testJson",
            contentType:"application/json;charset=UTF-8",
            data:'{"addressName":"aa","addressNum":100}',
            dataType:"json",
            type:"post",
            success:function(data){
                alert(data);
                alert(data.addressName);
            }
        });
    });
});
/**
* 获取请求体的数据
* @param body
*/
@RequestMapping("/testJson")
    public void testJson(@RequestBody String body) {
    System.out.println(body);
}

使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应

// 页面加载
$(function(){
    // 绑定点击事件
    $("#btn").click(function(){
        $.ajax({
            url:"user/testJson",
            contentType:"application/json;charset=UTF-8",
            data:'{"addressName":"哈哈","addressNum":100}',
            dataType:"json",
            type:"post",
            success:function(data){
                alert(data);
                alert(data.addressName);
            }
        });
    });
});

@RequestMapping("/testJson")
public @ResponseBody Address testJson(@RequestBody Address address) {
    System.out.println(address);
    address.setAddressName("上海");
    return address;
}

json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.0</version>
</dependency>
posted @   max_yan  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示