springmvc跳转的几种方式

1 请求转发

      a String形式的转发 

//String形式的转发
	@RequestMapping(value="/toViewByString.do")
    public String toViewByString(HttpServletRequest request){
		request.setAttribute("name", "toString");
    	return "success";
    }

b  ModelAndView形式的转发

//ModelAndView形式的转发
	@RequestMapping(value="/toViewByModelAndView.do")
    public ModelAndView toViewByModelAndView(){
		ModelAndView mav=new ModelAndView();
		mav.setViewName("success");
		return mav;
    }


c 通过forward请求转发

//通过forward请求转发
	@RequestMapping(value="/redirectByRuqest.do")
	public void redirectByRuqest(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{		
		request.getRequestDispatcher("toRedirect.do").forward(request, response);
	}


2 重定向

a 路径前加redirect

 

/**
	  * 重定向
	  * RedirectAttributes 是一个容器,用来储存参数
	  * addFlashAttribute()方法设置的参数是不出现在请求的路径中的
	  * 可以通过RequestContextUtils.getInputFlashMap(request)获取Map集合
	  * 再通过集合的key值获取adFlashAttribute()方法设置的值
	  * addAttribute()方法设置的参数会出现在路径的,
	  * 可以通过request.getParameter()方法去获取addAttribute()方法设置的参数
	  * @param request
	  * @return
	  */
	@RequestMapping(value="/redirectByString.do")
    public String redirectByString(RedirectAttributes redirectAttributes){
		redirectAttributes.addFlashAttribute("userName", "123");
		redirectAttributes.addAttribute("password", "123");
    	return "redirect:toRedirect.do";
    }
	 
	
	@RequestMapping(value="/toRedirect.do")
    public String toRedirect(HttpServletRequest request){
		String userName=request.getParameter("userName");
		String password=request.getParameter("password");
		Map<String,?>params=RequestContextUtils.getInputFlashMap(request);
		if(params!=null){
			String pass=(String)params.get("userName");
			System.out.println(pass);
		}
		
    	return "success";
    }


b 通过modelAndView进行重定向,在路径前必须添加redirect

/**
	 * 重定向
	 * 通过modelAndView进行重定向,在路径前必须添加redirect,如果要传入参数,要么放在路径的后面
	 * 要么把参数添加到modelAndView对象中。
	 * 如果在Java的方法里,想获取传过来的参数,用request.getParameter()方法获取即可
	 * @return
	 */
	@RequestMapping(value="/redirectViewByModelAndView.do")
    public ModelAndView redirectViewByModelAndView(){
		ModelAndView mav=new ModelAndView();
		mav.setViewName("redirect:toRedirect.do?userName=admin");
		mav.addObject("password", "1234");
		//获取mav通过addObject设置的值
		System.out.println(mav.getModel().get("password"));
		return mav;
    }


c 通过sendRedirect重定向

//通过sendRedirect重定向
	@RequestMapping(value="/redirectByResponse.do")
	public void redirectByResponse(HttpServletRequest request,HttpServletResponse response) throws IOException{
		response.sendRedirect("toRedirect.do?userName=test");
	}


原文地址:https://www.cnblogs.com/t0404/p/10290982.html