• Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView


    1、前端控制器org.springframework.web.servlet.DispatcherServlet

        所有的请求驱动都围绕这个DispatcherServlet来分派请求。springMVC框架默认有一个DispatcherServlet.properties文件,用于配置框架默认的处理器映射器、处理器适配器、视图解析器等。

    2、spring mvc应用的开发步骤

       1》在web.xml中定义DispatcherServlet拦截用户的请求。

       2》定义处理用户请求的Handle类,可以实现Controller接口或者MultiController接口或者使用@Controller注解。

       3》配置Handle。

       4》编写View。

    3、基于注解的开发方式

       1》@Controller:修饰的是控制器。基于注解的控制器不需要实现任何接口或父类,且基于实现Controller接口的实现类只能处理单一的请求动作(即handleRequest()方法)。为了让spring能够找到控制器需要做两件事:

            1>在spring配置文件中引入spring-context。

            2>使用<context:component-scan.../>元素,启动自动扫描@Controller、@Service、@repository、@Component等注解组成的spring bean。base-package属性用于指定扫描包及其子包。

    <context:component-scan base-package="com.lfy.controller"/>

       2》@RequestMapping:修饰的是处理器,支持的属性有

          1>value属性:@RequeatMapping映射一个请求和一种方法。可以注释一个方法或类。

          2>method属性:用于指定仅仅处理哪种类型请求。没有指定则,可以处理任意http请求。

          3>consumes属性:指定处理请求的提交内容类型(Content-Type)。

          4>produces属性:指定返回的内容类型。返回的内容类型必须是request请求头(Accept)中所包含的类型。

          5>params属性:指定request中必须包含某些参数值时,才让该方法处理。如:仅处理某请求参数a,且其值为v的请求。

          6>headers属性:指定request中必须包含某些指定的header值,才让此方法处理。

       3》Spring MVC中参数绑定的常用注解有:

           1>处理request body部分的注解:@RequestParam、@RequestBody

           2>处理request uri部分的注解:@PathVariable

           3>处理request header部分的注解:@RequestHeader、@CookieValue

           4>处理attribute类型的注解:@SessionAttributes、@ModelAttribute

    4、请求处理方法(即Controller中的方法)可出现的参数类型

         

       org.springframework.ui.Model类型,不是Servlet API类型,而是一个spring mvc类型,其中包含了Map对象来存储数据。如果方法中添加了Model参数,则每次调用请求处理方法时,spring mvc都会创建Model对象,并将其作为参数传递给方法。

    5、请求处理方法(即Controller中的方法)可返回的类型

       

     6、Spring MVC的输出模型数据

         

    7、Model和ModelMap

       spring MVC在调用处理方法之前创建一个隐含的模型对象,作为模型数据的存储容器。如果处理方法的参数为Model或ModelMap类型,则spring MVC会将传递给这些参数。

       在处理方法内部,开发者就可以通过这个参数对象访问模型中的所有数据,也可以向模型中添加新的属性数据。Model和ModelMap可以通过如下方法对模型添加数据:

         addObject(String attributeName,Object attributeValue);(---可能笔误,应该为addAttribute(...))

    //使用@ModelAttribute修饰的方法,当某处理方法的参数由Model或ModelMap时,
    //该被修饰的方法先于处理方法执行。可以给Model或ModelMap使用如下方法增加对象
    //前提被@ModelAttribute修饰的方法的参数中要有Model或ModelMap
    model.addAttribute(key,Object)或者
    modelmap.addAttribute(key,Object)
    //处理方法中,取Model或ModelMap中的参数
    (某个实现类)model.asMap.get(key)或者
    (某个实现类)modelMap.get(key)

    8、ModelAndView

    //在处理方法中获取模型数据使用如下方式
    modelandview.getModel().get(key);
    //在处理方法中,可以通过如下方法
    添加模型数据 addObject(String attributeName,Object attributeValue); //可以通过如下方法设置视图 setViewName(String viewName);
  • 相关阅读:
    把eclipse 3.4的插件移动到独立目录中
    Crest大家都来山寨一个GObject吧
    c# 扩展方法奇思妙用性能篇一:扩展方法性能初测
    [幽默]今天看了几页c语言入门,想写个ERP, 帮我看看 技术上还差些什么?
    c# 扩展方法奇思妙用高级篇一:改进 Scottgu 的 "In" 扩展
    [个人]我的积分与排名日志
    反驳 老赵 之 “伪”递归
    c# 扩展方法奇思妙用变态篇一:由 Fibonacci 数列引出 “委托扩展” 及 “递推递归委托”
    c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
    瑞士军刀 VS 单一职责原则
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11388030.html
Copyright © 2020-2023  润新知