控制器提供的应用程序行为通常通过服务接口定义.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 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!