spring web mvc(翻译自官网文档)

手册文档的这部分讲解spring framework对表示层的支持。(重点讲解基于web的表示层)

Spring framework自己的框架spring web mvc讲解占了两章,第三章主要是spring framework对其他web框架的整合,比如struts和JSF。最后将会讨论spring mvc portlet框架.

第一章, web mvc框架
第二章, 视图技术
第三章, 集成其他web框架
第四章, Portlet mvc框架

1.1 [b]介绍下spring web framework[/b]
Spring web mvc 框架是围绕DispatcherServlet通过配置映射来分发请求到处理器。视图解析,本地化和主题解析,当然对上传文件也有很好的支持。默认的处理器是基于@Controller和@RequestMapping注解,提供一个高度灵活的处理器方法集,在spring3.0中,@Controller也可以通过@PathVariable注解和其他一些特性创建基于RESTful的站点和应用.
[quote]
开放扩展。。。
在spring web MVC中一个关键的设计原则,同时也是spring框架的基本原则,即:对扩展开放,对修改关闭 的原则
在spring web MVC中有一些核心类标注了final。作为一个开发人员,你不能添加自己的动作到这些类中。这些是是特殊的设计原则,而不是故意给人制造独断专横的印象

同时 你也不能添加切面到这些spring mvc类中。例如,你不能给AbstractController.setSynchronizeOnSession()方法添加切面,你可以阅读”理解AOP代理”一章获取更多关于“final方法不能添加切面”的更多内容。

[/quote]


1.3 [b]实现控制器(Implementing Controllers)[/b]

控制器功能是提供一个访问你自己写的各种业务接口程序,它还可以把用户通过显示层输入的数据放入model层中,并把处理结果返回给显示层。Spring使用抽象类实现了一个基本的控制器,你可以通过它来创建自己的控制器。
Spring2.5的文档介绍了基于像 @RequestMapping, @RequestParam, @ModelAttribute等等基于注解的方式来编写MVC控制器,spring MVC和Portlet MVC都支持这些注解。通过注解的方式,控制器不需要扩展其他类或者实现其他接口。此外,你能够通过简单的配置来得到Servlet或者Portlet的基本功能而不依赖它们所提供的类库 。

[quote="提示"]
Spring提供了一个用本节讲述的基于注解的web程序例子:PetClinic,这个例子在org.springframework.samples.petclinic模块中
最近在官网发现一个很不错的blog,提供了一个showcase例子,很不错噢
附上地址[url=http://blog.springsource.com/2010/07/22/spring-mvc-3-showcase/]showcase链接[/url]
[/quote]

@Controller
public class HelloWorldController {
@RequestMapping("/helloWorld")
public ModelAndView helloWorld() {
ModelAndView mav = new ModelAndView();
mav.setViewName("helloWorld");
mav.addObject("message", "Hello World!");
return mav;
}
}


呵呵 看到了吧,@Controller和@RequestMapping注解可以很灵活的命名和标记。在上面的例子中,这个方法没有提供参数,返回了ModelAndView类型,当然还有很多其他的表示方法存在,提供了比这个更多的功能,后面的章节将会介绍。ModelAndView, @Controller, @RequestMapping都是spring mvc提供的很基础的实现。接下来我们会讲到这些东西是如何的广泛融入servlet编程环境中的。

1.3.1 [b]使用@Controller定义一个控制器[/b]
@Controller注解扮演了控制器类里很有分量的一个角色,通过它,你不需要继承任何其他的控制器基类或者引用任何的servlet的api,当然如果认为确实需要,你也可以使用servlet提供的功能.

给一个类加上了@Controller注解,分发器就可以通过这个注解来获取这个类中带有@RequestMapping注解的方法。
不过你定义了@Controller类之后,spring并不知道去哪里找这个类,你需要借助spring-context组件来把装有@Controller的包添加到spring的环境里去,像下面这样

<context:component-scan base-package="org.springframework.samples.petclinic.web"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值