新闻资讯

新闻资讯 媒体报道

SpringMVC 的执行原理

编辑:005     时间:2020-11-16

一、下面通过一个简单的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-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文件。

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.用户获得视图。

下图为执行原理图:

   

本内容属于网络转载,文中涉及图片等内容如有侵权,请联系编辑删除

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