一、Spring MVC
Spring MVC是Spring提供的一个实现了web MVC设计模式的轻量级Web框架。
Spring优点:网上有,此处不复述。
二、第一个Spring MVC
2.1首先需要添加jar包
2.2配置WEB-INF目录下的web.xml文件,如果没有直接新建一个。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <display-name>SpringMVC</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 配置前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class > org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-- 初始化时加载配置文件,该配置文件是在src目录下创建的。 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <!-- 当前servlet与容器一起加载 --> <load-on-startup>1</load-on-startup> </servlet> <!-- 所有请求都会被前端控制器拦截--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
控制类:需要实现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 { // TODO Auto-generated method stub System.out.println("into modelandview"); ModelAndView mv = new ModelAndView();//创建一个ModelAndView对象 mv.addObject("msg", "first spring mvc");//设置属性名和属性值, mv.setViewName("/WEB-INF/jsp/first.jsp");//指定路径。 return mv; } }
在WEB-INF下新建一个jsp文件夹,在jsp文件夹下新建一个first.jsp文件。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${msg} </body> </html>
在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-4.3.xsd "> <!-- 配置处理器(Handle),映射/firstController请求 (Controller类)--> <bean name = "/firstController" class = "com.springmvc.firstmvc.FirstController"/> <!-- 配置映射处理器(handlerMapping) 将处理器(Handle)的name作为url进行查找 --> <bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 配置适配处理器(HandlerAdapter) 适配处理器会调用处理器(Handle)即FirstController类 --> <bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 处理器会返回一个ModelAndView,适配处理器将返回的ModelAndView交给前端控制器去处理了 --> <!-- 前端控制器根据ModelAndView选择一个视图解析器(ViewReslover) --> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"/> <!-- 视图处理器解析后会将视图传递给前端控制器,前端控制对View进行渲染(将模型数据填入视图) --> <!-- 渲染结果会返回客户端浏览器显示 --> </beans>
三、SpringMVC工作流程
3.1用户发送请求,会被前端控制器(DispatcherServlet)拦截。
3.2前端控制器拦截请求后会调用映射处理器(HandlerMapping)
3.3映射处理器根据url寻找具体的处理器,然后将处理器对象返回给前端控制器。
3.4前端控制器选择合适的适配处理器(HandlerAdapter)
3.5处理适配器会调用处理器(Controller类)。
3.6处理器执行完会返回一个ModelAndView(包含模型和视图名)。
3.7适配处理器将ModelAndView返回给前端适配器。
3.8前端控制器根据MdelAndView选择合适的视图解析器(ResloverView)。
3.9视图解析器件解析的具体视图返回给前端控制器。
3.10前端控制器将Model填充入视图。
3.11用户看到具体页面。