微信小网站怎么做,上海集团平台app,网站上的3d怎么做的,基于android的app开发步骤一. SpringMVC简介
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架#xff0c;通过把Model#xff0c;View#xff0c;Controller分离#xff0c;将web层进行职责解耦#xff0c;把复杂的web应用分成逻辑清晰的几部分#xff0c;简化开发通过把ModelViewController分离将web层进行职责解耦把复杂的web应用分成逻辑清晰的几部分简化开发减少出错方便组内开发人员之间的配合。
此外Spring MVC 的注解驱动和对 REST 风格的支持也是它最具特色的功能。无论是在框架设计还是扩展性、灵活性等方面都全面超越了 Struts2 等 MVC 框架。并且由于 Spring MVC 本身就是 Spring 框架的一部分所以可以说与 Spring 框架是无缝集成性能方面具有先天的优越性对于开发者来说开发效率也高于其它的 Web 框架在企业中的应用越来越广泛成为主流的 MVC 框架。
二. SpringMVC的工作流程 用户发来一个请求首先进入的是前端控制器DispatcherServlet 前端控制器DispatcherServlet将用户发来的请求发送给处理器映射器HandlerMapping 处理器映射器根据前端控制器发来的用户的请求找到对应符合的控制器Handler,并且将其封装成处理器执行链返回给前端控制器。 处理器适配器接收到来自前端控制器的执行链后找到对应执行此执行链的处理器适配器HandlerAdapter来调用的具体的控制器就是说其对应的方法或者逻辑 处理器适配器 (HandlerAdapter) 会调用对应的具体的 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入门
4.1 添加依赖
!-- jstlstandard --
jstl.version1.2/jstl.version
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 4.2 创建spring-mvc.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.xissl及子子孙孙包下的控制器(扫描范围过大耗时)--context:component-scan base-packagecom.xissl/!--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
4.3 配置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-app4.4 入门案例
Controller
public class IndexController {RequestMapping(/hello)public String hello(){System.out.println(袁辉是本币);return hello;}
} RequestMapping注解是一个用来处理请求地址映射的注解可用于映射一个请求或一个方法可以用在类或方法上。 标注在方法上 用于方法上表示在类的父路径下追加方法上注解中的地址将会访问到该方法。如案例所示 标注在类和方法上 用于类上表示类中的所有响应请求的方法都是以该地址作为父路径。 Controller
RequestMapping(/book)
public class IndexController {RequestMapping(/list)public String hello(){System.out.println(袁辉是本币);return hello;}
} 注意当你在类上添加RequestMapping注解后如果要请求映射就意味着请求要先映射到标注类的位置然后再映射到该类的方法上