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