Spring MVC学习笔记1——Spring MVC 简介

什么是Spring MVC

Spring MVCSpring框架的一个模块,Spring MVCSpring无需通过中间整合层进行整合

Spring MVC是一个基于MVCweb框架。

Spring MVC框架原理

在这里插入图片描述

  1. 发起请求到前端控制器(DispatcherServlet)。
  2. 前端控制器请求HandlerMapping查找Handler(可以根据xml配置、注解进行查找)。
  3. 处理器映射器HandlerMapping向前端控制器返回Handler
  4. 前端控制器调用处理器适配器去执行Handler
  5. 处理器适配器去执行Handler
  6. Handler执行完成给适配器返回ModelAndView
  7. 处理器适配器向前端控制器返回ModelAndViewModelAndViewSpring MVC框架的一个底层对象,包括ModelView
  8. 前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)。
  9. 视图解析器向前端控制器返回View
  10. 前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域 。
  11. 前端控制器向用户响应结果。

组件

前端控制器DispatcherServlet(不需要程序员开发)

作用:接收请求,响应结果,相当于转发器,中央处理器。
有了DispatcherServlet,减少了其他组件之间的耦合度。

处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的url查找Handler

处理器Handler(需要程序员开发)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求的规则)执行Handler

视图解析器ViewResolver(不需要程序员开发)

作用:进行视图解析,根据逻辑视图名解析成真正的视图(View)。

视图View(需要程序员开发jsp

View是一个接口,实现类支持不同的View类型(jspfreemarkerpdf…)。

开发步骤

  1. 加入jar包。
  2. web.xml中配置DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  
  	<!-- 配置DispatcherServlet -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		
		<!-- 配置DispatcherServlet的一个初始化参数:配置SpringMVC配置文件的位置和名称 -->
		<!-- 
			实际上也可以不通过contextConfigLocation来配置SpringMVC的配置文件,而使用默认的
			默认的配置文件为:/WEB-INF/<servlet-name>-servlet.xml
			即:此例中配置文件springmvc.xml重命名为springmvc-servlet.xml,并放到/WEB-INF下
		-->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		
		<!-- 这个servlet在当前应用被加载时就创建 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
  
</web-app>
  1. 加入Spring MVC的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<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-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

	<!-- 配置自动扫描的包 -->
	<context:component-scan base-package="com.springmvc"></context:component-scan>
	
	<!-- 配置视图解析器:如何把handler方法返回值解析为实际的物理视图 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	
</beans>
  1. 编写处理请求的处理器,并标识为处理器。
@Controller
public class HelloWorld {

	/*
	 * 1.使用@RequestMapping注解来映射请求的URL
	 * 2.返回值会通过视图解析器解析为实际的物理视图,对于InternaResourceViewlResolver视图解析器,会做如下的解析:
	 * 	通过  prefix + returnVal + suffix 这样的方式得到实际的物理视图,然后做转发操作
	 * 	/WEB-INF/views/success.jsp
	 */
	@RequestMapping("/helloworld")
	public String hello() {
		
		System.out.println("hello world");
		return "success";
		
	}
	
}
  1. 编写视图。

猜你喜欢

转载自blog.csdn.net/qq_43415405/article/details/83306326
今日推荐