开发第一个SpringMVC项目和SpringMVC执行流程以及原理
1.不使用注解
1.导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
放在maven项目pox.xml里
2.把依赖添加到项目里
1.先点开这个
2.在web-inf下新建一个lib的文件夹
3.右键点击添加依赖文件
4.全部添加进去
5.然后ok就行了
3.配置web目录下web-inf下的web.xml文件
***DispathcherServlet ***
SpringMVC的核心就是DispatcherServlet,DispatcherServlet实质也是一个HttpServlet。
DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。
代码:
<?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_4_0.xsd"
version="4.0">
<!-- DispathcherServlet :
SpringMVC的核心就是DispatcherServlet,DispatcherServlet实质也是一个HttpServlet。
DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。
-->
<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>
<!-- 启动级别 1 与服务器一起启动-->
<load-on-startup>
1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
4.配置springmvc-config.xml文件
处理器映射器,处理器适配器,视图解析器是三大核心
代码:
<?xml version="1.0" encoding="UTF8"?>
<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 class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<!--处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 视图解析器 模板引擎 thymeleaf freemarker-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!-- 前缀-->
<property name="prefix" value="/WEB-INF/test/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
5.写Controller类
代码:
package cn.xinzhi.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
// new一个ModelAndView 对象
ModelAndView mv = new ModelAndView();
// 添加一个参数键值对
mv.addObject("msg","HelloSpringMvc");
// 设置视图名称 要跟视图解析器里拼接
mv.setViewName("test"); //http://localhost:8080/WEB-INF/test/test.jsp
return mv;
}
}
6.到spring配置文件(容器)里配置注册这个类,
7.新建jsp文件
代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%=
request.getAttribute("msg")
%>
</body>
</html>
8.测试运行
2.使用注解
注解开发就轻便简介多了
1.web.xml文件不变(DispathcherServlet是springmvc核心,必须配)
2.配置spring容器
3.新建一个Controller类,名字叫HelloController1
然后直接看图!
4.直接测试!
成功!
3.这里补一下SpringMvc的执行流程和原理
执行流程
1、用户发送请求至前端web.xml中,在web.xml中注册DispatcherServlet,并配置对应的spring配置文件地址,跳转至配置DispatcherServlet的配置文件。(DispatcherServlet的配置文件中包含扫描包标签,过滤静态资源标签,注解标签,视图解析器标签)
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
看图
虚线是需要我们做的,实线是不需要手动做的