springMCV流程:
一、初始化
1.web.xml 配置一个DispatchServlet(启动的入口)
2.默认加载我们的IOC容器(ApplicationContext)
3.开始扫描springMVC的配置,一般来说(扫描注解)View的配置
插件(拦截器、转换器、视图解析器(jsp,fremak))
4.解析成一个HandlerMapping的list,主要是保存了url具体执行方法的对应关系
以上都是初始化
二、等待用户请求的过程
1、从浏览器中输入URL
2、统一拦截,如果是404/500
3、DispatcherServlet接收到请求,从上面初始化已经保存的数据组找到请求url对应的
方法,然后调用
4、把响应结果输出
JSP是如何做的?
M:Model
V:View
C:Controller
三层结构:Dao(数据访问层),service(业务处理层),Web层(J2EE的内容),request和response
servlet是从web.xml文件开始,在这个文件里配置了N个servlet,一般而言一个servlet对应一个url,以后增加功能,增加url,每次都要去修改配置文件,增加servlet配置,导致配置膨胀,代码膨胀,返回结果在servlet里面直接输出HTML
启发:ORM框架(自动化框架和半自动化框架)
servlet:可以写HTML
MVC:视图和java逻辑分离
JSP:归根结底还是一个servlet,只不过是自动生成了HTML代码而已
JSP可以写java代码<% %> 设置把SQL都写里面,非常非常不规范的代码
webWork:增加需求,增加URL,就不需要频繁修改web.xml,只需要增加class继续,支持模板化开发,就渐渐地把jsp退出舞台
freeMark(自己的语法,不能写java代码,支持标签)
Model进行了一次很好的封装
他能把这些参数自动转化成普通的java对象
form(提交过来的数据)action(管理url的)
一个action对应一个form(成对出现,无形中增加了代码量)
springMVC出现,URL映射:进行了改进(基于方法,一个方法对应一个URL,Model,不强制要求(写form类),可以作为一个方法的参数(自动转换))View的支持:能支持jsp,Freemark,velocity,支持任意扩展
spring的牛b支持:定制规范,只有你实现了spring规范
jsp基本上已经退出历史舞台
requestParam自动调用request的getParameter方法,而且能够自动转型,getParameter湖区的结果是字符串(long,int,model)
ApplicationContext继承了BeanFactory
只要IOC容器启动之后,就会调用onRefresh方法
HandlerMapping/handlerAapter都是通过扫描注解得到的结果
@responseBody:默认帮你自动转换类型
不做SEO的情况下,大部分是做动静分离开发,后台只返回json、前端HTML页面通过js调用ajax请求后台的数据,通过前端的js模板框架去渲染,减轻了服务器端负担,视图和后台业务逻辑完全解耦,只要制定好了数据接口规范,那么完全可以实现完全同步开发