SpringMVC中使用forward和redirect进行转发和重定向以及重定向时如何传参详解

  • 时间:
  • 浏览:0
  • 来源:彩神3D_神彩3D官方

    request.getSession().setAttribute("user", user);

就让 项目启动后,在浏览器中访问:http://localhost:9180/CookieDemo/testForward.html?username=forward

33

29

import org.springframework.web.bind.annotation.RequestMapping;

2

import org.springframework.stereotype.Controller;

}

19

2

import cn.zifangsky.model.User;

    mAndView.addObject("user", user);

7

5

37

        return mAndView;

10

    public ModelAndView testRedirect(@RequestParam("username") String username,RedirectAttributes redirectAttributes){

    mAndView.addObject("user", user);

39

        ModelAndView mAndView = new ModelAndView("forward:/user/index.html");

11

3

4

}

7

页面显示效果如下:

4

1

7

使用RedirectAttributes这个类来传递参数写法就很简单了,只时要在时要重定向的controller的辦法 参数中打上去RedirectAttributes类型的参数,就让 把时要重定向过后可是我能获取的参数装进 去即可

16

34

    mAndView.addObject("user", session.getAttribute("user"));

6

    @RequestMapping("/user/index.html")

    return mAndView;

15

本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1877188,如需转载请自行联系原作者

10

        redirectAttributes.addFlashAttribute("user", user);

5

    session.removeAttribute("user");

6

    HttpSession session = request.getSession();

10

4

}

7

17

3

3

    ModelAndView mAndView = new ModelAndView("user/index");

15

5

1

24

2

都不能看出,在使用redirect进行重定向时请求的URL链接位于了改变,就让 在controller上放置的参数并越来越传递进行。越来越,不可能 我想要在重定向时把参数也传递过去应该为什么会么会会么会做呢?

11

    return mAndView;

5

14

@RequestMapping("/user/index.html")

示例代码如下:

6

        ModelAndView mAndView = new ModelAndView("redirect:/user/index.html");

22

13

        return mAndView;

26

32

        User user = new User();

@RequestMapping("/user/index.html")

16

    }

        user.setName(username);    

3

1

    }

    public ModelAndView userIndex() {

public class TestController {

11

    }

4

    @RequestMapping("/user/index.html")

    return mAndView;

8

public ModelAndView userIndex(HttpServletRequest request) {

        user.setName(username);

        user.setName(username);

19

@RequestMapping("/user/index.html")

12

@Controller

        User user = new User();

13

20

18

    ModelAndView mAndView = new ModelAndView("user/index");

        return new ModelAndView("user/index");

    user.setName(username);

23

如题所示,在SpringMVC中都不能使用forward和redirect关键字在Controller中对原请求进行转发或重定向到或多或少的Controller。比如都不能另一个使用:

6

(1)使用@ModelAttribute注解获取参数:

21

    User user = new User();

当然,据说RedirectAttributes本质上也是通过Session来实现的(PS:相关源代码我没都看,不都不能据说了)。实际上上边的代码是省略的写法,不可能 重定向过后就直接返回页面视图了,不可能 经过十几个 重定向一段话估计上边那种写法就获取不都不能参数了,就让 关于获取参数一般还有以下本身生活辦法 :

public ModelAndView testRedirect(@RequestParam("username") String username,HttpServletRequest request){

1

2

        mAndView.addObject("user", user);

都不能看出,在使用forward进行转发时请求的URL链接是后会改变的

import org.springframework.web.bind.annotation.RequestParam;

4

7

示例代码如下:

import org.springframework.web.servlet.ModelAndView;

        ModelAndView mAndView = new ModelAndView("redirect:/user/index.html");

    ModelAndView mAndView = new ModelAndView("user/index");

12

9

10

35

12

    return mAndView;

13

25

38

6

14

    }

    @RequestMapping("/testRedirect.html")

    ModelAndView mAndView = new ModelAndView("redirect:/user/index.html");

8

(2)使用RequestContextUtils类来获取:

package cn.zifangsky.controller;

@RequestMapping("/testRedirect.html")

8

18

public ModelAndView userIndex(@ModelAttribute("user") User user) {

1

总结,这本身生活获取辦法 都都不能成功获取到参数。就让 还是略显麻烦,不可能 可是我一次重定向过后就返回页面视图一段话推荐使用最简单那种写法

    public ModelAndView userIndex() {

    @RequestMapping("/testRedirect.html")

14

80

接着,在浏览器中访问:http://localhost:9180/CookieDemo/testRedirect.html?username=redirect

21

        return mAndView;

页面显示效果如下:

}

        mAndView.addObject("user", user);

    }

15

3

    public ModelAndView testForward(@RequestParam("username") String username){

31

36

9

}

28

    @RequestMapping("/testForward.html")

20

8

        return new ModelAndView("user/index");

    User user = (User) map.get("user");

27

    public ModelAndView testRedirect(@RequestParam("username") String username){

17

16

9

2

public ModelAndView userIndex(HttpServletRequest request) {

9

5

    Map<String, Object> map = (Map<String, Object>) RequestContextUtils.getInputFlashMap(request);

        User user = new User();