主要是属性 前缀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="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类中定义了窄化请求,就无法得到窄化请求的路径。