SpringMVC
1.1 Spring、SpringMVC、Mybaits在三层架构的位置
1.2 SpringMVC和Struts2的区别
共同点:
它们都是表现层框架,都是基于MVC模型编写的。
它们的底层都离不开原始ServletAPI。
它们处理请求的机制都是一个核心控制器。
区别:
SpringMVC的入口是Servlet,而struts2是Filter
SpringMVC是基于方法设计的,而Struts2是基于类的,Struts2每次执行都会创建一个动作类。所以SpringMVC比Struts2稍微快些。
SpringMVC使用更加简洁,同时还支持JSR303,处理ajax请求更加方便。
Struts2的OGNL表达式使页面的开发效率比springMVc更高些,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有html执行效率高。
2.SpringMVC的入门
2.1 配置核心控制器
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!--配置核心控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--加载配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--web应用程序启动的时候就加载这个servlet,(实例化并调用其init()方法)-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.2 创建SpringMVC的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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">
<!--开启注解扫描-->
<context:component-scan base-package="com.llb"/>
<!--视图解析器:跳转到指定页面-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--开启springmvc框架的注解支持-->
<mvc:annotation-driven conversion-service="conversionService"/>
</beans>
2.3 编写控制器,使用注解配置
package com.llb.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 控制器类
* Ceate By llb on 2019/8/12
*/
@Controller
@RequestMapping("/user")
public class HelloController {
@RequestMapping("/hello")
public String sayHello(){
System.out.println("Hello World!");
return "success";
}
}
3. 入门案例的执行过程及原理分析
3.1 执行过程
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、
处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
3.2 SpringMVC的请求响应流程
标题4. 入门案例涉及的组件
4.1 DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于 mvc 模式中的 c,dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。
4.2 HandlerMapping:处理器映射器
HanderMapping负责根据用户请求找到Handler,即处理器,SpringMVC提供了不同的映射器实现不同的映射方式。例如:配置文件方式,实现接口方式,注解方式等。
4.3 Handler:处理器
它就是开发中要编写的具体业务控制器。由DispatcherServlet把用户请求转发到Handler。由Handler对具体的用户请求进行处理。
4.4 HandlerAdapter:处理器适配器
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
4.5 View Resolver: 视图解析器
View Resolver 负责将处理结果生成 View 视图,View Resolver
首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。
4.6 View :视图
SpringMVC 框架提供了很多的 View
视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是
jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
博客园:https://www.cnblogs.com/liulebin/p/11347868.html
github:https://github.com/PopsiCola/SSM-SpringMVC/tree/SpringMVC_Start