搭建springMvc
idea新建maven项目
pom.xml中加入springmvc依赖
<!--加入依赖-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
</dependencies>
右击项目
新建spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xxxx>
<!--配置前端控制器、核心调度器、分发器
接收所有除了,jsp的请求 都交给springmvc去处理-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--告诉springMvc我们的配置文件在哪里-->
<init-param>
<!--contextConfigLocation配置springmvc的xml配置文件-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--启动时加载servlet :
当web服务器 启动时就会创建servlet(会自动调用servlet的构造函数及init()方法),可以加载spring上下文
标记容器是在启动的时候就加载这个servlet
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
<!--配置路径
/ 除了.jsp的请求都会被匹配
/* 所有请求都会匹配
*.do、*.action url结尾以do或者.action的都会被匹配
现在基本不加后缀了
-->
</servlet-mapping>
</web-app>
配置url-pattern为/除了jsp的文件其他所有的请求都拦截下来;
把所有的控制器注入到IOC容器当中;
@Controller
public class controller {
//在springMvc中自动绑定,添加RequestMapping是映射
@RequestMapping("/Hello")
public String hello(String name){
System.out.println("hello spring mvc");
return "redirect:index.jsp";
//就可以访问index.jsp的页面了
}
}
配置tomcat启动即可使用
在idea中要手动添加lib目录,把包放进去,否则http://localhost:8080/Hello会报错
该项目运行流程:
1、客户端发送请求http://localhost:8080/Hello
2、tomcat接收到对应请求;
3、前端控制器DispatcherServlet接收到所有的请求
4、根据RequestMapping注解来映射匹配Hello方法;
5、前端控制器找到具体发方法,执行目标方法;
6、springmvc把该方法的返回值用视图解析器解析拼接成完整的页面地址;
7、DispatcherServlet拿到地址,转发或者重定向到具体页面
springmvc 流程(很重要 背)
DispatcherServlet: 前端调度器,把拦截分发到各个控制器方法中
HandlerMapping:在分发到各个控制器之前,先调用HandlerMapping;负责根据请求的URL和@RequestMapping去匹配,匹配到就返回具体方法(@RequestMapping("/Hello") public String hello(String name))Handler(具体控制器的方法)
HandlerAdaper:负责调用Handler具体的方法返回逻辑视图名(return “index.jsp”😉,并封装到ModelAndView中 返回到DispatcherServlet
ViewReslover: 根据ModelAndView里面的视图名地址,找到具体的视图文件(index.jsp)封装在View对象中
View:进行视图渲染(将jsp转换成html内容)
1、DispatcherServlet表示前端控制器,是整个SpringMVC的控制中心。用户发出请求,
DispatcherServlet接收请求并拦截请求。
2、HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请
求url查找Handler。
3、返回处理器执行链,根据url查找控制器,并且将解析后的信息传递给DispatcherServlet
4、HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
5、执行handler找到具体的处理器
6、Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
7、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
8、DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
9、视图解析器将解析的逻辑视图名传给DispatcherServlet。
10、DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图,进行试图渲染
11、将响应数据返回给客户端