码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Mvc笔记

时间:2016-04-09 13:43:10      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

Spring Mvc工作流程与模块功能

Spring Web MVC DispatcherServlet 的请求处理的工作流程如下图所示:
技术分享

工作流程

(1)收到一个 HTTP 请求后, DispatcherServlet 根据HandlerMapping来选择并且调用适当的控制器 。
(2)控制器接受请求,并基于使用的 GET 或 POST 方法来调用适当的 service 方法。Service 方法将设置基于定义的业务逻辑的模型数据,并返回视图名称到 DispatcherServlet 中。
(3)DispatcherServlet 会从 ViewResolver 获取帮助,为请求检取定义视图。
(4)一旦确定视图, DispatcherServlet 将把模型数据传递给视图,最后呈现在浏览器中。

模块功能

  • DisapatcherServlet:中央控制器,作为统一的访问点,进行全局的流程控制。
  • HandlerMapping:映射处理器,负责告诉中央控制器调用哪个controller
  • Controller:处理具体的业务并返回视图名称给DispatcherServlet
  • ViewResolver&View:帮助DispatcherServlet检取定义视图
  • Interceptor:拦截器,负责拦截我们定义的请求然后做处理工作 ps: spring mvc struts2等mvc框架运用了前端控制器模式 适配器模式等

初步学习:运用功能

  1. 核心组件: DispatcherServlet Controller handlerMapping(映射处理器,负责映射中央控制器转发给controller时的映射策略) ModelAndView ViewResolver Interceptors
  2. 流程
    2.1 配置web.xml文件
  1. <servlet>
  2. <servlet-name>springmvc</servlet-name>
  3. <servlet-class>
  4. org.springframework.web.servlet.DispatcherServlet
  5. </servlet-class>
  6. <init-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>classpath:springmvc.xml</param-value>
  9. </init-param>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>springmvc</servlet-name>
  13. <!-- struts习惯使用/*,在springmvc不管用 -->
  14. <url-pattern>*.do</url-pattern>
  15. </servlet-mapping>

2.2 配置spring.xml文件

  1. <!-- 一旦有扫描器的定义,mvc:annotation-driven不需要,扫描器中包含驱动-->
  2. <context:component-scan base-package="cn.itcast.controller"/>
  3. <!-- 前缀+ viewName +后缀 -->
  4. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  5. <!-- webroot到某一指定的文件夹的路径 -->
  6. <property name="prefix" value="/WEB-INF/jsp/"/>
  7. <!-- 视图名称的后缀 -->
  8. <property name="suffix" value=".jsp"/>
  9. </bean>

2.3 添加注解

  • 添加注解@controller以此标明是控制器类添加方法
  • 添加@RequestMapping(“/xxx.do”)以此标明访问控制层的方法 @RequestMapping(“/xxxxx”)也可以来在类上声明命名空间

    2.4 模型数据处理

  • 方法的返回值可采用ModelAndView,newModelAndView(“XXX”,map);相当于把结果数据放到request

    • 直接在方法的参数列表中来定义map,这个map即是ModelAndView里面的Map,由视图解析器处理
      (上面两张方法不建议使用)
    • 建议使用:在方法的参数列表中定义Model对象,相当于把结果数据放到request

    2.5 重定向

    • controller内部重定向,redirect:加上同一个controller中的requestMapping的值 return "redirect:homenews-list.do";
    • controller之间的重定向:必须要指定好controller的命名空间再指定requestMapping的值,redirect:后必须要加/,是从根目录开始,例: return "redirect:/homenews/homenews-list.do";

    2.6 拦截器的使用

    • 先spring mvc配置文件里配置:
  1. <!-- 拦截器-->
  2. <mvc:interceptors>
  3. <mvc:interceptor>
  4. <mvc:mapping path="/**/*"/>
  5. <bean class="com.hmaccelerate.interceptors.LoginInterceptor"/>
  6. </mvc:interceptor>
  7. </mvc:interceptors>
  • 然后实现相对于的接口




Spring Mvc笔记

标签:

原文地址:http://www.cnblogs.com/hmaccelerate/p/5371300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!