网站制作哪家好又便宜,北京招聘网,包装设计模板,花坛设计平面图一、SpringMVC是什么 SpringMVC是Spring提供的一个强大而灵活的web框架#xff0c;借助于注解#xff0c;Spring MVC提供了几乎是POJO的开发模式【POJO是指简单Java对象#xff08;Plain Old Java Objects、pure old java object 或者 plain ordinary java object#xff0…一、SpringMVC是什么 SpringMVC是Spring提供的一个强大而灵活的web框架借助于注解Spring MVC提供了几乎是POJO的开发模式【POJO是指简单Java对象Plain Old Java Objects、pure old java object 或者 plain ordinary java object。POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口更没有被其它框架侵入的Java对象。POJO让开发者可专注于业务逻辑和脱离框架的单元测试。可以把POJO看作是一个普通的Java类它具有简单、灵活和可扩展的编程模型使开发人员可以专注于业务逻辑的实现而不需要过多考虑框架相关的规范和限制】使得控制器的开发和测试更加简单。它是一个基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架属于SpringFramework的后续产品已经融合在Spring Web Flow中 你可以把SpringMVC看作是一个控制器它负责处理用户请求并返回响应。在SpringMVC中控制器(Controller)、视图(View)和模型(Model)是分离的。控制器负责处理用户请求并返回响应视图负责显示数据模型负责存储数据 二、为什么要使用 SpringMVC 清晰的角色划分SpringMVC将控制器(controller)、验证器(validator)、命令对象(command object)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resolver)等等。每一个角色都可以由一个或多个组件来实现这样的设计使得开发人员可以更加专注于业务逻辑的实现 无需配置SpringMVC是一个典型的轻量级MVC框架相对于之前的struts2框架SpringMVC运行更快其注解式开发更高效灵活。可以和Spring框架无缝整合 代码可重用性高SpringMVC支持RESTful风格的URL设计和参数传递这使得代码具有很好的可读性和可维护性 易于测试SpringMVC支持JUnit和Mockito等测试框架这使得开发人员可以更加方便地进行单元测试 三、SpringMVC的工作流程【附有超详细流程图】 流程解释 用户发来一个请求首先进入的是前端控制器DispatcherServlet 前端控制器DispacherServlet将用户发来的请求发送给处理器映射器HandlerMapping 处理器映射器根据前端控制器发来的用户的请求找到对应符合的控制器Handler,并且将其封装成处理器执行链返回给前端控制器。 处理器适配器接收到来自前端控制器的执行链后找到对应执行此执行链的处理器适配器HandlerAdapter来调用的具体的控制器就是说其对应的方法或者逻辑 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller处理业务逻辑 控制器执行完成后会返回一个ModelAndView对象给处理器适配器 处理器适配器将返回来的ModelAndView对象返回给前端控制器(到这里所有的业务处理过程就要完了接下就是将结果以页面的的形式响应给用户) 前端控制器将返回回来的ModelAndView对象交给视图解析器ViewResolver视图解析器根据传过来的View对象解析成对应的页面对象 ViewResolver 将封装好的将页面对象和Model对象返回给 DIspatcherServlet 前端控制器再将返回回来的对象交给视图View 视图根据传过来的Model对象再一次的对页面进行渲染将模型数据填充至视图中然后在返回给前端控制器。 前端控制器将完成的结果响应给浏览器然后浏览器在展现给用户。
四、SpringMVC核心组件 DispatcherServlet DispatcherServlet是SpringMVC框架了里面的前端控制器 作用统一处理用户发来的请求并和响应相当于一个中间转换器减少了各个组件之间的调度减少的耦合性。 HandlerMapping HandlerMapping是SpringMVC框架里面的处理器映射器 作用根据请求发来的url 和method找到对应的Handler(就是说在一个用到SpringMVC框架的项目中会有好多方法和逻辑这个组件的作用就是找到对应的方法和组件返回给前端控制器) Handler Handler处理器注意这个需由工程师自己开发。 作用在 DispatcherServlet 的控制下Handler对具体的用户请求进行处理。 HandlerAdapter HandlerAdapter是SpringMVC框架提供的处理器适配器 作用根据映射器找到的处理器Handler信息按照特定的规则去执行相关的处理器 Handler。 ViewResolver ViewResolver是SpringMVC框架提供的视图解析器 作用就是字如其名就是用来将处理的结果解析成视图来展现给用户。视图解析器根据逻辑视图名解析成物理视图名生成View视图对象最后对视图进行渲染响应给用户。 View View是开发者自己提供的视图 作用根据model对象的要求来渲染页面然后前端控器在响应给用户。 五、 SpringMVC的入门小案例
pom.xml导入相关依赖
!-- jstl--
jstl.version1.2/jstl.version
!-- standard --
standard.version1.1.2/standard.version
!-- spring --
spring.version5.0.2.RELEASE/spring.version!-- spring mvc相关依赖 --
dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdjstl/groupIdartifactIdjstl/artifactIdversion${jstl.version}/version
/dependency
dependencygroupIdtaglibs/groupIdartifactIdstandard/artifactIdversion${standard.version}/version
/dependency
创建springmvc.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd!--1) 扫描com.zking.zf及子子孙孙包下的控制器(扫描范围过大耗时)--context:component-scan base-packagecom.liwen/!--2) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --mvc:annotation-driven /!--3) 创建ViewResolver视图解析器 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolver!-- viewClass需要在pom中引入两个包standard.jar and jstl.jar --property nameviewClassvalueorg.springframework.web.servlet.view.JstlView/propertyproperty nameprefix value/WEB-INF/jsp//property namesuffix value.jsp//bean!--4) 单独处理图片、样式、js等资源 --!-- mvc:resources location/css/ mapping/css/**/mvc:resources location/js/ mapping/js/**/mvc:resources locationWEB-INF/images/ mapping/images/**/--
/beans
配置web.xml
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1display-nameArchetype Created Web Application/display-name!-- Spring和web项目集成start --!-- spring上下文配置文件 --context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:Spring-context.xml/param-value/context-param!-- 读取Spring上下文的监听器 --listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener!-- Spring和web项目集成end --!-- 中文乱码处理 --filterfilter-nameencodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classasync-supportedtrue/async-supportedinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param/filterfilter-mappingfilter-nameencodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!-- Spring MVC servlet --servletservlet-nameSpringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!--此参数可以不配置默认值为/WEB-INF/springmvc-servlet.xml--init-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:Spring-mvc.xml/param-value/init-paramload-on-startup1/load-on-startup!--web.xml 3.0的新特性是否支持异步--async-supportedtrue/async-supported/servletservlet-mappingservlet-nameSpringMVC/servlet-nameurl-pattern//url-pattern/servlet-mapping
/web-app
5.1、运用SpringMVC注解配置Web层
package com.liwen.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;Controller
RequestMapping(/mvc)
public class Springmvc1 {RequestMapping(/print)public String test(){return hello;}
}
jsp页面 % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleSpringMVC测试/title
/head
body666/body
/html 六、 SpringMVC中的注解 1. Controller用于标记在一个类上使用它标记的类就是一个SpringMVC Controller对象。分发处理器将会扫描使用了该注解的类并将其注册为一个控制器 2. RequestMapping用于映射请求路径和处理请求的方法 3. RequestParam用于从请求参数中获取值可以指定参数的名称、是否必须、默认值等4. PathVariable用于获取URL中的参数值可以指定参数的名称5. ModelAttribute用于将请求参数绑定到模型对象上6. RequestBody用于将请求体中的数据绑定到方法参数上7. ResponseBody用于将方法返回值绑定到响应体上 七、SpringMVC处理静态资源 如果访问不了静态资源是因为DispatcherServlet拦截了所有的请求对静态资源的访问也进行了拦截,添加底下这行就行
mvc:resources location/static/ mapping/static/**/