【SpringMVC】零基础快速学习与搭建SpringMVC框架(全面剖析)

笔记大纲
  • SpringMVC简述
  • SpringMVC基本作用
  • HelloWorld案例(7大步骤)
  • HelloWorld案例深度解析
    • 运行流程图解
    • 运行原理图解
    • 运行过程详述(必须掌握)

1.SpringMVC简述

  Spring3.0后超越了Struts2,Spring为展现层提供了一种基于MVC设计、轻量级Web层应用框架,是Spring框架的一个后续产品(偏前端非基于业务逻辑层),是目前企业主流的MVC框架之一;

  SpringMVC通过注解,让POJO(简单的Java对象即普通的JavaBean)成为处理请求的控制器,无序实现任何接口

  SpringMVC支持Restful风格的URL请求(POST、DELETE、PUT、GET);

  SpringMVC采用松散耦合可插拔组件结果,比对其它MVC框架,更具有扩展性和灵活性。

2.SpringMVC基本作用

  ①与Spring框架无缝集成,如:(IOC,AOP);

  ② 支持Restful风格;

  ③ 进行更简洁的Web层开发;

  ④支持灵活的URL到页面控制器的映射;

  ⑤非常容易与其他视图技术集成,如:Velocity、FreeMarker等等;

  ⑥因为模型数据不存放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);

  ⑦非常灵活的数据验证、格式化和数据绑定机制、能使用任何对象进行数据绑定,不必实现特定框架的API;

  ⑧更加简单、强大的异常处理;

  ⑨对静态资源的支持;

  ⑩支持灵活的本地化、主题等解析;

3.HelloWorld案例
3.1新建Web工程,导入JAR包

在这里插入图片描述

8个JAR包:

在这里插入图片描述

3.2.在web.xml中配置DispatchServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SpringmvcDemo01</display-name>
    
	<!-- 【1】中央调度器/前端控制器,主要接受客户端的请求,将请求交给不同的处理器处理 -->
	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
		<!-- 
		【2】初始化参数
            用于读取springmvc的配置文件
            servlet对象在服务器启动阶段会被创建,其中的init方法中实例化了Spring的容器
		    指定SpringMVC配置文件的路径 
		    如果不指定路径,则默认在WEB-INF/dispathchweServlet-servlet.xml文件作为SpringMVC的配置文件
		-->
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<!-- 在服务器启动时候创建servlet对象,完成容器初始化,映射等操作!级别越小,启动越快!-->
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		<!-- 【匹配规则】
		完全匹配           /userLogin
		通配符匹配         /*
		后缀匹配            *.do
		注意:SpringMVC的中央调度器比较特殊,拦截所有的请求,不能使用  /*,而是使用/
		-->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
</web-app>

快捷配置快捷键:Alt+"/"!!!

在这里插入图片描述

3.3.创建配置springmvc-xml文件
<?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"
	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-4.0.xsd">

	<!--1】组件扫描 -->
	<context:component-scan base-package="com.codinglin.springmvc.helloworld"></context:component-scan>
	<!--2】视图解析器 
	 作用:将prefix +处理器返回的逻辑名称+suffix 拼接成物理视图,就会做转发操作
	-->
	<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

3.4.在WebContext下新建jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试入口页面</title>
</head>    
<body>
     <!-- 发送请求 -->
     <!-- 测试【1】通过绝对路径访问 -->
	<a href="https://coding0110lin.blog.csdn.net/">测试1--绝对路径</a><br>
	<!--  测试【2】通过相对路径访问,不以/开始,【相对的是当前请求的资源】 http://localhost:8080/SpringmvcDemo01/blog.html-->
	<a href="blog.html">测试2--相对路径</a><br>
	
	<!-- 测试【3】通过相对路径访问,以/开始,相对的是【服务器的根路径】 http://localhost:8080/blog.html-->
	<a href="/blog.html">测试3--相对路径</a><br>
	
	<!-- 测试【4】(当前项目)【上下文根 】,EL表达式,可以解决资源找不到-->
	<!--  http://localhost:8080/SpringmvcDemo01/blog.html-->
	<a href="${pageContext.request.contextPath}/blog.html">测试4--相对路径</a><br>
    
	<!--<a href="${pageContext.request.contextPath}/hello">SpringMVC--helloWorld测试1</a><br>-->
	
<a href="${pageContext.request.contextPath}/codinglin/hello">SpringMVC--helloWorld测试2</a>
</body>
</html>

SpringmvcDemo01我们称之为为当前项目,官方说法是“上下文根”!如果我们下修改项目名,即重命名,选中项目–>Properties:
在这里插入图片描述

3.5.新建处理请求的处理器(普通JavaBean)
package com.codinglin.springmvc.helloworld;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/*这个处理器,不依赖某一个类和某一个接口
 * 
 * 1.交给容器管理
 * 2.标识为Controller
 * 注意:在SpringMVC上,处理器必须加上Controller注解
 * */

