1、引言
今天写一点关于框架的东西,因为大多数企业现在都是用的SSH框架,所以我想把框架复习一下,我真的没有想到一个程序猿不经常敲代码会变成一个手残党,我真的很伤心,但是我觉得那些都不是事,只要努力,因为有底子,相信很快能找回感觉,同时还可以让基础更加扎实!
首先在了解SpringMvc前你要了解什么是MVC,我想只要能找到这篇博客的童鞋,多多少少会有所了解!
那么我们来说一下什么是SpringMVC:
SpringMVC是基于java实现了webMVC设计模式的请求驱动类型轻量级框架!前面的这一句话我们得到了很多信息1实现了MVC设计模式,2请求驱动类型的框架,3他是轻量级,那么往往伴随着这几个名词的,那么他出现的目的就是能简便开发,将一些功能进行了解耦,总之就是逼哥大大,功能强大!
优点:
进行更加简洁的web层开发
天生可以和spring集成
支持灵活的URL映射
可以很方便灵活的和其他视图技术集成(如FREEMARKER)
提供了方便的数据验证机制
提供了强大的jsp标签库
对静态资源支持
以上就是我所知道的优点,如果大家还有什么要补充的,就在评论里面猛戳!
2、SpringMVC请求处理流程!
其实,有时候理解一个技术的流程你可以把它想成记录公司的报销流程,这样你就可以更用心的记住,其实有时候面对那些生涩难懂的ABC我也有点无奈,谁让自己木有好好上学,英文那么差呢?不过没关系,只要理解他的思想就行下面就请欣赏我找的图片吧
上面就是就是他完整的一个流程!
好了上面是的我们很容易能理解的一个流程,下面我们看一下官方的一个架构和流程
两张图我们可以看出他的2个特点
1.所有的流程都要经过dispatcherServlet(前端控制器)
2.springMVC它是基于servlet完成的(所以这里面一定将我们的servlet进行了封装,里面一定和servlet有很多共同的地方,所以为了更好的理解我们有时间去扎实一下servlet的基础)
既然知道了它是基于dispatcherServlet完成的所有调度,那么我们来看一下他的源码,毕竟他是开源的不得不再一次感谢那些致力于OpenSource的大牛们,他们让我们的开发更加简便,门坎更低谢谢他们!
//前端控制器分派方法 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null; int interceptorIndex = -1; try { ModelAndView mv; boolean errorView = false; try { //检查是否是请求是否是multipart(如文件上传),如果是将通过MultipartResolver解析 processedRequest = checkMultipart(request); //步骤2、请求到处理器(页面控制器)的映射,通过HandlerMapping进行映射 mappedHandler = getHandler(processedRequest, false); if (mappedHandler == null || mappedHandler.getHandler() == null) { noHandlerFound(processedRequest, response); return; } //步骤3、处理器适配,即将我们的处理器包装成相应的适配器(从而支持多种类型的处理器) HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); // 304 Not Modi