控制器提供的應用程序行為通常通過服務接口定義.Controller翻譯用戶的輸入并將其轉換為一個模型,用于提供給用戶視圖。Spring用一種非常抽象的方式實現控制器,它使您能夠創建一個多樣化的控制器。
在Spring2.5中為MVC Controller引入一種基于annotaion的編程模型。你可以使用像@RequestMapping,@RequestParam, @ModelAttribute等等這些注解。這些注解支持即可以從Servlet MVC又可以從Portlet MVC獲取到。通過這種方式實現Controller你不需要繼承特殊的base class與不需要實現特殊的接口。而且,他們通常不是直接依賴于Servlet或者Portlet的API,但是你能夠很容易的通過Servlet或者Portlet工具來使用。
使用此類配置方式,需要在XML中做如下樣式配置:
<!-- 表示將請求的URL和Bean名字映射-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/test.do" class="test.TestController"></bean>
訪問/test.do就會尋找ID為/test.do的Bean,此類方式僅適用小型的應用系統
配置集合,對每個URL做對應的Controller的關系映射
1. <!-- 最常用的映射配置方式 -->
2. <!-- <prop key="/test*.do">testController</prop>-->
3. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
4. <property name="mappings">
5. <props>
6. <prop key="/test.do">testController</prop>
7. </props>
8. </property>
9. </bean>
10. <bean name="testController" class="test.TestController"></bean>
此類配置還可以使用通配符,訪問/test.do時,Spring會把請求分配給TestController進行處理
Java代碼
<!-- 將test*.do交給testController處理-->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
<bean name="testController" class="test.TestController"></bean>
1、需要在Spring的配置文件中開啟注解
<context:component-scan base-package="test" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> //加入這個包
2、在編寫類上使用注解標記@org.springframework.stereotype.Controller,這個是一個Controller對象。
使用@RequestMapping("/test.do")指定方法對應處理的路徑。
簡單的演示代碼類如下:
package test;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
// http://localhost:8080/spring/test.do?user=java
@org.springframework.stereotype.Controller
public class TestController{
@SuppressWarnings("deprecation")
@RequestMapping("/test.do")
public String test(HttpServletRequest request,HttpServletResponse response){
request.setAttribute("user", request.getParameter("user") + "-->" + new Date().toLocaleString()); //設置測試值
return "test";
}
}
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!