Spring MVC的初始化:

  WEB容器加载后,通过使用DispatcherServlet拦截器加载IOC容器到WEB容器中,并通过ContextLoderListener将其初始化,

因为Spring MVC是建立在IOC容器基础上,这样才能建立起MVC框架运行机制,从而响应从Web容器传递的HTTP请求;并且通过实

现ServletContextListener接口实现了与Servlet生命周期的结合,获取的实例WebApplicationContext被绑定到ServletContext

上,在IOC容器初始化后,DispatcherServlet开始初始化,建立自己的上下文来持有Bean

  Spring MVC的运作:

  是以DispatcherServlet为中心进行控制的,IOC容器初始化时,控制器Controller和HTTP请求之间的映射关系会被载入到HandlerMapping中,

当MVC框架接收到HTTP请求时,DispatcherServlet会根据URL请求信息在HandlerMapping中进行查询,从而得到对应的HandlerExecutionChain,

并获得了对应的Controller,该Controller会完成请求的响应动作,生成需要的ModelAndView对象,该对象包含Model模型数据和视图对象,

DispatcherServlet把获得的模型数据交给特定的视图对象,在视图对象的render方法中完成视图呈现; M对应ModelAndView的生成,C对应

DispatcherServlet和用户业务逻辑有关的handler实现

因为直接使用了SpringMVC,所以之前一直不明白xxx-servlet.xml和applicationContext.xml是如何区别的,其实如果直接使用SpringMVC是可以不添加applicationContext.xml文件的。
使用applicationContext.xml文件时是需要在web.xml中添加listener的:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
而这个一般是采用非spring mvc架构,如使用struts之类而又想引入spring才添加的,这个是用来加载Application Context。
如果直接采用SpringMVC,只需要把所有相关配置放到xxx-servlet.xml中就OK了。

pring MVC和Struts2的比较的优点
1 spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。
2 机制:spring mvc的入口是servlet,而struts2是filter
3 spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action
4 struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。
5 spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。
struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。
6 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。送上一段代码:

Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。
它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

多个匹配的Filter,是按照其在web.xml中配置的顺序来执行的。
所以这也就是,把自己的Filter或者其他的Filter(比如UrlRewrite的Filter)放在Struts的DispatcherFilter的前面的原因。因为,它们需要在请求被Struts2框架处理之前,做一些前置的工作。
当Filter被调用,并且进入了Struts2的DispatcherFilter中后,Struts2会按照在Action中配置的Interceptor Stack中的Interceptor的顺序,来调用Interceptor。

web.xml 的加载顺序是:context- param -> listener -> filter -> servlet
servlet、filter针对url,interceptor针对action

servlet2.4规范中提供了8个listener接口,可以将其分为三类,分别如下:
第一类:与servletContext有关的listner接口。包括:ServletContextListener、ServletContextAttributeListener
第二类:与HttpSession有关的Listner接口。包括:HttpSessionListner、HttpSessionAttributeListener、HttpSessionBindingListener、HttpSessionActivationListener;
第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListner、ServletRequestAttributeListener

Servlet

Servlet 是一个独立的 web 开发标准,是一些遵从Java Servlet API的Java类,这些Java类可以响应请求,Servlet对每个请求都是单独启动一个线程;

也可以从JSP角度去理解, JSP是Servlets技术的一个扩展。JSP可以做的任何事情,Servlet都可以完成。但是JSP允许你将Java代码轻松地和HTML语言混合

在一起使用,并完成强大的功能。当第一次访问一个JSP文件时,它会被转换为Java servlet源码,接着被编译成Java字节码,work 存放jsp编译后产生的

class文件;另外将 Servlet 包装成 Context 容器中的 StandardWrapper,这里 StandardWrapper 是 Web 容器中的一部分,所以说 Context 容器才

