MVC本质
.MVC的核心思想是业务数据抽取业务数据呈现相分离
MVC
Model-View-Controller
View
视图层:为用户提供UI重点关注数据的呈现
Model
模型层:业务数据的信息表示,关注支持业务的信息构成,通常是多个业务实体的组合
Controller
控制层:调用业务逻辑产生合适的数据(Model)传递数据给视图层用于呈现
.MVC是一种构架模式
程序分层,分工合作,即相互独立,又协同工作
.MVC是一种思考方式
需要将什么信息展现给用户?如何布局?通过什么业务逻辑?
Spring MVC基本概念
DispatcherServlet就是一种前端控制器(frontcontroller),通过DispatcherServlet进行分发到达一个合适的controller,来生产合适的业务数据model,model在通过DispatcherServlet进行传递,传递给view。
HandlerAdapter
适配器模式:DispatcherServlet所调用的controller其实就是HandlerAdapter
HandlerInterceptor
HandlerMapping是DispatcherServlet和controller之间的一个映射
HandlerExecutionChain
Maven
.POM
Project Object Model:An xml file(pom.xml)
.依赖Dependency
/WEB-INF/lib(jar包或其他项目的相关类)
在pom中配置一些依赖项,可以解决复杂的依赖关系
.Coordinates坐标
Maven的安装与配置:
下载:
通过搜索引擎搜索Maven,给出的第一条网站就是maven给出的官方下载的位置,在这里我们可以下载到maven的压缩包,放到一个任意目录进行解压。
配置环境变量:
测试:
在dos命令窗口输入:mvn -version:
配置:
将解压好的文件夹conf中的settings.xml文件拷贝到C:\Users\Administrator\.m2(%HEOM%/.m2)目录下
修改settings.xml文件(也可以修改)
下载存储位置:
访问服务器:
用Maven创建项目:
eclipse-》windows-》preferences-》Maven-》installations
选择add,找到我们刚才解压的文件夹,添加之后选定
user settings找到我们刚才配置的settings.xml文件添加
apply-》ok
新建Maven Project-》选择
填写相关项目后
就成功建立一个maven项目
在main下添加java文件夹,这里存放java文件,类似的可以添加test文件夹存放测试文件。
配置pom.xml:
《project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"》
《modelVersion》4.0.0《/modelVersion》
《groupId》imooc-arthur《/groupId》
spring-mvc-study
《version》0.0.1-SNAPSHOT《/version》
《name》spring-mvc-study Maven Webapp《/name》
《url》http://maven.apache.org《/url》
《properties》
《commons-lang.version》2.6《/commons-lang.version》
《slf4j.version》1.7.6《/slf4j.version》
《spring.version》4.1.3.RELEASE《/spring.version》
《jackson.version》2.5.4《/jackson.version》
《/properties》
《dependencyManagement》
《dependencies》
《dependency》
《groupId》org.springframework《/groupId》
spring-framework-bom
《version》${spring.version}《/version》
《type》pom《/type》
《scope》import《/scope》
《/dependency》
《/dependencies》
《/dependencyManagement》
《dependencies》
《dependency》
《groupId》org.springframework《/groupId》
spring-webmvc
《/dependency》
《dependency》
《groupId》commons-lang《/groupId》
commons-lang
《version》${commons-lang.version}《/version》
《/dependency》
《dependency》
《groupId》org.slf4j《/groupId》
slf4j-log4j12
《version》${slf4j.version}《/version》
《exclusions》
《exclusion》
slf4j-api
《groupId》org.slf4j《/groupId》
《/exclusion》
《/exclusions》
《/dependency》
《dependency》
《groupId》org.slf4j《/groupId》
slf4j-api
《version》${slf4j.version}《/version》
《/dependency》
《dependency》
《groupId》javax.servlet《/groupId》
servlet-api
《version》2.5《/version》
《/dependency》
《dependency》
《groupId》commons-fileupload《/groupId》
commons-fileupload
《version》1.3.1《/version》
《/dependency》
《dependency》
《groupId》com.fasterxml.jackson.core《/groupId》
jackson-databind
《version》${jackson.version}《/version》
《/dependency》
《/dependencies》
《build》
《plugins》
《plugin》
《groupId》org.eclipse.jetty《/groupId》
jetty-maven-plugin
《version》9.2.2.v20140723《/version》
《/plugin》
《/plugins》
《/build》
《/project》
web.xml:
《servlet》
《servlet-name》mvc-dispatcher《/servlet-name》
《servlet-class》org.springframework.web.servlet.DispatcherServlet《/servlet-class》
《!--DispatcherServlet对应的上下文配置,默认为/WEB-INF/$servlet-name$-servlet.xml
--》
《init-param》
《param-name》contextConfigLocation《/param-name》
《param-value》/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml《/param-value》
《/init-param》
《load-on-startup》1《/load-on-startup》
《/servlet》
《servlet-mapping》
《servlet-name》mvc-dispatcher《/servlet-name》
《!-- mvc-dispatcher拦截所有的请求--》
《url-pattern》/《/url-pattern》
《/servlet-mapping》
新建:WEB-INF/configs/spring/mvc-dispatcher-servlet.xml
《beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"》
《!--本配置文件是工名为mvc-dispatcher的DispatcherServlet使用, 提供其相关的Spring MVC配置--》
《!-- 启用Spring基于annotation的DI, 使用户可以在SpringMVC中使用Spring的强大功能。 激活 @Required
@Autowired,JSR 250's@PostConstruct, @PreDestroy and @Resource 等标注 --》
《context:annotation-config /》
《!--DispatcherServlet上下文,只管理@Controller类型的bean, 忽略其他型的bean, 如@Service--》
《context:component-scanbase-package="com.imooc.mvcdemo"》
《context:include-filtertype="annotation"
expression="org.springframework.stereotype.Controller" /》
《/context:component-scan》
《!-- HandlerMapping, 无需配置, Spring MVC可以默认启动。DefaultAnnotationHandlerMapping
annotation-drivenHandlerMapping --》
《!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 --》
《mvc:annotation-driven /》
《bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"》
《propertyname="viewClass"
value="org.springframework.web.servlet.view.JstlView"/》
《property name="prefix"value="/WEB-INF/jsps/" /》
《property name="suffix"value=".jsp" /》
《/bean》
《/beans》
新建com.imooc.mvcdemo.controller的类HelloMvcController:
//告诉DispatcherServlet相关的容器, 这是一个Controller, 管理好这个bean哦
@Controller
//类级别的RequestMapping,告诉DispatcherServlet由这个类负责处理以跟URL。
//HandlerMapping依靠这个标签来工作
@RequestMapping("/hello")
public class HelloMvcController {
//方法级别的RequestMapping,限制并缩小了URL路径匹配,同类级别的标签协同工作,最终确定拦截到的URL由那个方法处理
@RequestMapping("/mvc")
public String helloMvc() {
//视图渲染,/WEB-INF/jsps/home.jsp
return "home";
}
}
新建WEB-INF/jsps/home.jsp
启动dos窗口:cdC:\Users\Administrator\workspace\spring-mvc-study(项目路径)
然后dir,我们会看到存在pom.xml
mvn jetty:run启动插件jetty
打开浏览器:http://localhost:8080/hello/mvc/
就可以看见刚才的home.jsp界面