SpringMVC 访问流程
1、浏览器发送请求
2、若请求地址符合前端控制器的 url-pattern,该请求就会被前端控制器 DispatcherServlet处理
3、程序一启动时,前端控制器会读取 SpringMVC 的核心配置文件
4、SpringMVC 配置文件中,会扫描组件,通过扫描组件找到控制器。将请求地址和控制器中的@RequestMapping 注解的 value 属性进行匹配,匹配成功则找到了对应的请求处理方法。
5、该请求处理方法会返回一个字符串类型的视图名称,该名称会被视图解析器解析,加上前缀、后缀组成视图的路径,返回给浏览器。
配置流程
1)在web.xml 中注册 DispatcherServlet 前端控制器
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<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.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>
2)在控制层加上 @Controller 注解,表示控制层组件
@Controller
public class TestController {}
3) 开启组件扫描 (只写了@Controller 没有用,组件需要被扫描才生效)
<context:component-scan base-package="com.lmgd.controller"></context:component-scan>
4)配置 thymeleaf 视图解析器 (还有其它解析器)
<!-- 配置Thymeleaf视图解析器 -->
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine">
<bean class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<!-- 视图前缀 -->
<property name="prefix" value="/WEB-INF/templates/"/>
<!-- 视图后缀 -->
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8" />
</bean>
</property>
</bean>
</property>
</bean>
5)配置请求处理方法
@Controller
public class TestController {
@RequestMapping("/index")
public String index() {
return "index";// 通过视图解析器解析后,跳转到 /WEB-INF/templates/下的 index.html页面
}
}