码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC的基本使用2

时间:2021-06-08 22:43:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:http   方法   解析   dispatch   需要   mode   不能   基本使用   关键字   

1、请求转发和重定向

1.1、请求转发(forward)

请求转发是一种在服务器内部的资源跳转方式。请求转发的特点是可以转发到本服务器内的所有路径的资源,浏览器地址栏路径不会发生变化,前端只发起一次请求,但后端转发后的资源可以返回给前端访问到。

在 servlet 中使用 getRequestDispatcher(xxx).forward(req, resp); 来进行请求转发,在 springmvc 中,返回 ModelAndView 类型或者直接返回 String 实际上就是请求转发。

示例:

@Controller
public class ControllerTest01 {
    @RequestMapping(value = "/test.do")
    public ModelAndView doTest() {
        ModelAndView modelView = new ModelAndView();
        modelView.addObject("name","张三");
        modelView.addObject("age","22");

        modelView.setViewName("/show.jsp");  //将转发至show.jsp
        //或者可以使用 forward 关键字:
        //modelView.setViewName("forward:/WEB-INF/view/show.jsp");  //使用 forward 关键字时,视图解析器将不起作用,需要写上完整的路径

        return modelView;
    }
}

直接返回 String 也可以做请求转发:

@Controller
public class ControllerTest02 {
    @RequestMapping(value = "/returnStringTest.do")
    public String doTest() {
        //框架实际上是对视图执行forward操作
        return "show1";
    }
}

 

1.2、重定向(redirect)

重定向是发一个302的状态码给浏览器,浏览器会自动去请求跳转的网页,url 会发生改变。重定向时可以参数,但是参数不像请求转发一样,而是会拼接到转发后的 url 上,下一个请求并不能直接获取到上一个请求的参数,但可以通过 url 的参数获取到。

在 servlet 中使用 sendRedirect(url) 来进行重定向,在 springmvc 中,可以使用 redirect 关键字来进行重定向。

@Controller
public class ControllerTest01 {
    @RequestMapping(value = "/test.do")
    public ModelAndView doTest() {
        ModelAndView modelView = new ModelAndView();
        modelView.addObject("name","zhangsan");
        modelView.addObject("age","22");

        modelView.setViewName("redirect:/view/show.jsp"); //使用 forward 关键字时,视图解析器将不起作用,需要写上完整的路径
        return modelView; 
    } 
}

上面在浏览器重定向后请求的 url 将类似于:http://xxx/view/show.jsp?name=zhangsan&age=22。

重定向不能转发至 WEB-INF 下的资源,因为 WEB-INF 下的资源通过浏览器无法直接访问。

 

Spring MVC的基本使用2

标签:http   方法   解析   dispatch   需要   mode   不能   基本使用   关键字   

原文地址:https://www.cnblogs.com/wenxuehai/p/14861078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!