前言
spring一直以来提供了大量文档和例子,来让我们熟悉和了解spring. springMVC是一个比较成功的MVC模式,有人甚至认为这是java最好的web开发模式。 这个,我们不评价,不过这也能说明一些问题。
自spring3加入了大量注解之后,springMVC项目也有所更新,并且因为Git的强势来袭,已经把spring-mvc-showcase项目移到github上。
地址:https://github.com/SpringSource/spring-mvc-showcase
如果有对git陌生,可以参照书生之前的博文。
获得项目
从github上下载项目,还不习惯用github朋友可以直接下载zip包,如图:
获得SpringSource-spring-mvc-showcase-随机码.zip
解压到我们的workspace,然后导入
导入
注意两个个问题:
1. 导入时,解析pom.xml时候会有个错误,在导入时可以尝试解决(太长时间了,忘了啥错了。。。)
2. 导入的是maven项目,注意图
加载jar包,并启动
运行maven install,尝试让下载所有jar包(如果你跟着做的,先把后面看完),然后启动,你会看到一个
错误信息:
java.util.zip.ZipException: invalid LOC header (bad signature)
提示问题可能有如下关键字: WEB-INF/spring/appServlet/root-context.xml 缺少META-INF/spring.schemas |
这个错,解决方式:
1. 我尝试跟着源码了一下,没解决
2. 也尝试加入了spring.schemas,无法解决。(就算取消加载部分xml,也会报错)
3. 谷哥度娘:后来在论坛里看到有说这个这个pom.xml下载得到3.0核心jar包有问题,(也可能我下载不完整,但我尝试重新下过两次)
4. 没办法,换版本吧,这时候maven管理项目的优势体现的淋漓尽致。
- <properties>
- <java-version>1.6</java-version>
- <!--原来这里为3.1.0 -->
- <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
- <org.aspectj-version>1.6.10</org.aspectj-version>
- <org.slf4j-version>1.6.1</org.slf4j-version>
- </properties>
OK,再次启动没有任何问题
查看效果
启动tomcat,输入http://localhost:8080/${项目名}/
第一个例子
既然项目都提供给大家了,那似乎我再多说也什么用。不过还是写点,或许有些能帮助到大家。
spring-mvc-showcase项目,通过他的包名,我们也看到了spring在这里想提供struts做过的很多事情,比如:上传,异常处理,数据,表单,消息转换,校验等许多功能。
SimpleController与SimpleControllerRevisited
我用的第一个例子是org.springframework.samples.mvc.simple这个包下面的两个控制器,用到了两个最简单的例子
- @Controller
- public class SimpleController {
-
- @RequestMapping("/simple")
- public @ResponseBody String simple() {
- return "Hello world!";
- }
-
- }
- @Controller
- public class SimpleControllerRevisited {
-
- @RequestMapping(value="/simple/revisited", method=RequestMethod.GET, headers="Accept=text/plain")
- public @ResponseBody String simple() {
- return "Hello world revisited!";
- }
-
- }
这两个类的区别的@RequestMapping后面的参数,这个大家应该比较熟悉了,我简单过一下他的几个参数:
String[] value() default {} RequestMethod[] method() default {}; String[] params() default {}; String[] headers() default {}; String[] consumes() default {}; String[] produces() default {}; |
着重说一下@ResponseBody
如果标注了@RespsonseBody,则该返回值被写入HTTP response body里,如效果图里的内容:Hello world!等绿色字体。
收尾
后面再跟大家一起过一下其他的例子吧。这篇文章更多的是说一下,spring-mvc-showcase项目,以及pom.xml的问题。