SpringSite Spring MVC 文档

转载 2007年09月11日 18:45:00

1.总体设计

      MVC框架如Struts、Webwork,都在Servlet的基础上创建了一个自己的绝对空间,在自己的空间里定义MVC世界和规则。无论这个世界定义得是否漂亮,程序员都有一个学习世界的过程。

      而Spring MVC则完全保留着Servlet概念中的request,response和session,并没有强制建立一个自己的概念模型(当然,他也有很烂的SimpleFormController,但你完全可以把它踢在一旁不管),也不强制需要FormBean和一堆XML定义。

      同时,它透明完成了与Spring的集成,Multi-action的派发,提供了绑定request数据用的binder等基本API。

      所以,如果想简单,使用Spring MVC的原始形态是一个很好的,类似于RoR中ActionPack的方案。

      推荐使用一个Controller响应一组相关动作的MultiActionController。同时,虽然一点不喜欢FormController定 义的概念模型,但还是不影响发挥拿来主义,在共性比较明显后台管理模块,定义MultiActionFormController,自动完成某些共同的 Form流程。


2.写给在用其他MVC框架程序员的快速入门

      也许,所有程序员都先放下自己框架里的概念模型,还原回一个JSP/Servlet程序员的角度,思考一个JSP/Servlet框架需要的功能。

     0. 配置文件

         Spring的配置文件默认为WEB-INF/xxxx-servelet.xml。

         其中xxx为web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。

     1. 与Spring集成及IOC

          天然兮,由DispatcherServlet完成。

      2. Action及Multi-Action 分发
          Spring将按照配置文件定义的URL,Mapping到具体Controller类,再根据URL里的action= xxx或其他参数,利用反射调用Controller里对应的Action方法。

      3. 输入数据绑定 
          Spring提供Binder 通过名字的一一对应反射绑定Pojo,也可以直接从request.getParameter()取数据。
          如果没有另外加入框架封装,需要手工调用Binder.

      4. 输入数据验证 
          Sping 提供了Validator接口,而Spring Module还整合了Commons-Validaor 。

      5. 结果数据放回View 
          有个ModelAndView的概念,代表了返回的View名及数据(Model,一个Map)。可以用modelAndView.addObject()放入数据。当然,也可以直接request.setAttribute()。

      6. Interceptor 
          AOP概念,其实Servlet里面早有Filter概念,不过Inteceptor可以更灵活的Mapping,另提供postHandle的插入点
          preHandle() handler开工之前。
          postHandle() hander开工之后,但DispatchServlet还没有渲染页面。
          afterCompletion() 一切完工之后。
       

      7. Redirect,Forward页面及Token防止重复提交。

          Spring提供 "redirect:index.jsp", "forward:index.jsp"这样的简写。

          Spring Simple Form提供了防止重复提交的机制。

      8. 如果想直接编写Response返回字符串, 而不是返回一个View

          将函数的返回类型设为void,使用ss封装的 rendText(response,String text)函数。

3.Spring MVC Multi-action

3.1 基本配置

< bean id = " methodNameResolver "   class = " org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver " >         
    
< property name = " paramName " >             
        
< value > method </ value >         
    
</ property >      
  
    
< property name = " defaultMethodName " >             
        
< value > index </ value >       
    
</ property >  
</ bean >


以上配置将按xxx.do?method= list 将调用controller的list()方法

不过还要争取早日改为Web2.0式的写法./book/list.htm 要优于/book.do?action= list。

其余配置和其他Spring MVC配置差不多,请看bookstore-servlet.xml,留意下面几个关键节点

< bean id = " exceptionResolver " >
< bean id = " methodNameResolver " >
< bean id = " viewResolver " >
< bean id = " urlMapping " > (留意最新的urlMapping简写语法.) 

4.SpringSide BaseController
   继承于Spring的MultiActionController, 对其作了少量扩展--主要是对数据绑定的扩展,还加了一个SaveMessage函数。

   1.对数据绑定的扩展:

   a.InitBinder() 初始化Binder,注册日期类并允许数字类为空。

   b.对Bind and Validate函数的再包装
   本来Spring已有bind函数完成bind and validate, 但这个函数一来没有使用BindException作返回值而是抛出一个ServletException只好自己另外实现一个bindObject()函数。

   c.另外稍稍扩展了一些函数使其更好用。

2.SaveMessage():

如果是redirect的关系,message信息放在request.attribute()就会丢失,SaveMessage()将其放在session。
 配合messageFilter,在渲染页面前,把它从session又移回request。


5.后台管理通用的BaseManageController
  Spring MVC中的SimpleFormController中的交互机制有值得参考的部分,但其只有一个onSubmit函数不能很好的表达CRUD的语义,所 以将两者结合成Multi-ActionFormController是比较好的方法。通过约定命名,在基类实现list(),create()等函数和 默认流程,而在子类实现onList(),onCreate()函数。

   目前只是初步结合两者,还有很大的改进空间。

   参考了RoR中的命名。BaseManageController即按照此命名定义基类。

list 显示对象列表的页面 
create新增对象的输入界面
edit 修改对象的输入界面
show 只读显示对象detai的页面
save 新增对象的保存
update 修改对象的保存
remove 删除单个对象
removeAll 批量删除对象
query 查询
 

相关文章推荐

spring mvc文档

  • 2015年01月07日 15:13
  • 8.02MB
  • 下载

spring mvc学习文档

  • 2016年07月06日 10:11
  • 2.62MB
  • 下载

Spring MVC框架下调用POI库实现Excel文档导出

项目里涉及到spring框架下导出excel文档,在网上查了一下,相关资料还是挺多的,不过觉得很多资料比较陈旧,查了好几篇文章才搞定,所以还是决定将涉及到的相关技术整理并分享出来。另外,下面只是导出e...

spring mvc的相关配置文档

  • 2012年01月18日 11:03
  • 65KB
  • 下载

Spring MVC中文文档翻译

  • 2016年06月07日 19:23
  • 1.26MB
  • 下载

spring mvc 学习文档1

1.导入jar包2.配置web.xml文件

Spring MVC 英文ppt文档

  • 2008年12月07日 22:08
  • 1.45MB
  • 下载

ssh+spring mvc详细文档介绍

  • 2014年09月09日 16:32
  • 4.24MB
  • 下载

Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api

本文作者:小雷FansUnion-一个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主-排名第119   实际项目中非常需要写文档,提高Java服务端和Web前端以及移动端...

spring mvc学习文档

  • 2015年01月29日 21:53
  • 418KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SpringSite Spring MVC 文档
举报原因:
原因补充:

(最多只允许输入30个字)