zoukankan      html  css  js  c++  java
  • Spring MVC(一)Spring MVC的原理

      1、Spring MVC的目的

      构建像Spring框架那样灵活和松耦合的Web应用程序。

     

      2、Spring MVC中如何处理Request?

      每当用户在Web浏览器中点击链接或者提交表单时,Request就开始工作了。

      从离开浏览器开始到获取响应返回,Request会在经历过的每一站留下一些信息,也会获取一些信息。

       DipatcherServlet——前端控制器Servlet,负责将Request发送给Spring MVC的Controller;

      Handler Mapping——处理器映射,应用中会有多个控制器,DipatcherServlet需要知道发送给哪个控制器,所以会查询一个或多个HandlerMapping确定下一站。而Handler Mapping会根据Request所携带的URL信息进行决策;

      Controller——控制器,Request到控制器后,会得到用户提交的信息,然后处理这些信息。实际中,设计良好的控制器本身只处理很少的工作,而是将业务逻辑委托给一个或者多个服务对象进行处理。控制器做的最后一件事就是把模型数据打包~~

      Model——模型,是控制器在完成逻辑处理后,会产生的一些信息,这些信息需要返回给用户并在浏览器上显示。

      View Resolver——视图解析器,原始模型产生后,需要通过View进行必要的格式化。View Resolver就是根据得到的逻辑视图名匹配一个View,告诉DipatcherServlet。DipatcherServlet知道由哪个视图渲染结果,Request的任务基本完成,还有最后一站去完成视图的实现。

      View——视图,Request在这里交付数据模型,完成任务。View使用模型数据渲染输出,这个输出通过Response对象传递给客户端。

     

      3、传统方式,在Web应用程序中配置DipatcherServlet

      传统方式中,DipatcherServlet这样的Servlet会配置在web.xml文件中,web.xml会放到应用的war包中。

    <!--配置springmvc DispatcherServlet(中心控制器)-->
        <servlet>
            <servlet-name>springMVC</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <!--Sources标注的文件夹下需要新建一个spring文件夹-->
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath*:spring/spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>
        <servlet-mapping>
            <servlet-name>springMVC</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

     

      4、新方式基于Servlet 3规范和Spring 3.1,可以使用Java将DipatcherServlet配置在Servlet容器中,而不再使用web.xml。(同时使用也没问题)

      了解凡是扩展(继承)了AbstractAnnotationConfigDipatcherServletInitializer的类,都会自动配置DipatcherServlet和Spring的应用上下文,Spring的应用上下文会位于应用程序的Servlet上下文中。

      这个类中三个方法:

      String[] getServletMappings()、getRootConfiClasses()、getServletConfigClasses().(后两个返回类,即xxx.class)

     

      5、两个应用上下文(基于Java配置)

      当DipatcherServlet启动时,它会创建Spring应用上下文,并加载配置文件or配置类中所声明的bean。

      在Spring Web应用中,通常会有另外一个应用上下文,这个由ContextLoaderListener(Servlet监听器)创建。

      我们希望DipatcherServlet加载包含web组件的bean,如控制器、试图解析其以及处理及映射,而ContextLoaderListener加载应用中的其它bean,这些bean通常是驱动应用后端的中间层和数据层组件。

      实际上,AbstractAnnotationConfigDipatcherServletInitializer会同时创建DipatcherServlet和ContextLoaderListener。

     

      6、启用Spring MVC

      一,XML配置中,使用<mvc:annotation-driven>启用注解驱动的Spring MVC;

      二,基于Java进行配置,即创建一个Java类进行配置。

     

  • 相关阅读:
    Monte Carlo Primer
    MCCCS Towhee: Pressure
    towhee中计算临界温度和密度- 摘自小木虫
    什么是温度?
    Bennett acceptance ratio
    LAMMPS Polydisperse Packings
    科普 [分子力学总势能(或者LJ势能)能量最小化]
    How to make fix rigid/nvt work compatibly with compute temp/com command, or any other alternative options in non-equilibrium simulations.
    WebDriverWait&expected_conditions
    Selenium自动化测试-unittest单元测试框架使用
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8375744.html
Copyright © 2011-2022 走看看