由于公司的项目要使用spring的mvc,所以特意写了这个教程,与大家分享。在这里我只给出思路和源代码,不做过多的代码粘贴,请大家自行消化理解。
demo代码中,包含了exception,json,annotation,xml等诸多mvc的用法,为了更好的体验,请下载最高版本的demo代码。
一 环境
1)tomcat6.0.32
2)jdk1.6.0.24
3)eclipse3.6.2_javaee
二 包说明,共10个包
1)log4j
log4j-1.2.16.jar
2)spring的logging辅助
commons-logging-1.1.1.jar
3)jstl标签包
jstl-1.2.jar
4)spring核心包
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
5)spring mvc包
org.springframework.web.servlet-3.0.5.RELEASE.jar
三 配置步骤
1.配置log4j,将log4j.properties(必须)放到src下面;commons-logging.properties(选配,不是必须的)放到src下面
2.配置WEB-INF/web.xml
1)log4j配置,在最前(必须)
2)spring配置,此处指定的文件名,一定要和下面的spring mvc中的 servlet-name中一致,格式为"名字-servlet.xml",使用contextConfigLocation参数为上下文载入器指定一个或多个Spring配置文件
3)spring 上下文载入器
4)Spring MVC的核心Servlet配置
3.配置WEB-INF/spring-servlet.xml
1)地址映射(xml形式必须要在此文件中;annotation的不需要,但需要配置context:component-scan/>)
2)viewResolver的配置
四 开发
1)model,普通的POJO类
2)view,JSP页面,或者HTML,PHP等
3)controller,xml形式的继承 org.springframework.web.servlet.mvc.AbstractController;annotation的不用继承
五 流程
1)请求过来,DispatcherServlet(单例)根据URL查找HandlerMapping,找出对应的Controller;
2)Controller会返回ModelAndView(模型数据和视图)给DispatcherServlet;
3)DispatcherServlet将ModelAndView相关内容通过view展示出来.
六 总结
xml形式的用的比较少,现在大多数系统中一般都使用annotation形式的配置。他们的配置区别在于
1)RequestMapping的配置是在spring-servlet.xml中,还是在controller里面;
2)controller里面用ModelAndView,还是其他Model,或者url String
七 补充
2011-02-09
1)优化结构,使mvc的配置文件与bean的配置文件分开来(applicationContext.xml,spring-servlet.xml);
2)修改log的使用方式,通过commons-logging与log4j关联使用;
3)增加aonntation的使用方式;
4)上传最新修改过的源代码,包括annotation和xml形式;
2011-02-26
1)上传最新的DEMO,里面增加了动态地址引用及与json集成使用的方式;
2011-03-15
1)spring mvc的深入应用,包括excpetion,json,mvc映射的细分;
2)1.2版本的demo上传;
2011-03-17
1)1.3版本的demo上传;
2)更新exception的相关代码,进一步说明excpetion的处理机制;
2011-04-04
1)增加spring mvc中上传/下载的demo;
作者简介
昵称:澳洲鸟
姓名:朴海林
QQ:85977328
MSN:6301655@163.com
转载请注明出处
1 楼
caoyangx
2011-02-05
还继承org.springframework.web.servlet.mvc.AbstractController呢?
那你们公司用spring2就可以了。
那你们公司用spring2就可以了。
2 楼
85977328
2011-02-09
caoyangx 写道
还继承org.springframework.web.servlet.mvc.AbstractController呢?
那你们公司用spring2就可以了。
那你们公司用spring2就可以了。
公司用的是 annotation
我接下来就会把 annotation的方式 给完善
3 楼
tomliguocai
2011-02-10
annotation 好用是好用,个人感觉还是用XML配制灵活些,容易找相应关系
4 楼
liu2511981
2011-03-10
请问,楼主,试没试 PUT????!
我试PUT 有问题。。
我试PUT 有问题。。
5 楼
85977328
2011-03-12
liu2511981 写道
请问,楼主,试没试 PUT????!
我试PUT 有问题。。
我试PUT 有问题。。
我一般不用put,直接submit过来,然后用request来取得输入
不过我会尝试一下,等试验时候告诉你结果
6 楼
hongshenghome
2011-03-15
学习中,谢谢分享!!
7 楼
yuancheng320113
2011-03-16
学习中,谢谢分享!!
8 楼
ericslegend
2011-05-30
哥们儿,你百度的?
9 楼
suyulin6688
2011-05-30
85977328 写道
liu2511981 写道
请问,楼主,试没试 PUT????!
我试PUT 有问题。。
我试PUT 有问题。。
我一般不用put,直接submit过来,然后用request来取得输入
不过我会尝试一下,等试验时候告诉你结果
put和delete都没问题。
需要在 web.xml 里面配置一个 filter:
<!-- 支持put,delete等method --> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <servlet-name>springmvc</servlet-name> </filter-mapping>
jsp 页面里面,加一个 name="_method", value="put" 的 hidden 域:
<form:form commandName="customer" action="${ctx}/customer/${customer.id}"> <input type="hidden" name="_method" value="put"/> loginName: <form:input path="loginName" /><form:errors path="loginName" cssClass="errorBox"/> realName: <form:input path="realName" /><form:errors path="realName" cssClass="errorBox"/> </form:form>
10 楼
followwithme
2011-11-13
谢谢分享,正好用得上。。