springmvc学习小结

springmvc原理流程图:

 

第一步:发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求HandlerMapping查找 Handler,可以根据xml配置、注解进行查找,处理器映射器HandlerMapping向前端控制器返回Handler

第三步:前端控制器调用处理器适配器去执行Handler

第四步:处理器适配器去执行Handler

第五步:Handler执行完成给适配器返回ModelAndView,处理器适配器向前端控制器返回ModelAndView

第六步:前端控制器请求视图解析器去进行视图解析,  根据逻辑视图名解析成真正的视图(jsp),视图解析器向前端控制器返回View

第七步:前端控制器进行视图渲染, 视图渲染将模型数据(在ModelAndView对象中)填充到request域,前端控制器向用户响应结果

 

组件

前端控制器DispatcherServlet

作用接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。

在web.xml中配置前端控制器DispatcherServlet

 

 <!-- springmvc前端控制器 -->
  <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- contexttConfigLogLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)
      如果不配置contexttConfigLogLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)
      -->
      <init-param>
         <param-name>contextConfigLocation</param-name>
         
          <param-value>classpath:springmvc.xml</param-value>
      </init-param>
  </servlet>
 
  <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
      <!--
      第一种:*.action,访问以。action结尾由DispatcherServlet进行解析,
      第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析
      使用此种方式可以实现RESTful风格的url
      第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,
      仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错
       -->
      <url-pattern>*.action</url-pattern>
  </servlet-mapping> 

处理器映射器HandlerMapping   

作用:根据请求的url查找Handler   

HandlerMapping根据请求返回一个HandlerExecutionChain,HandlerExecutionChain包括两个类对象,一个处理器Handler,一个处理拦截器HandlerInterceptor。他们根据URL请求信息按不同的策略查找DispatcherServlet上下文中所定义的控制器(Controller),同时也可以在配置HandlerMapping时,注入多个处理器拦截器

例:

访问http://localhost:8080/index首先由DispatcherServlet进行转发,通过BeanNameUrlHandlerMapping(含有/index->HomeAction的配置),找到了HomeAction,然后再拿HomeAction和每个adapter进行适配,由于HomeAction实现了Controller接口,所以最终会有SimpleControllerHandlerAdapter来完成对HomeAction的handlerRequest方法的调度。然后顺利的执行了我们想要的方法。


<span style="font-size:18px;"><!--处理器映射器
    将bean的name作為URL進行查找,需要在配置Handler時指定beanname(就是url)
    所有的映射器都实现HandlerMapping接口
    -->
    <bean
       class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/></span>


处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

<span style="font-size:18px;"><!-- 处理器适配器
    所有处理器适配器都实现HandlerAdapter接口 -->
    <bean
       class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> </span>


处理器Handler(controller)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

 

视图解析器View resolver   

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

<span style="font-size:18px;">    <!-- 视图解析器
    解析jsp解析,默认使用jstl标签,calsspath下的得有jstl的包
     -->
    <bean
       class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name ="prefix"value="/WEB-INF/jsp/"/>
        <property name="suffix"value=".jsp"/>
    </bean> </span>


总结

springmvc很简单,只是其中一些知识不熟悉,一些设计模式不了解,一起来研究吧。


评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值