【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?

沙海 2021年5月20日06:01:19Java评论21字数 3641阅读12分8秒阅读模式
摘要

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗? 戳一戳→ 程序员的成长之路

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?

戳一戳→ 程序员的成长之路 文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

程序员的成长之路文章源自JAVA秀-https://www.javaxiu.com/24156.html

互联网/程序员/技术/资料共享 文章源自JAVA秀-https://www.javaxiu.com/24156.html

关注文章源自JAVA秀-https://www.javaxiu.com/24156.html

阅读本文大概需要 2.8 分钟。文章源自JAVA秀-https://www.javaxiu.com/24156.html

来自:cnblogs.com/yang-guang-zhang/p/12896598.html文章源自JAVA秀-https://www.javaxiu.com/24156.html

大家是否遇到过被面试官问了这样一句话:“来聊聊springmvc执行原理”。是的,springmvc的执行流程是面试的高频点,今天我就来浅谈它!文章源自JAVA秀-https://www.javaxiu.com/24156.html

一、下面通过一个简单的springmvc程序去走进它。

1、在ssm中,springmvc作为controller层去实现处理请求,响应页面,所以需要controller层。文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

HelloController这个类需要实现Controller这个接口,并且覆写handleRequest这个方法。文章源自JAVA秀-https://www.javaxiu.com/24156.html

在类中编写如下代码:文章源自JAVA秀-https://www.javaxiu.com/24156.html

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的配置文件。文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

内容如下:文章源自JAVA秀-https://www.javaxiu.com/24156.html

<?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。文章源自JAVA秀-https://www.javaxiu.com/24156.html

内容如下:文章源自JAVA秀-https://www.javaxiu.com/24156.html

<?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-name>dispatcherServlet</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>dispatcherServlet</servlet-name><!--/和/*的区别    /:只会去匹配请求,不会匹配jsp页面    /*:会匹配所有请求-->        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

4、创建如下图jsp文件。文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

5、将项目部署到tomcat上并运行。文章源自JAVA秀-https://www.javaxiu.com/24156.html

如果出现404错误,可以去检查一下artifacts下面相应的war有没有jlib目录文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

到此就运行成功了。文章源自JAVA秀-https://www.javaxiu.com/24156.html

二、根据上面的程序来理解下面的执行原理。

下面分几步来解释:文章源自JAVA秀-https://www.javaxiu.com/24156.html

1.DispatcherServlet:前端控制器,作为整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。文章源自JAVA秀-https://www.javaxiu.com/24156.html

2.HandlerMapping:处理器映射器,DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url去查找对应的处理。文章源自JAVA秀-https://www.javaxiu.com/24156.html

3.HandlerExecution:具体的handler(处理),将解析后的url传递给DispatcherServlet。文章源自JAVA秀-https://www.javaxiu.com/24156.html

4.HandlerAdapter:处理器适配器,将DispatcherServlet传递的信息去执行相应的controller。文章源自JAVA秀-https://www.javaxiu.com/24156.html

5.Controller层中调用service层,获得数据放在ModelAndView对象中,并给ModelAndView设置页面信息。文章源自JAVA秀-https://www.javaxiu.com/24156.html

6.HandlerAdapter将视图名传递给DispatcherServlet。文章源自JAVA秀-https://www.javaxiu.com/24156.html

7.DispatcherServlet调用视图解析器来解析HandlerAdapter传递的视图名。文章源自JAVA秀-https://www.javaxiu.com/24156.html

8.视图解析器将解析的视图名传给DispatcherServlet。文章源自JAVA秀-https://www.javaxiu.com/24156.html

9.DispatcherServlet根据视图解析器返回的视图名调用具体的视图。文章源自JAVA秀-https://www.javaxiu.com/24156.html

10.用户获得视图。文章源自JAVA秀-https://www.javaxiu.com/24156.html

下图为执行原理图:文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

<END>文章源自JAVA秀-https://www.javaxiu.com/24156.html

推荐阅读:文章源自JAVA秀-https://www.javaxiu.com/24156.html

【199期】100%会用到的hashCode()和equals()方法及使用规范,你掌握了吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

【198期】面试官:你能说出 方法重载和方法重写 的原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

【197期】华为OD两轮技术面试记录,给后来人一个参考!文章源自JAVA秀-https://www.javaxiu.com/24156.html

5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「2048」,即可免费获取!!文章源自JAVA秀-https://www.javaxiu.com/24156.html

【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

微信扫描二维码,关注我的公众号文章源自JAVA秀-https://www.javaxiu.com/24156.html

朕已阅 【200期】面试官:你能简单说说 SpringMVC 的执行原理吗?文章源自JAVA秀-https://www.javaxiu.com/24156.html

继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
weinxin
资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定