SpringMVC的配置和执行流程

要想成功的配置和调试springmvc,了解掌握它的执行流程是必不可少的,话不多说,看下图:

我们边说执行边讲配置,首先,想要使用springmvc,依赖是必不可少的,在pom里边加入如下依赖:

<!--spring mvc-json依赖-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.9</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.9</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.9</version>
    </dependency>


      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.16.10</version>
          <scope>provided</scope>
      </dependency>


    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!-- aop**** aspectj 相关  -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.6.12</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.6.12</version>
    </dependency>

  执行流程:

    用户发起一个请求,然后这个请求首先回到springmvc的前端控制器--DispatcherServlet(1),然后这个前端控制器会去调用映射处理器,与前端控制器一起完成对请求界面的拦截。如果成功拦截,呢么就返回一个执行链,返回处理器对象(2、3)。返回到前端控制器。然后前端控制器再将这个处理器对象派发给处理器适配器执行(4),处理器适配器根据判断交给对应的处理器执行(5),得到结果后是一个ViewAndModel,处理器把执行的结果返回给处理器适配器(6),处理器适配器再将ModelAndView返回给总前端控制器(7),前端控制器此时是无法完成界面展示的。它再将这个结果配发给视图解析器(8),视图解析器根据自己配置的前后缀得出完整的url路径,将这个view返回给前端控制器,此时view里边并没有加载数据(9)。所以前端控制器需要将这个view派发给视图,视图将model里边的数据加载到view中,俗称渲染(10)。渲染后,整个view就已经加载处理完毕了,此时返回给前端控制器,前端控制器将其返回给用户(11),一整套流程完毕。

下边我们就根据上述所说的流程一步一步来配置springmvc:

建立工程:

 1、配置前端控制器(在web.xml文件下):

其实这里边的servlet是基于jsp的servlet,功能结构跟servlet也是大同小异,只不过以不同的形式出现罢了,比如init-param就是servlet里边的init方法,会加载一次。其中url-pattern是springmvc的拦截路径。具体的意义就是拦截这个配置的路径下的所有请求,然后将这些拦截的请求送去整个mvc执行流程中去执行,如果没有对应的控制器是会报错的(比如js和bootstrap的依赖),如果有的话就会继续执行。param-value是springmvc的配置文件,根据自己配置的路径进行填写。

  <!-- 配置springvmc的总调度器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

配置完总调度器后,继续去配置映射处理器,这个时候我们需要在resource目录下建立一个springmvc-config的springmvcxml文件。具体建立方法:

建立后配置映射处理器:需要注意的是在此处是可以不配置的,会有默认的配置。一共有两种配置方式。下文注销的呢一种是普通的需要处理器继承Controller接口,因为此种方法比较鸡肋,所以着重讲注解的呢一种。建立完映射处理器后,我们就可以配置自定义处理器了。

 <!-- 开启包扫描-->
    <context:component-scan base-package="com.aaa"></context:component-scan>
<!--配置映射处理器: 负责url的匹配--><!-- 映射处理器和适配器默认有配置-->
   <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>-->
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>

配置自定义处理器:此处,加的@Controller是为了将此类加载到spring容器中。@RequestMapping填写的是对应的请求路经。

modelview构造方法里边填写的是逻辑路径。跟后边视图解析器配合拼接出全部的响应界面路径

@Controller
public class ParaController {

    @RequestMapping(value = "/deptLis",method = RequestMethod.GET )// 请求映射路径
    public ModelAndView list(){
        //通过构造去设置逻辑视图名
        ModelAndView modelAndView=new ModelAndView("dept/list");
        modelAndView.addObject("deptList","模拟部门查询");
         return modelAndView;
    }

配置适配处理器:此处会去寻找我们对应的自定义控制器中去寻找对应的控制器。

<!-- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>-->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>

配置视图解析器:此处看一下我设置的文件路径:

视图解析器就是为了配合逻辑路径来拼接完整的路径。返回数据。

<!-- 配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <!-- 前缀-->
        <property name="prefix" value="/jsp/"></property>
        <!--后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

到此,springmvc配置完毕。

附上完整的配置文件:

<!-- 开启包扫描-->
    <context:component-scan base-package="com.aaa"></context:component-scan>
    <!-- 开启mvc注解驱动 默认情况已经开启了 json于实体的转换-->
  <!--  <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>-->


    <!--配置映射处理器: 负责url的匹配--><!-- 映射处理器和适配器默认有配置-->
   <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>-->
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
  <!-- 配置处理适配器-->
  <!-- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>-->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
    <!-- 配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <!-- 前缀-->
        <property name="prefix" value="/jsp/"></property>
        <!--后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring SpringMVC 简单整合(初学者参考) demo项目对应地址说明 :https://blog.csdn.net/tianyu00/article/details/89186404 SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、 DispatcherServlet调用HandlerAdapter处理器适配器。 5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、 Controller执行完成返回ModelAndView。 7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。 8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。 9、 ViewReslover解析后返回具体View。 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 11、 DispatcherServlet响应用户。 组件说明: 以下组件通常使用框架提供实现: DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。 HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。 HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。 ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值