概述
spring MVC框架controller間跳轉,需重定向,主要有如下三種:
- 不帶參數跳轉:形如:http://localhost:8080/SpringMVCTest/test/myRedirectWithArgs
- 帶參數拼接url形式跳轉:形如:http://localhost:8080/SpringMVCTest/test/myRedirectWithArgs?username="zhangsan"&..
- 帶參數不拼接參數跳轉:形如:http://localhost:8080/SpringMVCTest/test/myRedirectWithArgs,但是可以傳參;
前台index.jsp

不帶參數跳轉

/**
* 不帶參數的重定向
*
* @return
* @throws Exception
*/
@RequestMapping(value = "/myRedirectWithoutArgs")
public String myRedirectWithoutArgs(ModelMap mmMap) throws Exception {
System.out.println("在myRedirectWithoutArgs()方法內...");
mmMap.addAttribute("msg", "不帶參數的重定向");
return "index";
}


帶參數拼接url形式跳轉

/**
* 帶參數的重定向--拼接URL
*
* @return
* @throws Exception
*/
@RequestMapping(value = "/myRedirectWithArgsURL")
public String myRedirectWithArgsURL(ModelMap mmMap, Person p)
throws Exception {
System.out.println("在myRedirectWithArgsURL()方法內...");
System.out.println("參數為:" + p.getUsername() + p.getPasswd());
mmMap.addAttribute("msg",
"帶參數的重定向,參數為==>" + p.getUsername() + p.getPasswd());
return "index";
}


解決中文亂碼問題
在web.xml中加入如下配置

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置完成后,中文亂碼解決掉了:


帶參數不拼接參數跳轉

/**
* 帶參數的重定向--不拼接URL
*
* @return
* @throws Exception
*/
@RequestMapping(value = "/myRedirectWithArgs")
public String myRedirectWithArgs(ModelMap mmMap, HttpServletRequest request)
throws Exception {
System.out.println("在myRedirectWithArgs()方法內...");
Map<String, ?> map = RequestContextUtils.getInputFlashMap(request);
System.out.println((String)map.get("username")+map.get("passwd"));
mmMap.addAttribute("msg", "帶參數的重定向,不拼接URL");
return "index";
}



其他
參考文章:
附件列表