spring mvc详解

springmvc是在spring的基础上进行架构的。spring要做的事情从大的方面来说很简单,就是将xmlbean定义转化为容器中的BeanDefinition,然后进行实例化,提供给用户使用。


我们的web程序的Spring容器为:org.springframework.web.context.support.XmlWebApplicationContext,它配置在ContextLoader.properties中。创建的时机为程序启动初始化ContextLoaderListener时,并保存在servletContext中。容器加载的xml路径为web.xml中配置的contextConfigLocation字段。

 

第一个正题:SpringMVC的配置文件在哪,容器是怎样的呢?

SpringMVC会首先查看是否已经存在Spring的容器,如果存在,则将Spring的容器作为父容器,生成自己的XmlWebApplicationContext。如果没有,则直接创建。创建的时机为,DispatcherServlet初始化时,由init->initServletBean完成。那如果配置多个DispatcherServlet时,它们是相互隔离的。如图所示:


容器查找的xml文件路径为Servletservlet-name+“servlet”.xml.

 

第二个问题:SpringMVC是如何提供服务的。

大体代码放在doService中,流程代码非常清晰,可用下面的图来表示(使用拿来主义,别人画的是真好):


六个步骤:

1.根据配置拿到Handler(就是我们写的Controller)及其Interceptor.

2.执行InterceptorpreHandle

3.Handler进行适配,并执行

4.执行InterceptorpostHandle

5.查找拿到View

6.View进行填充模型数据,并展示

 

第三个问题,我们的开发者平台使用的是Velocity,怎么集成的?

从上面的服务流程可以看到,第五个步骤会去拿到View.

由配置我们知道,View的解析器是:org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver,那么对应的viewVelocityView,它会将velocity的模板地址放入VelocityView中。

然后第六步填充数据时,它会创建我们VelocityVelocityContext,然后根据模板地址创建Template,接下来就交给velocity吧。

当然,这一步有些坑我自己也还在摸索中。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值