springMVC中controller的幾種返回類型


==網文1,還不錯,感覺比較老舊
springMVC中controller的幾種返回類型 - CSDN博客
http://blog.csdn.net/qq_16071145/article/details/51222372

Controller方法的返回值可以有以下幾種: 1、返回ModelAndView 返回ModelAndView時最常見的一種返回結果。需要在方法結束的時候定義一個ModelAndView對象,並對Model和View分別進行設置。 2、返回String 1):字符串代表邏輯視圖名 真實的訪問路徑=“前綴”+邏輯視圖名+“后綴” 注意:如果返回的String代表邏輯視圖名的話,那么Model的返回方式如下: public String testController(Model model){ model.addAttribute(attrName,attrValue);//相當於ModelAndView的addObject方法 return "邏輯視圖名"; } 2):代表redirect重定向 redirect的特點和servlet一樣,使用redirect進行重定向那么地址欄中的URL會發生變化,同時不會攜帶上一次的request 案例: public String testController(Model model){ return "redirect:path";//path代表重定向的地址 } 3):代表forward轉發 通過forward進行轉發,地址欄中的URL不會發生改變,同時會將上一次的request攜帶到寫一次請求中去 案例: public String testController(Model model){ return "forward:path";//path代表轉發的地址 } 3、返回void 返回這種結果的時候可以在Controller方法的形參中定義HTTPServletRequest和HTTPServletResponse對象進行請求的接收和響應 1)使用request轉發頁面 request.getRequestDispatcher("轉發路徑").forward(request,response); 2)使用response進行頁面重定向 response.sendRedirect("重定向路徑"); 3)也可以使用response指定響應結果 response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter.write("json串"); 以上三種返回值沒有什么重要和不重要的分別,一般來說都會使用到, 只不過有的時候使用的方式會有一些細微的差別

==網文2 此文有代碼,對上方的拓展

SpringMVC學習(七)——Controller類的方法返回值 - CSDN博客
http://blog.csdn.net/yerenyuan_pku/article/details/72511844

== 很多返回類型很陌生

springMVC教程(八)controller中方法的返回值類型 - CSDN博客
http://blog.csdn.net/baidu_16702581/article/details/32695519

== 很不錯,但是里面多了很多<span> 多余的標簽了,應該是博主從其他地方拷貝過來的

SpringMVC的Controller層參數綁定以及返回值 - CSDN博客
http://blog.csdn.net/nuowei_senlin/article/details/53695956

當客戶端通過get或post請求發送來的參數通過Controller中方法的參數接受,叫做參數綁定
Controller方法的返回值1:返回void類型

@RequestMapping("/test_void.action")  
public void controller01(HttpServletRequest request,HttpServletResponse response) throws Exception{  
request.setCharacterEncoding("utf-8");  
String username = request.getParameter("username");//通過HttpServletRequest獲得請求參數  
    System.out.println("用戶名:"+username);  
    request.setAttribute("username",username);  
    User u = new User();  
u.setUsername(username);  
userService.insertUser(u);//插入數據庫  
    request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);//轉發  
}  
Controller方法的返回值2:返回ModelAndView

@RequestMapping("/test_modelandview.action")  
public ModelAndView controller02(HttpServletRequest request) throws Exception{  
    request.setCharacterEncoding("utf-8");//轉碼,Tomcat默認是iso-8859-1  
    String username = request.getParameter("username");  
    System.out.println("用戶名:"+username);  
    ModelAndView modelAndView = new ModelAndView();//new一個ModelAndView  
    modelAndView.addObject("username",username);//相當於request.setAttribute(attrName,attrValue);  
    modelAndView.setViewName("WEB-INF/jsp/success.jsp");//視圖跳轉  
    return modelAndView;  
}  
Controller方法的返回值3:返回String類型(邏輯視圖)

