SpringMVC架构主讲人——修哥联系方式:13280841927个人邮箱:ily339775795@163.com课程内容:•SpringMVC框架概述•SpringMVC框架优势•SpringMVC框架架构•SpringMVC框架热身•本章内容总结SpringMVC框架概述•模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式。它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。通常,模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来自用户的请求,并调用后台服务(manager或者dao)来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。控制器收集这些数据及准备模型在视图层展示。MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。SpringMVC框架优势•1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器(Validator)、命令对象(Command请求参数绑定到的对象就叫命令对象)、表单对象(FormObject提供给表单展示和提交到的对象就叫表单对象)。•2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;•3、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;•4、和Spring其他框架无缝集成,是其它Web框架所不具备的;SpringMVC框架优势•5、可适配,通过HandlerAdapter可以支持任意的类作为处理器;•6、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;•7、功能强大的数据验证、格式化、绑定机制;•8、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;•9、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。•10、强大的JSP标签库,使JSP编写更容易。•………………还有比如RESTful风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等等。SpringMVC框架淘宝登录分析具体执行步骤•具体执行步骤如下:•1、首先用户发送请求————前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的1、2步骤;•2、页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在SpringWebMVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图中的3、4、5步骤;•3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤6、7;•4、前端控制器再次收回控制权,将响应返回给用户,图中的步骤8;至此整个结束。SpringMVC组件总结1.DispatcherServlet前端控制器(不需要程序员写)负责框架调度,相当于中央处理器基本controller控制器功能:接收用户request请求和给用户response响应2.HandlerMapping(处理器映射器)(不需要程序员写)负责根据action的连接找到Handler处理器(理解成写的action)3.HandlerAdapter(处理器适配器)(不需要程序员写)负责去执行Handler4.**Handler处理器需要程序员写理解成struts里边的action,需要程序员写action类,这个action类符合适配器的执行规则。SpringMVC组件总结5.ViewResolver(视图解析器)(不需要程序员写)负责将模型数据填充到View6.**View视图需要程序员写jsp页面SpringMVC的HelloWorld软件参数Eclipse:Mars.1Release(4.5.1)Tomcat:8.0.36JDK:1.8.0_60Spring-framework:4.0.4.RELEASE新建项目File-New-Other,选择Dynamicwebproject项目建好之后,目录结构如下:导入jar包JAR包下载地址:我们基于Springmvc框架进行开发,需要依赖一下的springjar包:spring-aop-4.0.4.RELEASE.jarspring-beans-4.0.4.RELEASE.jarspring-context-4.0.4.RELEASE.jarspring-core-4.0.4.RELEASE.jarspring-expression-4.0.4.RELEASE.jarspring-web-4.0.4.RELEASE.jarspring-webmvc-4.0.4.RELEASE.jarcommons-logging-1.1.1.jar(用来打印log)配置文件及编写代码用于配置springmvc的配置文件的位置和名称,这里说明会新建一个springmvc.xml的配置文件Springmvc.xml(scr下)是一个视图解析器,用于把在控制器中handler的结构解析为实际的物理视图,这个要配合controller类来解析。HelloWorld.java(com.jackie.springmvc.handlers下)使用@RequestMapping映射请求•SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求在控制器的类定义及方法定义处都可标注@RequestMapping•类定义处:提供初步的请求映射信息。相对于WEB应用的根目录•方法处:提供进一步的细分映射信息。相对于类定义处的URL.若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录•DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。index.jsp(WebContent下)当访问index.jsp时,页面上会展示一个超链接,点击超链后,url中的地址就会发生跳转,由“”跳转到“”,而这个url请求就会进入HelloWorld中的hello方法,因为其与该方法上的“/helloworld”匹配。success.jsp(WEB-INF/views下)该页面是作为请求成功后的相应页面当springmvc.xml中声明了prefix和suffix,而夹在这两者之间的就是这里返回的字符串,所以执行完这个方法后,我们可以得到这样的请求资源路径“/WEB-INF/views/success.jsp”,这个success.jsp是需要我们新建的建立这个jsp有什么作用,什么时候调用呢?项目创建完毕•我们完成了基于Springmvc框架的HelloWorld程序的开发,包括要依赖的jar包,配置的文件,控制器代码的编写和展示页面的编写等tomcat服务器的添加•从前面的介绍可以看出,我们的程序是通过浏览器发请求来获取想要的页面,那么这里就免不了要有一个web服务器,这里就是tomcat。•首先你需要下载个tomcat,然后在eclipse-windows-preference-servers中绑定这个tomcat服务器;•其次你需要在你新建的springmvc项目中添加tomcat的支持,否则在新建的jsp文件中会提示报错“Thesuperclassjavax.servlet.http.HttpServletwasnotfoundontheJavaBuildPath”有了tomcat服务器,你就可以在index.jsp上右键runonserver,选择你的tomcat服务器,这样就可以启动tomcat服务,帮助你完成网页的请求和响应操作。前缀配置路径,推荐配置到WEB-INF文件夹下:value=“/WEB-INF/pages”右键项目-buildpath-configurebuildpath-addlibrary-serverruntime,选择你的tomcat即可tomcat服务器的添加springmvc如何访问静态资源•关于使用springmvc处理静态资源,比如html(发现之前的springmvc.xml中propertyname=suffixvalue=.jsp/property定义为jsp结尾就可以成功跳转,但是如果改为html并在web-inf下面新建了html文件后,并将suffix这里的.jsp改为.html,无法跳转到想要的html页面,并且给出404错误,同时console给出错误信息为:NomappingfoundforHTTPrequestwithURI[/springTest/WEB-INF/views/result.html]inDispatcherServ)•最后发现是需要让spring明确要处理静态资源,原来的web.xml中只有其匹配的都是controller中类似@RequestMapping(/springmvc/helloworld)这样的注解配置的请求,而对于类似html/css/jpg等资源的访问就会得不到,所以需要在web.xml中加入以下类型的支持这样就可以保证spring能够拦截并处理静态资源1、创建一个springmvcweb项目。功能要求:显示一个helloword文本,跳转显示后缀为*.jpg,*.png的图片。2、创建一个springmvcweb的maven项目,并且比较一下和普通的web相比,maven的优点有哪些。备注:可以查询资料。课后作业本节课件下载邮箱:ily339775795@163.com密码:qrsx2016谢谢观看