Spring Web
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的更多相关文章
- 《SSM框架搭建》三.整合spring web
感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...
- Spring Web应用的最大瑕疵
众所周知, 现在的Spring框架已经成为构建企业级Java应用事实上的标准了,众多的企业项目都构建在Spring项目及其子项目之上,特别是Java Web项目,很多都使用了Spring并且遵循着We ...
- 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架构模式,可 ...
- spring web.xml 难点配置总结
web.xml web.xml是所有web项目的根源,没有它,任何web项目都启动不了,所以有必要了解相关的配置. ContextLoderListener,ContextLoaderServlet, ...
- Spring web应用最大的败笔
第一篇 介绍下IOC DI Spring主要是业务层框架,现在已经发展成为一个完整JavaEE开发框架,它的主要特点是IoC DI和AOP等概念的融合,强项在面向切面AOP.推出之初因为Ioc/AOP ...
- 菜鸟学习Spring Web MVC之二
有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...
- 4.Spring Web MVC处理请求的流程
- 1.Spring Web MVC有什么
Spring Web MVC使用了MVC架构模式的思想,将web层进行职责解耦. 同样也是基于请求驱动的,也就是使用请求-响应模型.它主要包含如下组件: DispatcherServlet :前端控制 ...
- Spring Web Flow使用
就当我写(嘘,抄)着玩的. 使用Spring框架的一个子项目--Spring Web Flow来建立和管理Web应用和UI流程. 第一节:使用Spring Web Flow在一个Spring MVC应 ...
- Spring Web Flow 简介
Spring Web Flow 简介 博客分类: 转载 SSH 最近在TSS上看到了一片介绍Spring Web Flow的文章,顺便就翻译了下来,SWF的正式版估计要到6月份才能看到了,目前的例子都 ...
随机推荐
- 401 Not Authorized For MSDEPLOY (msdeployAgentService)
When you get this error from msdeploy:“Error: The remote server returned an error: (401) Unauthorize ...
- Python——函数中的关键字参数
关键字参数 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict.请看 ...
- Shell 去掉文本中的空格
使用sed命令 将文件'aol1'中的空格去掉然后输出到'tmpFile'文件中 sed s/[[:space:]]//g aol1 > tmpFile
- Unity开发心路历程——制作画板
有人说 编程是份很无聊的工作 因为整个工作时间面对的都是电脑这种机器 因为眼睛盯着的内容都是索然无味的代码 因为总是会有意想不到的bug让你怀疑自己的智商 而我认为 编程是件及其有意思的事情 可观的收 ...
- CURL详解(转载)
curl_setop()函数中的参数中文说明 curl_setop()函数中的参数中文说明 curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,value是这个 ...
- Android SVN的配置
关于svn有不错的图文博文,先po一个个人认为很不错的博文:http://ask.android-studio.org/?/article/97 接下来呢呢就是以我个人的思维模式来讲解svn啦: 当然 ...
- 在Android开发中如何判读当前设备是否连接网络
1:前言: 我们在Android开发的过程中,很多实现是要向远程服务器拿数据的,但是未必当前设备一定连接了网络啊,那么此时我们就是要进行判断的了, 如果是有网络的话,那么此时就去向远程服务器去拿数据, ...
- [[UIScreen mainScreen] bounds] 返回的屏幕尺寸不对
在使用cocos2d-iphone 2.0生成项目的时候,用5s测试时全屏中上下一直有黑条,发现[[UIScreen mainScreen] bounds]返回的屏幕尺寸不是320*568的,而是32 ...
- hibernate基础
另存为查看吧
- myBatis总结,以及Spring
myBatis是持久层框架.相对于hibernate是半自动的——手写sql语句,较灵活. myBatis中个人觉得主要是对sql语句的练习,对要实现业务层的功能在mapper.java中写出相应或辅 ...