点击上方“Java面试题精选”,关注公众号
面试刷图,查缺补漏
号外:往期面试题,10篇为一个单位归置到本公众号菜单栏-面试题,有需要的欢迎翻阅
阶段汇总集合:
大家是否遇到过被面试官问了这样一句话:“来聊聊springmvc执行原理”。是的,springmvc的执行流程是面试的高频点,今天我就来浅谈它!
一、下面通过一个简单的springmvc程序去走进它。
1、在ssm中,springmvc作为controller层去实现处理请求,响应页面,所以需要controller层。
HelloController这个类需要实现Controller这个接口,并且覆写handleRequest这个方法。
在类中编写如下代码:
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv = new ModelAndView();
String msg="HelloSpringmvc!";
mv.addObject("msg",msg);
mv.setViewName("test");
return mv;
}
}
2、去资源路径下创建springmvc的配置文件。
内容如下:
?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
https://www.springframework.org/schema/beans/spring-beans.xsd"
!-- 配置处理器映射器--
bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/
!-- 配置处理器适配器--
bean id="controllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/
!-- 配置视图解析器--
bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
!-- 路径前缀--
property name="prefix" value="/WEB-INF/jsp/"/
!-- 路径后缀--
property name="suffix" value=".jsp"/
/bean
!-- BeanNameUrlHandlerMapping这个类会自动找到与请求一致的benaid--
bean id="/hello" class="com.zhang.controller.HelloController"/
/beans
3、在web.xml中配置springmvc的核心控制器DispatchServlet。
内容如下:
?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"
!-- 配置前端控制器--
servlet
servlet-namedispatcherServlet/servlet-name
servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class
!-- 初始化时加载配置文件--
init-param
param-namecontextConfigLocation/param-name
param-valueclasspath:springmvc.xml/param-value
/init-param
!-- 开启服务器时启动--
load-on-startup1/load-on-startup
/servlet
servlet-mapping
servlet-namedispatcherServlet/servlet-name
!--/和/*的区别
/:只会去匹配请求,不会匹配jsp页面
/*:会匹配所有请求
--
url-pattern//url-pattern
/servlet-mapping
/web-app
4、创建如下图jsp文件。
5、将项目部署到tomcat上并运行。
如果出现404错误,可以去检查一下artifacts下面相应的war有没有jlib目录
到此就运行成功了。
二、根据上面的程序来理解下面的执行原理。
下面分几步来解释:
1.
DispatcherServlet
:前端控制器,作为整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。
2.
HandlerMapping
:处理器映射器,DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url去查找对应的处理。
3.
HandlerExecution
:具体的handler(处理),将解析后的url传递给DispatcherServlet。
4.
HandlerAdapter
:处理器适配器,将DispatcherServlet传递的信息去执行相应的controller。
5.Controller层中调用service层,获得数据放在ModelAndView对象中,并给ModelAndView设置页面信息。
6.HandlerAdapter将视图名传递给DispatcherServlet。
7.DispatcherServlet调用视图解析器来解析HandlerAdapter传递的视图名。
8.视图解析器将解析的视图名传给DispatcherServlet。
9.DispatcherServlet根据视图解析器返回的视图名调用具体的视图。
10.用户获得视图。
下图为执行原理图:
END
来源:cnblogs.com/yang-guang-zhang/p/12896598.html
十期推荐
与其在网上拼命找题?** 不如马上关注我们~**
原文始发于微信公众号(Java面试题精选):