黑马程序员技术交流社区

标题: 【广州校区】+springMVC常用返回方式及异常分析1 [打印本页]

作者: wujianhui    时间: 2019-6-6 15:04
标题: 【广州校区】+springMVC常用返回方式及异常分析1
在springMVC中支持六种类型的返回方式,接下来我们介绍常用的四种:
1.ModelAndView
[Java] 纯文本查看 复制代码
@RequestMapping("/say.do")
    public ModelAndView say()  {
        String msg="测试返回方式ModelAndView";
        /**
         * 参数一:视图名称,即要跳转的页面
         * 参数二:携带到视图上面的参数名
         * 参数三:携带到视图上参数对应的值
         */
        return new ModelAndView("success","msg",msg);
    }

注意:通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面
2.Map
[Java] 纯文本查看 复制代码
@RequestMapping("/show.do")
    public Map<String, String> getMap() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("keyOne", "hello");
        map.put("keyTwo", "nihao");
        return map;
    }

注意:在jsp页面中可直通过${keyOne}获得到值, map.put()相当于request.setAttribute方法。
3.String
[Java] 纯文本查看 复制代码
 @RequestMapping("/eat.do")
    public  String useString() {
        return "success";
    }

指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。

[Java] 纯文本查看 复制代码
    @RequestMapping(value="/print.do")
    @ResponseBody
    public String print(){
        String message = "Hello World, Spring MVC!";
        return message;
    }

4.void
Controller中定义void方法,这种场景一般是通过HttpServletResponse对象来输出页面内容。注意:Controller的void方法中一定要声明HttpServletResponse类型的方法入参!void方法不定义HttpServletResponse类型的入参,HttpServletResponse对象通过RequestContextHolder上下文获取  ,注意:这种方式是不可行的,void方法不定义HttpServletResponse类型的入参Spring MVC会认为@RequestMapping注解中指定的路径就是要返回的视图name。如下示例:
[Java] 纯文本查看 复制代码
 @RequestMapping("/hello.do")
    public void hello() throws IOException {
        System.out.println("处理请求的方法...");
    }


正确的方式应该是:
[Java] 纯文本查看 复制代码
  @RequestMapping("/hello.do")
    public void hello(HttpServletResponse response) throws IOException {
        System.out.println("处理请求的方法...");
    }








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2