@Controller
@RequestMapping("/codinglin")
public class HelloWorldController {
	//将客户端的请求交给该方法进行处理
	//   "/"表示相对的项目  http://localhost:8080/SpringmvcDemo01/hello
    //请求的映射路径名称和处理请求的方法名称最好一致!
	@RequestMapping("/hello")
	public String hello() {
		//返回的是要跳转的页面的【逻辑视图名称】
		//通过视图解析器
		return "success";

	}
}
3.6.编写视图,在/WEB-INF/下创建views目录下创建success.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>Success Page!</h3>
</body>
</html>
3.7.部署测试,页面效果:

在这里插入图片描述

总结:

开发HelloWorld案例的步骤如下:

(1)创建创建DynamicWebProject<动态工程>

(2)导包(8个)
   aop,bean,context,core,expression,common-logging,web,web-mvc

(3)配置web.xml文件
   ① 配置SpringMVC的中央调度器
   ② 指定SpringMVC配置文件(spring-mvc.xml)的路径
   ③ 在web服务器启动阶段实例化servlet

(4)配置spring-mvc.xml文件
   ①组件扫描
   ②视图解析器(prifixsuffix

(5)编写处理器HelloWordController处理器客户端请求
   ①@Controller
   ②@RequestMapping
   ③返回跳转的页面的逻辑名称

(6) 编写success.jsp页面在WEB-INF/views目录下

4.HelloWorld案例深度解析
4.1.运行流程图解

在这里插入图片描述

4.2.运行原理图解

在这里插入图片描述

4.3.运行过程详述

(1)启动Tomcat服务器

  ①读取web.xml文件;

  ②在web.xml文件配置SpringMVC的中央调度器,配置了<load-on-startup>1</load-on-startup>

  ③在启动服务器时,DispatcherServlet就会被创建,init()就会执行;

  ④在init()中,中央调度器实例化Spring的容器对象,在实例化容器时,需要读取spring的配置文件,通过<init-param>指定spring的配置文件路径(类路径);实例化容器对象时,会读取spring-mvc.xml文件。

  ⑤在spring-mvc.xml配置文件中,指定了扫描的组件,会将HelloWorldController扫描到,同时会对方法上的@RequestMapping注解进行解析,就可知道请求与处理器间的一个映射关系;

  控制台信息:

在这里插入图片描述

(2)在浏览器中地址栏中发送http://localhost:8080/SpringmvcDemo01/index.jsp请求

  ①该请求交个中央处理器处理,在web.xml中,中央处理器匹配了所有的请求,<url-pattern>/</url-pattern>,中央处理器根据请求和处理器的映射关系,会决定选择将请求交给对应的处理器的方法进行处理;

  ②处理器的方法处理完请求之后,返回一个字符串类型值,这个字符串是跳转视图的逻辑名称;

  ③在spring-mvc.xml配置文件中视图解析器对返回值进行解析:

​      格式:前缀+逻辑名称+后缀=具体的物理视图

  ④解析完毕后,通过请求转发的方法跳转到具体的物理视图success.jsp


 ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值