17.<mvc:view-controller />标签的作用

作用:如果发送的请求不想通过controller,只想直接地跳转到目标页面,这时候就可以使用mvc:view-controller标签

1.springmvc配置文件

<!--
path="/hello" 就是你访问的路径(相当于RequestMapping(“/hello”)
view-name="hello"是你所要的视图名(如hello.jsp,相当于return “hello”) 
配置了这个后对于/hello请求,就会直接交给dispatcherServlet,然后使用ViewResolver进行解析。
-->
<mvc:view-controller path="/hello" view-name="hello"></mvc:view-controller>

以上配置相当于以下代码

@RequestMapping(value="/hello")
public String hello(){
    return "hello";
}

也可以配置成重定向或者转发:

<mvc:view-controller path="/index" view-name="redirect:hello"></mvc:view-controller>

相当于

@RequestMapping("/index")
public String index(){
    return "redirect:hello";
}

注意:
使用了这个标签后必须配置 <mvc:annotation-driven /> 否则会造成所有的@Controller注解无法解析,导致404错误。如果请求存在处理器,则这个标签对应的请求处理将不起作用。因为请求是先去找处理器处理,如果找不到才会去找这个标签配置。

@Controller
public class UserController {
    @Autowired
    UserService userService;

    /*
    在使用@ResponseBody此注解之后不会再走试图处理器,而是直接将数据写入到输入流中
    不使用@ResponseBody注解返回类型是String,返回的是视图名称,
    根据返回的视图名称去视图处理器找具体的视图
    */
    @ResponseBody
    @RequestMapping("/hello")
    public String helloController(){
        System.out.println("进来了");
        return "Test Success";
    }
}