springmvc框架(五)——处理器返回值类型分类

首先,创建一个index.jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    
    <h3>返回值类型的分类</h3><br/>
    <a href="haha/hello">点击我!</a>

</body>
</html>

前端资源目录:

返回值类型分类:

1.返回类型为String

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

@RequestMapping("/haha")
public class HelloController {
    @RequestMapping(value="/hello")
    //返回字符串
    public String sayHello() throws Exception{
        System.out.println("返回类型为字符串");
        return "success";
    }
}

若想在返回值类型为String的前提下实现请求转发和重定向,可以使用springmvc框架提供的forward关键字和redirect关键字实现!!!

现在是不走视图解析器的,所以路径要写完整

    @RequestMapping("/hello")
    //使用forward关键字进行请求转发或redire关键字重定向
    //不走视图解析器,所以路径要写完整
    public String sayHello() throws Exception{
        
        /*System.out.println("使用forward关键字进行请求转发");
        return "forward:/WEB-INF/pages/success.jsp";*/
        
        System.out.println("使用redirect关键字进行重定向");
        return "redirect:/param.jsp";

    }

注意:重定向redirect不能访问WEB-INF目录下的资源!!!!!转发可以!

2. 返回值类型是void

1. 如果控制器的方法返回值编写成void,可以使用请求转发或者重定向跳转到指定的页面(不经过视图解析器),也可以使用response直接响应数据。

    @RequestMapping("/hello")
    //返回类型为void
    public void sayHello(HttpServletRequest request, HttpServletResponse response)throws Exception{
        System.out.println("请求转发或者重定向");
        //请求转发
        /*request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);*/
        //重定向
        /*response.sendRedirect("/param.jsp");*/
        
        //直接响应数据
        response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write("哈哈");
    }

使用response直接响应数据,由于默认查找jsp页面是查询不到的,所以会默认根据@RequestMapping("/hello")跳转到hello页面:

3. 返回值类型是ModelAndView

1. ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图

2. 具体的代码如下

success.jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    成功!!!<br/>
    ${user}
</body>
</html>

处理器:

    @RequestMapping("/hello")
    //返回类型为ModelAndView
    public ModelAndView sayHello() throws Exception{
        System.out.println("返回类型为ModelAndView");
        ModelAndView mv = new ModelAndView();
        User user = new User();
        user.setName("瓜瓜");
        user.setAge(10);
        user.setDate(new Date());
        mv.addObject("user",user);
        mv.setViewName("success");//路径借助视图解析器,与视图解析器里的配置有关
        return mv;
    }

结果展示:

原文地址:https://www.cnblogs.com/churujianghudezai/p/12367792.html