**先补充昨天没有看到的springMVC视图解析器的做用web
主要是属性 前缀prefix 和后缀 suffix。能够在视图解析过程,即在ModelAndView中省略文件前缀名和后缀名spring
**以及组件扫描controller <contxt:component-scan>session
今天主要学习内容:mvc
1.窄化请求app
a)在controller类下,即标注为@controller下添加requestMapping("/a");则访问路径为/a/xx.actionjsp
b)在requestMapping中添加method能够限定请求访问的方式,例如post,get..post
2.Controller返回值学习
a)ModelAndView 我的更喜欢这种方式,只要对modelAndView进行配置,不须要动形参spa
在使用重定向redirect和转发forward时,转发地址是映射地址,即xx.action,不是普通设置的文件地址调试
格式为"forward:xx.action"
b)String 返回值直接为jsp地址,model做为形参,并会传给request.
3.形参绑定
今天使用的我的理解就是在网页端填写的Parameter值做为形参传给Controller,实现对表单值的操做。
形参的几种写法:a)直接写,可是名字要与Parameter的name值保持一致
b)标签写法, (@requestParam value="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类中定义了窄化请求,就没法获得窄化请求的路径。