SpringMVC

SpringMVC

Spring MVC是目前主流的实现MVC设计模式的框架,相当于Spring的一个子模块。

Spring MVC以Spring Ioc容器为基础,利用容器特性简化它的配置。

MVC模式:即把应用程序分为三层,controller,view和model层。controller接收用户端请求,调用model生成业务数据,传递给view。springMVC就是对这套流程的封装,屏蔽了很多底层的代码,开放出接口,让开发者可以更轻松便捷的完成任务。

 

 

SpringMVC核心组件
  • DispatchServlet:前置控制器,是整个流程控制的核心,控制其他组件的执行,进行统一调度,降低组件之间的耦合性,相当于总指挥。

  • Handler:处理器,完成具体的业务逻辑,相当于Servlet或者Action

  • HandlerMapping:DispatcherServlet接收到请求后,通过HandlerMapping将不同的请求映射到Handler。

  • HandlerInterceptor:处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。

  • HandlerExecutionChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果需要额外设置拦截,可以添加拦截器。)

  • HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作,包括表单数据的验证,数据类型的转换,将表单数据封装到javaBean等。开发者只需要将注意力集中在业务逻辑的处理上.

    DispatcherServlet 通过HandlerAdapter执行不同的handler

  • ModleAndView:装载了模型数据和视图信息,作为handler的处理结果,返回给DispatcherServlet.

  • ViewResolver:视图解析器,DispatcheServlet通过它将逻辑视图解析为物理视图。最终将渲染的结果响应给客户端。

  • SpringMVC流程非常的复杂,实际开发却很简单,因为大部分的组件不需要开发者创建,管理,只需要通过配置文件的方式完成配置接口,真正需要开发者进行处理的只有Handler,View。

    • 创建Maven工程,pom.xml,添加mvc依赖

      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.0.11.RELEASE</version>
        </dependency>
      </dependencies>
      • 在web.xml中配置DispatherServlet

        <!DOCTYPE web-app PUBLIC
         "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
         "http://java.sun.com/dtd/web-app_2_3.dtd" >
        
        <web-app>
        
          <display-name>Archetype Created Web Application</display-name>
        
          <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>
          </servlet>
          <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
        <!--拦截所有请求-->
            <url-pattern>/</url-pattern>
          </servlet-mapping>
        </web-app>

        Handler创建

        package com.soutwind;
        
        import org.springframework.aop.scope.ScopedProxyUtils;
        import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.RequestMapping;
        
        /**
         * @Controller,和@Component类似,将类交给Ioc管理,并多了控制器的功能
         */
        
        @Controller
        
        public class HelloHandler {
            @RequestMapping("/index")//当在浏览器中输入/index时可直接调用index方法。
            public  String index(){
                System.out.println("执行了index..");
                return "index";//return一个视图解析器,调用webapp下的Index.jsp
            }
        
        }

         

posted on 2023-02-10 09:14  张铁蛋666  阅读(14)  评论(0编辑  收藏  举报

导航