Javaweb学习笔记(Spring MVC入门)

Spring MVC框架

Spring MVC是Spring提供的一个实现Web MVC设计模式的轻量级Web框架。
Spring MVC的特点:
1.是Spring框架的一部分,可以方便地利用Sring所提供的其他功能。
2.灵活性强,易于与其他框架集成
3.提供了一个前端控制器DispatcherServlet,使开发人员无须额外开发控制对象
4.支持多种视图技术。
5.使用XML配置文件

SpringMVC的工作流程

(1)用户通过客户端向服务器发送请求,请求会被SpringMVC的前端控制器DispatcherServlet(前端控制器)所拦截。
(2)DispatcherServlet拦截到请求后,会调用HandleMapping(处理器的映射器)
(3)处理器映射器根据请求的URL找到具体的处理器,生成处理器对象即处理器拦截器一并返回给DispatcherServlet
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)
(5)HandlerAdapter会调用并执行Handler(处理器),这里的处理器值程序中的Controller类,也被称为后端控制器
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中包含视图名或包含模型和视图名
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet
(8)DispatcherServlet会根据ModelAndView对象选择一个合适的ViewResolver(视图解析器)
(9)ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图)
(10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)
(11)视图渲染结果会返回客户端浏览器显示。

第一个Spring MVC应用

(1)创建项目引入JAR包
在这里插入图片描述
(2)配置前端控制器
在web.xml配置Spring MVC的前端控制器

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>chapter11</display-name>
  <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:springmvc-config.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

在< servlet>中配置了Spring MVC的前端控制器DispatcherServlet,并通过其子元素< init-param>配置了Spring MVC的配置文件,< load-on-startup>元素中的1表示容器会在启动时立即加载这个Servlet;在< servlet-mapping>中,通过< url-pattern>元素的“/”会将有URL拦截并交由DispatcherServlet。
(3)配置Controller类
在src目录下,创建一个com.itheima.controller,在包中创建控制器类。

package com.itheima.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class FirstController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ModelAndView mav=new ModelAndView();
		mav.addObject("msg", "这是我的第一个Spring MVC程序");
		mav.setViewName("/WEB-INF/jsp/first.jsp");
		return mav;
	}

}

(4)创建Spring MVC的配置文件,配置控制器映射信息
在src目录下创建配置文件springmvc-config.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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean name="/firstController" class="com.itheima.controller.FirstController"/>
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

先定义了一个名称为“/firstController”的Bean,该Bean会将控制类映射到“/firstController”请求中,然后配置了处理器映射器和BeanNameUrlHandlerMapping,和处理器适配器SimpleControllerHandlerAdapter牟其中处理映射器用于将处理器Bean中的name进行处理器查找,而处理器适配器用于完成对FirstController处理器中handleRequest()方法的调用。
(5)创建视图
在WEB-INF中创建一个jsp文件夹,并在文件夹中创建一个页面文件first.jsp,在该页面中使用EL表达式获取msg中的值

<%@ 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>
	${msg}
</body>
</html>

(6)启动项目
启动Tomcat,访问:http://localhost:9090/mvc1/firstController
在这里插入图片描述


版权声明:本文为qq_50834939原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。