MVC是一种架构模式,程序分层,分工合作,既相互独立,又协同工作,分为三层: 模型层、视图层和控制层。
MVC是一种思考方式
View:视图层,为用户提供UI,重点关注数据的呈现,为用户提供界面
Model:模型层,业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。
Controller:控制层,调用业务逻辑产生合适的数据(Model),传递数据给视图用于呈现。
Spring MVC 基本概念
1、DispatcherServlet: 前端控制器2、Controller: 调用业务逻辑生成model的地方
3、HandlerAdapter:DispatcherServlet通过HandlerAdapter调用controller
4、HandlerInterceptor:拦截器 该接口提供after postHandle preHandle 三个方法,调用controller前后使用
5、HandlerMapping:前端控制器与controller映射关系的类
6、HandlerExecutionChain: preHandle->Controller method->postHandle->afterCompletion的执行链
7、ModelAndView:model的具体表现
8、viewResolver:视图解析器,决定需要用哪个视图来进行视图的呈现。
9、view:界面
SpringMVC的动态概念:
1.用户发送请求request
2.DispatcherServlet拦截request 就需要找到一个Controller 如何找?
3.DispatcherServlet就把功能代理给了HandlerMapping
4.HandlerMapping根据配置 通过annotation找到Controller也找到了HandlerInterceptor
形成了一个HandlerExcutionChain 作为一个Handler或者是HandlerAdapter返回给DispatcherServlet
5.DispatcherServlet调用这个Handler或者是HandlerAdapter(找到Controller,Controller目的:生成ModelAndView) 生成ModelAndView 并返回给DispatcherServlet
6.DispatcherServlet调用ViewResolver(视图解析器)方法 返回View对象给DispatcherServlet
7.DispatcherServlet调用ModelAndView作为模型数据传递给我们的View完成了呈现 返回给DispatcherServlet
8.DispatcherServlet再把视图响应给用户
1.DispatcherServlet,HandlerMaping 只需要配置
2.Handler/HandlerAdapter忽略掉
3.Controller需要自己写
4.HandlerInterceptor(Controller调用前后干点啥)是一个接口,需要就写不需要就不用实现
5.ModelAndView:只是一个类 也可以使用Map把需要的放进去就好了
6.ViewResolver和HandlerMapping差不多只需要知道使用那种类型就可以了
7.view:不需要管具体的呈现。只需要管是哪一个就好了
综上所述:需要自己写的就是Controller 其他的就是配置
以上是springmvc的基本概念
下面在说下maven的知识,在开发中一般使用maven自动生成jar包,不在直接导入jar包
Maven是一个构建依赖管理的工具,主要三个方面:
POM:就是一个xml文件(pom.xml),包含很多信息,主要是依赖关系。通过配置完成我们的依赖管理。
Dependency:web应用程序中可能会依赖很多包,而引入的包可能还会依赖其他的包,这样依赖关系的层次会很深传递关系很长,导致lib下的包非常多。但开发人员往往不知道包之间的依赖层次关系,可能会耗费很大的精力去处理包间依赖的关系。maven为我们提管理了直接依赖关系和传递依赖关系,是透明的,不需要我们干预。
Coordinates(坐标):maven像一个仓库,各厂商都往里发布产品。通过groupId,atifactId,version,packaging(缺省为jar)可以确定一个项目的坐标,就可以唯一标识一个产品。1、下载并解压meaven.zip;2、配置环境变量, 名字M2_HOME ,值是meaven安装目录;3、path:%M2_HOME%\bin;;4、测试cmd:mvn -version。
maven镜像中心仓库建议大家选择阿里云的镜像地址,速度会更快一点,感觉官方是面向全世界的,毕竟我们还在墙内。
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
将conf文件下的settings.xml文件复制到%HOME%\.m2目录下,为了避免以后更新了Maven,又要重新配置;
注意:%HOME%\.m2 要等运行过 maven 才会自动生成的。
镜像配置,每次访问Maven时候都先访问配置的这个库,下载所需要的软件包,这样可以降低中心仓库的负载,中心仓库为了避免大量访问造成的服务问题有时会拒绝我们的访问
访问英国的镜像仓库:
uk
uk Central
http://uk.maven.org/maven2
central
maven创建项目:
1.在继承Maven的eclipse中,windows—>prefrences---->Maven—>Installation—>将新下载的maven文件add进去,确保在user Setings中配置文件的路径是之前配置了mirror的配置文件setting.xml
2.运行命令创建项目
注意:需要指定创建项目的路径
例如:cd C:\Users\Workspaces\Eclipse 10
命令:
mvn archetype:generate -DgroupId=i-arthur -DartifactId=spring-mvc-study -DarchetypeArtifactId=maven-archetype-webapp 参数解释:archetype:generate 调用插件 groupId:坐标artifactId:坐标的一个元素,目录结构的根目录名称archetypeArtifactId:目录类型的一个类型,此为webapp的类型
mvn archetype:generate -DgroupId=oc-loki -DartifactId=spring-mvc-study -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=internal
加个参数 -DarchetypeCatalog=internal
让它不要从远程服务器上取catalog:这样就不会卡在
Generating project in Interactive mode了archetype:generate 调用插件groupId:坐标artifactId:坐标的一个元素,目录结构的根目录名称archetypeArtifactId:目录类型的一个类型,此为webapp的类型
1、imprt-Maven-existing…导入项目
修改pom.xml:
…,只用指定版本spring,确定依赖管理
2、配置web.xml
(1)将前端控制器配入web环境
mvc-dispatcher
org.springframework.web.servlet.dispatcher
contextConfigLocation
/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml
1
3、mvc-dispatcher-servlet.xml
context:component-scan搜寻controller
mvc:annotation-driven让DispatcherServlet启用基于annotation的HandlerMapping
servlet.xml
context:annotation-config/
<context:component-scan base-package=“com.imooc.mvcdemo”>
<context:include-filter type=“annotation” expression=“org.springframework.stereotype.Controller”/>
</context:component-scan>
mvc:annotation-driven/
context:annotation-config/ --激活注解管理
<context:component-scan > --让DispatcherServlet搜索@Controller标注的类
mvc:annotation-driven 让DispatcherServlet启用基于Annotation的HandlerMapping(映射正确的controller)
告诉DispatcherServlet启用哪个view
pom.xml
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
高效学习视频
映射正确的controller)
告诉DispatcherServlet启用哪个view
pom.xml
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
[外链图片转存中…(img-dMXWD9wG-1725948546416)]