SpringMVC学习笔记一:基本概念,执行流程与开发步骤

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6831328.html 

一:基本概念

DispatcherServlet:前端控制器,负责把请求分发处理。

HandlerAdapter:DispatcherServlet是由handler类处理请求。HandlerAdapter是基于适配器模式创建的适配器,其实也是一个handler。DispatcherServlet不直接使用handler,而是选择一个HandlerAdapter来调用handler类中的方法。

HandlerInterceptor:拦截器接口,实现该接口来定义controller调用前、后的拦截处理。

HandlerMapping:由请求,映射得到处理该请求的handler。由HandlerMapping创建出HandlerAdapter/handler,从而dispacherservlet就可以使用handler/handleradapter来处理请求了。

HandlerExecutionChain:handler的执行链,显示了请求handler的执行过程:拦截器中的preHandle --> controller method --> 拦截器的postHandle --> 拦截器的afterCompletion。其实现原理是:Java反射调用

ModelAndView:作为一个数据容器以及视图容器,存储请求中的参数、请求处理过程中的结果数据(model),并且可以通过设置view来控制请求处理完后的视图响应。

ViewResolver:视图解析器,由ModelAndView中的视图名,解析得到视图文件完整的路径,从而得到用于响应的视图对象。

HandlerExceptionResolver:异常解析器,捕捉handler中的异常生成错误信息返回DispatcherServlet。

View:负责呈现给用户的视图。

二:执行流程

1:请求到达服务器,经过一系列filter后,到达DispatcherServlet。

2:DispatcherServlet获取请求后,由HandlerMapping得到处理该请求的handler、拦截器信息,并由这些信息形成一条HandlerExecutionChain,创建出一个handler,返回给DispatcherServlet使用。

3:DispatcherServlet选择一个handlerAdapter来执行handler,得到处理结果ModelAndView以及错误信息等,返回给DispatcherServlet。

4:DispatcherServlet把ModelAndView以及错误信息传递给视图解析器,由视图解析器解析、渲染得到要呈现的视图对象View,并返回给DispatcherServlet。

5:DispatcherServlet通过response把视图对象view返回客户端呈现。

三:开发步骤

1:在web.xml中配置前端控制器DispatcherServlet:主要有:配置DispatcherServlet、通过参数配置springMVC的配置文件的路径、配置拦截请求类型。

2:实现controller接口或通过@Controller注解定义处理请求的handler类,在其中实现处理请求的方法,并通过注解的方式来配置请求方法、进行数据绑定、验证等等。

3:修改springMVC的配置文件,此文件用于生成DispatcherServlet上下文,主要用于控制整个框架的基础设置。

    XXX-servlet.xml:文件名是由上面web.xml中<servlet-name>XXX</servlet-name>),再加上“-servlet”后缀而形成的。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"     
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"     
        xmlns:context="http://www.springframework.org/schema/context"     
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
       http://www.springframework.org/schema/context <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a>">

    <!-- 启用spring mvc 注解 -->
    <context:annotation-config />

    <!-- 设置使用注解实现的handler类所在的jar包,springMVC会自动扫描这个包下的handler类以及handle方法 -->
    <context:component-scan base-package="controller"></context:component-scan>
  
    <!-- 视图解析器配置:prefix:前缀, suffix:后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" />

......还有其他按需装配的组件
</beans> 
    <!-- 对静态资源文件的访问-->//对静态资源请求的url,到哪个相对路径下去寻找同名静态文件
    <mvc:resources mapping="/css/**"  location="/css/" />
    <mvc:resources mapping="/js/**"  location="/js/" /> 
    <mvc:resources mapping="/favicon.ico"  location="favicon.ico" /> --> 

4:编写视图文件。

原文地址:https://www.cnblogs.com/ygj0930/p/6831328.html