@RequestMapping("/test_string.action")  
public String controller03(HttpServletRequest request) throws Exception{  
    request.setCharacterEncoding("utf-8");//轉碼  
    String username = request.getParameter("username");  
    request.setAttribute("username",username);//設置請求參數  
    System.out.println("用戶名:"+username);  
    return "/WEB-INF/jsp/success.jsp";//返回String類型,代表邏輯視圖  
}     
Controller方法的返回值4:方法的參數是Model,返回值是String類型(邏輯視圖)
[html] view plain copy
@RequestMapping("/test_model.action")  
public String controller04(HttpServletRequest request,Model model) throws Exception{  
request.setCharacterEncoding("utf-8");  
String username = request.getParameter("username");  
model.addAttribute("username", username);//等價於request.setAttribute(attrName,attrValue);  
System.out.println("用戶名:"+username);  
return "/WEB-INF/jsp/success.jsp";//返回String類型,跳轉到邏輯視圖  
}  
Controller方法的返回值5:返回重定向redirect后的邏輯視圖名

@RequestMapping("/test_redirect.action")  
public String controller05(HttpServletRequest request) throws Exception{  
    request.setCharacterEncoding("utf-8");  
    String username = request.getParameter("username");  
    User u = new User();  
    u.setUsername(username);  
    userService.insertUser(u);  
    request.setAttribute("username",username);//由於是redirect,所以請求參數失效  
    return "redirect:/controller/test_model.action";//redirect:重定向到一個Controller里  
}  
Controller方法的返回值6:返回farward轉發后的邏輯視圖名

@RequestMapping("/test_forword.action")  
    public String controller06(HttpServletRequest request) throws Exception{  
    request.setCharacterEncoding("utf-8");  
    String username = request.getParameter("username");  
    User u = new User();  
    u.setUsername(username);  
    userService.insertUser(u);  
    System.out.println("用戶名:"+username);  
    request.setAttribute("username",username);//由於是轉發,所以請求參數有效  
    return "forward:/controller/test_model.action";//轉發,跳轉到一個Controller里  
}  

參數綁定
參數綁定的第一種方法:綁定普通類型

//參數綁定的第一種方法:客戶端提交的請求的input的name屬性會和Controller方法的參數名字一致才會綁定  
@RequestMapping("/test_parambinding01.action")  
public void controller07(HttpServletRequest request,HttpServletResponse response,String username,String password) throws Exception{  
    //必須進行轉碼  
    username = new String(username.getBytes("iso8859-1"),"UTF-8");  
    request.setAttribute("username",username);  
    request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);      
}  

參數綁定的第二種方法:綁定pojo類

//參數綁定的第二種方法:客戶端的input標簽的那么屬性必須和User的屬性名對應才可以映射成功  
@RequestMapping("/test_parambinding02.action")  
public ModelAndView controller08(HttpServletRequest request,User user) throws Exception{  
    //必須進行轉碼  
    user.setUsername(new String(user.getUsername().getBytes("iso-8859-1"),"utf-8"));  
    userService.insertUser(user);  
    ModelAndView modelAndView = new ModelAndView();  
    request.setCharacterEncoding("utf-8");  
    modelAndView.addObject("username",user.getUsername());  
    modelAndView.addObject("password",user.getPassword());  
    modelAndView.setViewName("/WEB-INF/jsp/success.jsp");  
    return modelAndView;  
}  

參數綁定的第三種方法:當input的name與controller的參數名不一致時,可以采用@RequestParam注解

@RequestMapping("test_RequestParam.action")  
//將客戶端的請求參數"username"與"uname"綁定  
public ModelAndView controller09(@RequestParam(value="username") String uname,@RequestParam(value="password")String pwd) throws Exception{  
    uname = new String(uname.getBytes("iso-8859-1"),"utf-8");     
    ModelAndView modelAndView = new ModelAndView();  
    modelAndView.addObject("username",uname);  
    modelAndView.setViewName("/WEB-INF/jsp/success.jsp");  
    return modelAndView;  
}  
原文

 

===此文 里面的小結感覺很實用,但本人理解不完全

SpringMVC Controller 返回值的可選類型 - xiepeixing - 博客園
http://www.cnblogs.com/xiepeixing/p/4243801.html

小結:
1.使用 String 作為請求處理方法的返回值類型是比較通用的方法,這樣返回的邏輯視圖名不會和請求 URL 綁定,具有很大的靈活性,而模型數據又可以通過 ModelMap 控制。
2.使用void,map,Model 時,返回對應的邏輯視圖名稱真實url為:prefix前綴+視圖名稱 +suffix后綴組成。
3.使用String,ModelAndView返回視圖名稱可以不受請求的url綁定,ModelAndView可以設置返回的視圖名稱。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM