在SPRingMVC中,控制器只是方法上添加了@RequestMapping注解的類,這個注解聲明了他們所要處理的請求。下面是一個簡單的小例子
HomeController:package spittr.web;@Controller //聲明這是一個控制器public class HomeController{ @RequestMapping(value="/",method=GET) //處理對“/”的GET請求 public String home(){ return "home"; //視圖名為 }}這個控制器要處理對“/”的請求,并渲染應用的首頁,這可能是最簡單的控制器了。
@Controller是一個構造型的注解,它基于@Component注解,在這里,它的目的就是輔助實現組件掃描。因為HomeController帶有@Controller注解,因此組件掃描器會自動找到HomeController,并將其聲明為Spring應用上下文中的一個bean。 @Controller注解在功能上和@Component一致,實際上我們可以將@Controller替換為@Component,這樣的效果是一樣的,但是在表意性上會差一些,無法確定HomeController是什么組件類型。
@RequestMapping注解的value屬性制定了這個方法所要處理的請求路徑,method屬性細化了它所處理的HTTP方法。這個方法直接返回了String類型的”home”,DispatcherServlet會要求視圖解析器把這個視圖名解析為視圖。根據我們配置InternalResourceViewResolver的方式,視圖名“home”將會解析為“/WEB-INF/views/home.jsp”路徑的JSP。
當控制器在類級別上添加@RequestMapping注解時,這個注解會應用到控制器的所有處理器方法上。@RequestMapping的value屬性能夠接受一個String類型的數組,我們可以給它添加多個映射,如:
package spittr.web;@Controller@RequestMapping({"/","/homepage"}) //定義在類上的請求路徑public class HomeController{ @RequestMapping(method=GET) public String home(){ return "home"; }}Model是什么
Model實際上就是一個Map(也就是key-value對的集合),它會傳遞給視圖,這樣數據就能渲染到客戶端了。在控制器中,需要返回的數據被裝填到了Model類型的屬性——model中,并且被帶給了相應的視圖。
JSP中獲取模型數據
數據已經放到了模型當中之后,在JSP中應該如何訪問它呢?實際上,當視圖是JSP的時候,模型數據會作為請求屬性放到請求(request)中。因此,在JSP文件中可以使用JSTL(javaServer Pages Standard Tag Library)的<c:foreach>標簽渲染列表輸出,如:
新聞熱點
疑難解答