SpringMVC Controllerから別のControllerへジャンプ


1、springmvcフレームワークでcontrollerが要求されると、ブラウザのアドレスバーにこのcontrollerの要求パスが表示され、ページはcontrollerが指定したjspビューにジャンプします.
2、バックグラウンドは1つのコントロールから別のコントロールにジャンプする(パラメータなしのリダイレクト):
方法1:ModelAndView return new ModelAndView(「redirect:/index」)を使用する.
	@RequestMapping(value = "/loginSubmit")
	public ModelAndView loginSubmit(String loginName,String passwd,HttpServletRequest request,Model model) {
		try {
			User user = loginService.loginSubmit(loginName,passwd);
			if (user == null) {
				return new ModelAndView("login");
			} else {
				request.getSession().setAttribute(Constants.SESSION_USER, user);
				//request.setAttribute("user", user);
				model.addAttribute("user", user);
				//response.sendRedirect(request.getContextPath()+"/login/login");
<span style="white-space:pre">				</span>//return new ModelAndView("index");
				return new ModelAndView("redirect:/index");
			}
		} catch (Exception e) {
			logger.error(e.getMessage());
			return  new ModelAndView("error/error");
		}
	}
	@RequestMapping(value = "/index")
	public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
		logger.info("      。。。");
		return new ModelAndView("index");
	}
はこのように2番目のコントローラを経て、ブラウザのアドレスバーがhttp://ip:8080/iis/indexああ、ページがindexにジャンプしました.jsp
方式2:String return「redirect:/toList」を返す.その他の方法:他にもたくさんありますが、ここではresponseなど、紹介しません.
3、パラメータ付きジャンプ:
方法1:url new ModelAndView(「redirect:/toList?param 1=」+value 1+「&m 2=」+value 2);このような弊害は、中国語を伝えると文字化けしてしまう可能性があるということです.
方法2:RedirectAttributesを使って、これは発見した比較的使いやすいクラスで、ここではそのaddAttribute方法を使って、これは実際にリダイレクトしてからurlを見て、それは自動的にあなたのurlをつづったのです.使用方法:attr.addAttribute("param", value);           return "redirect:/namespace/toController"; これにより、toControllerという方法では、パラメータを取得することでこのパラメータを取得し、ページに渡すことができます.過去のurlはやはり方式と同じです.
4、パラメータ付きurlページをつなぎ合わせなくても値がもらえる(ポイントはこれ)
 @RequestMapping("/save")
  public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)
           throws Exception {

    String code =  service.save(form);
    if(code.equals("000")){
      attr.addFlashAttribute("name", form.getName());  
      attr.addFlashAttribute("success", "    !");
      return "redirect:/index";
    }else{
      attr.addAttribute("projectName", form.getProjectName());  
      attr.addAttribute("enviroment", form.getEnviroment());  
      attr.addFlashAttribute("msg", "    !    :"+rsp.getCode().getCode()+",   :"+rsp.getCode().getName());
      return "redirect:/maintenance/toAddConfigCenter";
    }
  }

@RequestMapping("/index")
    
  public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)
           throws Exception {
      return "redirect:/main/list";
  }

ページの値は私が言うまでもなく、el式で直接得ることができます.