1. MVC框架概述
M:model(模型)
数据模型:数据实体
pojo、domain
业务模型:与业务操作相关
V:View(视图)
展示数据
C:Controller(控制器)
作用:接收用户请求,委派模型组件作处理,将数据转发视图
MVC作用:
1、降低模型依赖关系,解耦
举例:
将模型与视图相分离
2、每个程序可以各尽职责
3、提高代码的扩展性、可维护性
2. MVC与JAVA经典三层构架
3. MVC框架应用
struts1
struts2
SpringMVC
struts1:
1、表现层单一,仅仅支持jsp
2、与servlet api存在严重的依赖关系
3、编写控制器必须要使用struts1的api实现
struts2:
1、丰富表现层
2、完全与servlet api脱离
3、编写一个pojo作为控制器
4. SpringMVC与struts2的区别
1、struts2它是针对类级别的拦截,一个url请求,对应一个Action类
SpringMVC它是针对方法级别的拦截,一个url请求,对应一个方法
2、struts2将全部request、session、pageContext、application的变量存储到ActionContext的map对象,比较耗内存
3、SpringMVC针对ajax
4、SpringMVC支持restful风格请求
5、SpringMVC支持json数据解释
6、struts2这是通过过滤器实现控制器,SpringMVC通过servlet实现控制器
7、SpringMVC支持jsr301校验框架
8、性能高于Struts2
9、安生性springMVC要优于struts2
5. SpringMVC框架简介
它是一个解决表示层的轻量级MVC框架
SpringMVC框架图:
6. 第一个SpringMVC的实例
步骤:
(1) 导入springmvc依赖库
(2) 编写web.xml文件,注册DispathcerServlet组件
(3) 在WEB-INF目录下,新建springmvc-config.xml
此文件配置:
配置处理器映射器
配置处理器适配器
配置视图解析器
a、编写一个类,此类要实现Controller接口
b、重写handleRequest方法
ModelAndView modelAndView=new ModelAndView();
modelAndView.setViewName("/WEB-INF/content/jsp/success.jsp");
(5) 在springmvc-config.xml文件,配置handler类对应的uri路径
7. 重点分析SpringMVC的核心组件
1、DispathcerServlet
前端控制器
1、接收用户请求,委派相应的组件去处理
委派HandlerMapper、HandlerAdpater、ViewResolver去处理
2、HandlerMapping
处理器映射器
根据用户请求的uri地址,来找到对应目标handler
处理器映射器种类:
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping
ControllerClassNameHandlerMapping
DefaultAnnotationHandlerMapping
RequestMappingHandlerMapping
3、HandlerAdapter
处理器适配器
进一步确认是否适合执行handler
处理器适配器种类:
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter
AnnotationMethodHandlerAdapter
RequestMappingHandlerAdapter
4、ViewResolver
视图解析器
作用:根据逻辑视图名----》解析----》真正物理视图地址
5、Handler(后端控制器)
处理用户请求,真正执行的后端控制器
6、ModelAndView
Model:数据模型
View:视图名(逻辑视图名)
8. HandlerMapping(处理器映射器)
有以下种类:
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping
ControllerClassNameHandlerMapping
DefaultAnnotationHandlerMapping
RequestMappingHandlerMapping
BeanNameUrlHandlerMapping:根据bean的id或者name作为uri地址对应handler对象
SimpleUrlHandlerMapping:
9. HandlerAdapter(处理器适配器)
有以下种类:
SimpleControllerHandlerAdapter
HttpRequestHandlerAdapter
AnnotationMethodHandlerAdapter
RequestMappingHandlerAdapter
SimpleControllerHandlerAdapter:handler类必须实现Controller接口,才能适配成功
HttpRequestHandlerAdapter:handler类必须实现HttpRequestHandler,才能适配成功
8. 通过注解实现SpringMVC
1、导入springmvc依赖库
2、编写web.xml文件,注册DispathcerServlet组件
a、添加@Controller注解
b、在springmvc-config.xml文件进行扫描
M:model(模型)
数据模型:数据实体
pojo、domain
业务模型:与业务操作相关
V:View(视图)
展示数据
C:Controller(控制器)
作用:接收用户请求,委派模型组件作处理,将数据转发视图
MVC作用:
1、降低模型依赖关系,解耦
举例:
将模型与视图相分离
2、每个程序可以各尽职责
3、提高代码的扩展性、可维护性
2. MVC与JAVA经典三层构架
3. MVC框架应用
struts1
struts2
SpringMVC
struts1:
1、表现层单一,仅仅支持jsp
2、与servlet api存在严重的依赖关系
3、编写控制器必须要使用struts1的api实现
struts2:
1、丰富表现层
2、完全与servlet api脱离
3、编写一个pojo作为控制器
4. SpringMVC与struts2的区别
1、struts2它是针对类级别的拦截,一个url请求,对应一个Action类
SpringMVC它是针对方法级别的拦截,一个url请求,对应一个方法
2、struts2将全部request、session、pageContext、application的变量存储到ActionContext的map对象,比较耗内存
3、SpringMVC针对ajax
4、SpringMVC支持restful风格请求
5、SpringMVC支持json数据解释
6、struts2这是通过过滤器实现控制器,SpringMVC通过servlet实现控制器
7、SpringMVC支持jsr301校验框架
8、性能高于Struts2
9、安生性springMVC要优于struts2
5. SpringMVC框架简介
它是一个解决表示层的轻量级MVC框架
SpringMVC框架图:
6. 第一个SpringMVC的实例
步骤:
(1) 导入springmvc依赖库
(2) 编写web.xml文件,注册DispathcerServlet组件
<!-- 注册DispathcerServlet组件 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
注意:/表示除jsp文件之外,/*表示所有文件,*.do表示以uri以.do结尾
(3) 在WEB-INF目录下,新建springmvc-config.xml
此文件配置:
配置处理器映射器
配置处理器适配器
配置视图解析器
<!-- 配置处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 配置处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
(4) 新建Handler类
a、编写一个类,此类要实现Controller接口
b、重写handleRequest方法
ModelAndView modelAndView=new ModelAndView();
modelAndView.setViewName("/WEB-INF/content/jsp/success.jsp");
(5) 在springmvc-config.xml文件,配置handler类对应的uri路径
<!-- 配置controller所对应的uri地址 -->
<bean id="/hello" class="com.gec.firstspringmvc.controller.HelloController"/>
7. 重点分析SpringMVC的核心组件
1、DispathcerServlet
前端控制器
1、接收用户请求,委派相应的组件去处理
委派HandlerMapper、HandlerAdpater、ViewResolver去处理
2、HandlerMapping
处理器映射器
根据用户请求的uri地址,来找到对应目标handler
处理器映射器种类:
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping
ControllerClassNameHandlerMapping
DefaultAnnotationHandlerMapping
RequestMappingHandlerMapping
3、HandlerAdapter
处理器适配器
进一步确认是否适合执行handler
处理器适配器种类:
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter
AnnotationMethodHandlerAdapter
RequestMappingHandlerAdapter
4、ViewResolver
视图解析器
作用:根据逻辑视图名----》解析----》真正物理视图地址
5、Handler(后端控制器)
处理用户请求,真正执行的后端控制器
6、ModelAndView
Model:数据模型
View:视图名(逻辑视图名)
8. HandlerMapping(处理器映射器)
有以下种类:
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping
ControllerClassNameHandlerMapping
DefaultAnnotationHandlerMapping
RequestMappingHandlerMapping
BeanNameUrlHandlerMapping:根据bean的id或者name作为uri地址对应handler对象
SimpleUrlHandlerMapping:
9. HandlerAdapter(处理器适配器)
有以下种类:
SimpleControllerHandlerAdapter
HttpRequestHandlerAdapter
AnnotationMethodHandlerAdapter
RequestMappingHandlerAdapter
SimpleControllerHandlerAdapter:handler类必须实现Controller接口,才能适配成功
HttpRequestHandlerAdapter:handler类必须实现HttpRequestHandler,才能适配成功
8. 通过注解实现SpringMVC
1、导入springmvc依赖库
2、编写web.xml文件,注册DispathcerServlet组件
<!-- 注册DispathcerServlet组件 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、在src目录下,新建spring目录,在此目录新建一个springmvc-config.xml
<!-- 注解的处理器映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!-- 注解的处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix">
<value>/WEB-INF/content/jsp/</value>
</property>
<!-- 后缀 -->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
4、编写Handler类
a、添加@Controller注解
b、在springmvc-config.xml文件进行扫描
<!-- 针对表示层的Controller进行扫描 -->
<context:component-scan base-package="com.gec.anno.controller" />
5、编写方法
@RequestMapping("/dohello")
public ModelAndView doHello()
{
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("username", "gec");
modelAndView.setViewName("success");
return modelAndView;
}