概述
通过以下介绍,可以简单的了解springmvc前端控制器的工作流程(就是用户提交url,springmvc如何处理并返回页面)
1用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截;
2DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器;
3处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
4DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器);
5HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器;
6Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名;
7HandlerAdapter将ModelAndView对象返回给DispatcherServlet;
8DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器);
9ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图);
10DispatcherServlet对View进行渲染(即将模型数据填充至视图中); 11视图渲染结果会返回给客户端浏览器显示。
web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
...
<servlet>
<!--注入前端控制器组件(实现了前端和后端如何交互)-->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!--加载spingmvc配置文件-->
<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>
<!--匹配前端传来的所有url-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
springmvc-config.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
...
<!--如果前端传来url是/firstController,就调用此类进行处理-->
<bean name="/firstController" class="com.itheima.controller.FirstController" />
<!-- 控制器映射器,将处理器Handle的name作为url进行查找,上条配置由此生效 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 控制器适配器,配置对处理器中handleRequest()方法的调用-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
</beans>
FirstController 控制器类
public class FirstController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) {
//定义返回的模型
ModelAndView mav = new ModelAndView();
//定义返回的model模板(页面)为first.jsp页面
mav.setViewName("/WEB-INF/jsp/first.jsp");
//模版的数据赋值,也可以说是对model模板(页面)的渲染(加数据或者加特效?!)
mav.addObject("msg", "这是我的第一个Spring MVC程序");
return mav;
}
}
first.jsp页面文件
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>springmvc控制器流程</title>
</head>
<body>
${msg}
</body>
</html>
最后
以上就是冷酷西牛为你收集整理的SpringMVC控制器工作流程的全部内容,希望文章能够帮你解决SpringMVC控制器工作流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复