1. void: 並且沒有使用servletapi進行跳轉,那么默認會將請求名作為試圖名進行跳轉。
@RequestMapping("/login") public void login(User user){ }
結果:
void: 在參數中使用了servletapi,並且在方法中使用servletapi進行了跳轉。那么按照servletapi跳轉的位置進行跳轉。
@RequestMapping("/login") public void login(HttpServletRequest req,HttpServletResponse resp){ try { req.getRequestDispatcher("success.jsp").forward(req, resp); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
結果:
使用servletAPI跳轉頁面,那么通過servletAPI來攜帶數據可以的,但是通過mvc的模型數據不能攜帶數據。
2. ModelAndView 返回null 的時候,頁面不會跳轉。
@RequestMapping("/login") public ModelAndView login(){ System.out.println("login=========="); return null; }
當返回值沒有指定視圖名時,默認使用請求名作為視圖名進行跳轉。
@RequestMapping("/login") public ModelAndView login(){ return new ModelAndView(); }
當返回值指定了視圖名,那么按照指定的試圖名進行跳轉。
3. String: 如果返回值時null,那么以請求名作為視圖名跳轉。
如果指定返回值,那么按照指定返回值作為視圖名進行跳轉,可以通過model,modelmap等攜帶數據
如果返回值時帶有“forword” 或者 “redired” 前綴,那么將會進行相應的請求轉發和重定向,不能通過mvc的數據模型攜帶數據,可以通過servletApi來攜帶數據。
4. 其他類型:只能在異步時可以通過json返回。