SpringMvc请求转发和重定向的常用方法

使用重定向,我们需要使用redirect在return中,后面跟上想要重定向的界面,同样可以传递参数,但是需要注意传入中文会出现乱码问题

我们可以使用RedirectAttributes 来解决乱码问题

public String view04(RedirectAttributes attributes) { // 设置参数 attributes.addAttribute("uname", "薛"); attributes.addAttribute("upwd", "12345");

我们还可以使用ModelAndView设置参数,但是需要注意的是,ModelAndView默认是请求转发,我们需要在其参数内设置

modelAndView.setViewName("redirect:view.jsp"); return modelAndView;

我们还可以重定向到我们对象的test请求,我们会有个controller层的类去获取这个test请求,使用@RequestMapping注解

请求转发使用forward的方法,使用方法和重定向差不多

/**
 * 请求转发与重定向
 */
@Controller
public class ViewController {
    /**
     * 重定向到JSP页面
     * @return
     */
    @RequestMapping("/view01")
    public String view01(Model model) {
        // 设置请求域对象
        model.addAttribute("name", "admin");
        return "redirect:view.jsp";
    }

    /**
     * 重定向到JSP页面
     *      传递参数
     * @return
     */
    @RequestMapping("/view02")
    public String view02(){
        return "redirect:view.jsp?uname=xxy&upwd=123456";
    }
    /**
     * 重定向到JSP页面
     *      传递中文参数 (传递中文参数会出现乱码)
     * @return
     */
    @RequestMapping("/view03")
    public String view03(){
        return "redirect:view.jsp?uname=薛&upwd=123456";
    }
    /**
     * 重定向到JSP页面
     *      传递参数 (通过 RedirectAttributes 对象设置重定向的参数,避免中文乱码问题)
     * @param attributes
     * @return
     */
    @RequestMapping("/view04")
    public String view04(RedirectAttributes attributes) {
        // 设置参数
        attributes.addAttribute("uname", "薛");
        attributes.addAttribute("upwd", "12345");
        return "redirect:view.jsp";
    }

    /**
     * 重定向到JSP页面
     *      返回的是 ModelAndView 对象
     * @param modelAndView
     * @return
     */
    @RequestMapping("/view05")
    public ModelAndView view05(ModelAndView modelAndView){
        modelAndView.addObject("uname","薛");
        modelAndView.addObject("upwd","12345");
        modelAndView.setViewName("redirect:view.jsp");
        return modelAndView;
    }
    /**
     * 重定向到Controller
     *      返回 ModelAndView 对象
     * @param modelAndView
     * @return
     */
    @RequestMapping("/view06")
    public ModelAndView view06(ModelAndView modelAndView){
        modelAndView.addObject("uname","薛");
        modelAndView.addObject("upwd","13456");
        modelAndView.setViewName("redirect:test");
        return modelAndView;
    }
    /**
     * 请求转发到JSP页面
     * @return
     */
    @RequestMapping("/view07")
    public String view07(){
        return "forward:view.jsp";
    }

    /**
     * 请求转发到JSP页面
     *      传递参数 (中文不乱码)
     * @return
     */
    @RequestMapping("/view08")
    public String view08(){
        return "forward:view.jsp?uname=张三&upwd=123";
    }


    /**
     * 请求转发到JSP页面
     *      设置请求域
     * @param model
     * @return
     */
    @RequestMapping("/view09")
    public String view09(Model model){
        // 设置请求域
        model.addAttribute("name","管理员");
        return "forward:view.jsp?uname=张三&upwd=123";
    }

    /**
     * 请求转发到JSP页面(默认)
     *      默认会去指定的目录下查找JSP页面 (配置文件中设置的)
     * @param model
     * @return
     */
    @RequestMapping("/view10")
    public String view10(Model model){
        // 设置请求域
        model.addAttribute("name","管理员");
        return "/../../view";
    }


    /**
     * 请求转发到Controller
     * @param modelAndView
     * @return
     */
    @RequestMapping("/view11")
    public ModelAndView view11(ModelAndView modelAndView) {
        modelAndView.setViewName("forward:test");
        return modelAndView;
    }


    /**
     * 请求转发到Controller
     *      传递参数
     * @param modelAndView
     * @return
     */
    @RequestMapping("/view12")
    public ModelAndView view12(ModelAndView modelAndView) {
        modelAndView.setViewName("forward:test?uname=admin&upwd=123");
        return modelAndView;
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值