首页 > 代码库 > SSM整合第二天

SSM整合第二天

  **先补充昨天没有看到的springMVC视图解析器的作用

    主要是属性 前缀prefix 和后缀 suffix。可以在视图解析过程,即在ModelAndView中省略文件前缀名和后缀名

  **以及组件扫描controller <contxt:component-scan>

  

  今天主要学习内容:

  1.窄化请求

      a)在controller类下,即标注为@controller下添加requestMapping("/a");则访问路径为/a/xx.action

      b)在requestMapping中添加method可以限定请求访问的方式,例如post,get..

   2.Controller返回值

      a)ModelAndView 个人更喜欢这种方式,只要对modelAndView进行配置,不需要动形参

        在使用重定向redirect和转发forward时,转发地址是映射地址,即xx.action,不是普通设置的文件地址

        格式为"forward:xx.action"

      b)String 返回值直接为jsp地址,model作为形参,并会传给request.

   3.形参绑定

      今天使用的个人理解就是在网页端填写的Parameter值作为形参传给Controller,实现对表单值的操作。

      形参的几种写法:a)直接写,但是名字要与Parameter的name值保持一致

              b)标签写法, (@requestParam value="http://www.mamicode.com/name值")

              当形参为pojo对象时,也保持与name值一致

      然后默认几种类型 HttpServletRequest,HttpServletResponse,session,Model..

   4.自定义参数的绑定

      因为有用到参数类型为Date的属性,而网页中提交的text是字符串String类型,所以需要在SpringMVC的处理器适配器中注册转换器

      具体注册转换器方法:

      1)在适配器上注册转换器

      <mvc:annotation-driven conversion-service="conversionService">

      2)在bean中创建转换器对象

      <!-- 自定义参数绑定 -->
        <bean id="conversionService"  class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <!-- 转换器 -->
        <property name="converters">
         <list>
         <bean class="controller.converter.CustomDateConverter"/>
         </list>
        </property>
        </bean>

      3)写实现类,继承org.springframework.core.convert.converter.Converter

      在这里也复习了下SimpleDateFormat和parase方法(都快忘了)

 

      今天遇到的问题:

    1.在形参传入的时候,不管怎么调试,发现表单提交后的那个页面controller方法里传入的形参一直为Null,在查找后已经解决。检查表单中配置是否有 enctype="multipart/form-data" ,原理是它会让数据已二进制传递,所以表现为null。

    2.在controller中ModelAndView setViewName方法里实现foward转发和Redirct重定向时,其中转发的目标是映射器的映射即action,不是jsp文件!!!并且不能有/,有/意味着是在web工程下,特别是在Controller类中定义了窄化请求,就无法得到窄化请求的路径。

      

SSM整合第二天