是真正运行 Servlet 的 Servlet 容器。Servlet 的确已经能够帮我们完成所有的工作了,但是现在的 web 应用很少有直接将交互全部页面都用 servlet

来实现,而是采用更加高效的 MVC 框架来实现。

  

Spring Web的更多相关文章

  1. 《SSM框架搭建》三.整合spring web

    感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...

  2. Spring Web应用的最大瑕疵

    众所周知, 现在的Spring框架已经成为构建企业级Java应用事实上的标准了,众多的企业项目都构建在Spring项目及其子项目之上,特别是Java Web项目,很多都使用了Spring并且遵循着We ...

  3. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

    spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...

  4. spring web.xml 难点配置总结

    web.xml web.xml是所有web项目的根源,没有它,任何web项目都启动不了,所以有必要了解相关的配置. ContextLoderListener,ContextLoaderServlet, ...

  5. Spring web应用最大的败笔

    第一篇 介绍下IOC DI Spring主要是业务层框架,现在已经发展成为一个完整JavaEE开发框架,它的主要特点是IoC DI和AOP等概念的融合,强项在面向切面AOP.推出之初因为Ioc/AOP ...

  6. 菜鸟学习Spring Web MVC之二

    有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...

  7. 4.Spring Web MVC处理请求的流程

  8. 1.Spring Web MVC有什么

    Spring Web MVC使用了MVC架构模式的思想,将web层进行职责解耦. 同样也是基于请求驱动的,也就是使用请求-响应模型.它主要包含如下组件: DispatcherServlet :前端控制 ...

  9. Spring Web Flow使用

    就当我写(嘘,抄)着玩的. 使用Spring框架的一个子项目--Spring Web Flow来建立和管理Web应用和UI流程. 第一节:使用Spring Web Flow在一个Spring MVC应 ...

  10. Spring Web Flow 简介

    Spring Web Flow 简介 博客分类: 转载 SSH 最近在TSS上看到了一片介绍Spring Web Flow的文章,顺便就翻译了下来,SWF的正式版估计要到6月份才能看到了,目前的例子都 ...

随机推荐

  1. db2 常用命令

    db2osconf 检查系统内核参数 db2pd 监控检查数据库工具,可以检查数据库的许多信息(锁.交易.表空间. SQL等) db2expln 查看程序包的执行计划 db2exfmt 格式化expl ...

  2. (转载)自动化基础普及之selenium是啥?

    转载:http://www.cnblogs.com/fnng/p/3980093.html Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻 ...

  3. 第三章 centos安装git

    yum install git 安装后的默认存放地点/usr/bin/git

  4. 第十周PSP

    第十周PSP   工作周期:11.17-11.24  本周PSP: C类型 C内容 S开始时间 ST结束时间 I中断时间 T净时间(分) 文档 写随笔(PSP) 16:20min 16:50min 0 ...

  5. js替换选中的文字

    替换html中选中的文字 function replaceSelection() { if (window.getSelection) { var selecter = window.getSelec ...

  6. 统一资源定位符URL类

    package j2se.core.net.base; import java.io.BufferedReader;import java.io.IOException;import java.io. ...

  7. (转)selenuim-webdriver注解之@FindBy、@FindBys、@FindAll的区别

    selenium-webdriver中获取页面元素的方式有很多,使用注解获取页面元素是其中一种途径, 方式有3种:@FindBy.@FindBys.@FindAll.下文对3中类型的区别和使用场景进行 ...

  8. 为何jquery动态添加的input value无法提交到数据库?【坑】

    有两个输入框,我想让第一个输入框失去焦点以后,第二个输入框自动获取第一个输入框的value为默认值,jquery代码如下,可以正常显示,但是用PHP提交数据,并插入数据库的时候确实空值,尚未查找到原因 ...

  9. oracle 体系结构

    oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...

  10. javascript判断变量是不是空值

    JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等类型,类型不同,判断方法也不同.所以在文章中写了一个函数,用以判断J ...