spring和struts2的区别:
1.springmvc是方法级别的拦截器,struts是类级别的拦截器,springmvc一个方法对应一个request上下文
而struts2一个对象对应一个request上下文。springmvc无限接近于0配置 ,而struts需要大量的配置
2.springmvc支持单例开发,二struts最好使用多例开发
3.struts2速度慢在于标签,尽量配合jstl标签库使用。
springmvc优点:
1.springmvc很容易就能写出优秀的程序,而struts2需要处处小心才能写出优秀的程序,并且springmvc的学习成本低,市场占有率高,新人容易掌握,上手项目。
dispatchServlet是前置控制器,会拦截web。xml中配置的请求,具体 springmvc。xml也是在web。xml中配置,在web-info中寻找(servlet-name)-servlet。xml的文件,servlet对应的servlet-mapping 会拦截url-pattern里面的请求
/ 会拦截所有请求包括静态资源 /*是错误的写法 建议使用*.do ,*.form类似的写法 则不会拦截静态资源,如果拦截了静态资源也室友解决的方法,第一在web。xml中使用 servlet-mapping name值为default,url-pattern 的值为.img......这种格式然这种格式交友servlet处理 不会让dispatchServlet来处理,也可以使用/one/two 这种rest风格来拦截 但是也会拦截掉静态资源。
查找springmvc文件 有两个方式 ,一种查找classpath路劲的 使用classpath*:/springmvc.xml来查找 ,另一种是使用 /web-info/springmvc.xml格式
springmvc 常用的标签 <context:component-scan base-package="">context:component-scan---扫描指定包上的注解
常用的注解有 @controller @service @repository @component @requestMapping @requestParam @autowired @resource @scope @responseBody
mvc:annotation-driven 会自动注入两个bean defaultannotationhandlerMapping 于 annotationmethodhandleradapter 他们是mvc为@controller分发请求所必须的,并且提供了数据绑定 @numberformatannotation ,@datatimeformat @valid 读写xml支持 ,读写json支持。
mvc:interceptors 会为每一个handlermapping,注入一个拦截器
Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default"
Google App Engine 自带的 默认Servlet的名字 -- "_ah_default"
Resin 自带的 默认Servlet的名字 -- "resin-file"
WebLogic 自带的 默认Servlet的名字 -- "FileServlet"
WebSphere 自带的 默认Servlet的名字 -- "SimpleFileServlet"
当静态资源被拦截时 我们可以使用 <mvc:resources mapping="" location=“”/>
mvc拦截器 可以实现 handlerIntecaptor 借口或者 继承handlerintecaptoradapter类
在类里面 写 prehandle afterhandler posthandler 可实现 预处理 后处理 和返回处理
再在 配置文件中 写入 mvc:intecaptors
mvc:intecaptor<mvc:mapping path="">.......... 这个定义局部的拦截器 指定拦截符合path的请求
执行顺序 请求现在转到handlermapping 让其找到对应的控住器处理器 ,但找到了 则会执行 拦截器
执行完后再执行 对应的处理器。
一般不建议使用 mvc:annotation-driven来注入 defaultannotationhandlermapping 和annotionmethodhandleradaper 建议使用 bean class来注入 这两个bean
可以使用 forward:/ 转发action redirect:/重定向action
使用springmvc内置的json 必须要有mvc:annotation-driven 他可以数据绑定 和支持 json 等
使用responsebody 回见return的数据转换成json格式
父上下文 无法访问子上下文 即 application 无法访问 springmvc.xml
springmvc 请求过程 请求交给dispatcherservlet控制 其实现类 defaultannotationhandlermapping会先判断 能否找到对应的控制器处理器,如没有找到 则会交友 simpleurlhandlermapping子类在查找能否找到对应的控制器处理器 ,如都没有跳转请求 报错 没有找到对应控制器,否则 则会运行对应的烂机器,在运行期对应的处理器
handlermapping接口实现类 defaultannotationhandlermapping 类和simpleurlhandlermapping
handleradapter接口实现类 annotationmethodhandleradater类
viewresolver urlbaseviewresolver类 和 internalresourceviewresolver将把一个视图名交友view视图处理
handlerexceptionresolver接口 实现类 simplemappingexceptionresolver
handler