中央调度器,处理请求方式:当使用“/”时
不能处理静态资源
解决:
使用Tomcat默认Servlet
或者其他应用服务器
第二种方法:
一般使用:
静态资源处理方式:
不放在WEB-INF下,可以不被外部访问到
使用注解方法时,
此时,不能加载静态资源
但是能点击some.do
使用先前说好的方法处理:
使用标签:
可以正常访问图片
但是点击访问some.do出错:
原因:
此Resource标签
与RequestMapping冲突。
解决方式:
再加一个注解驱动标签:
当RequestMapping下的参数与传入的参数name不匹配的时候,怎么正常正确赋值?
此时,正常使用!
但是,还有个问题:
当访问RequestMapping的路径,不带参数时:
原因:
逐个接受,参数过多时,太麻烦
可以使用对象方式接收:
创建一个对象
尝试访问:
再看它的执行顺序
说明,再执行方法之前,先调用了无参构造方法,和属性的set方法
可以同时传入多个对象和属性
处理器方法的返回值:
又要处理数据,又要指定视图:ModelAndView
只返回指定视图:String
视图解析器:
前端页面:
自定义的处理器
没有返回数据,因为处理器只返回了指定视图,没有返回结果数据。
解决办法:
当处理器返回视图为完整路径时:
此时,若是继续使用视图解析器:
能接收参数,但是没法返回页面
返回值为Void:
前端页面:
尝试访问:
由前端的type定义
接收时修改为:
如果不加datatype时
*/*表示任意格式
响应中:
没有将返回的json当成一个对象使用
当
也就是说
定义了datatype后,就是把返回的json当成一个对象来处理
不定义datatype时,返回结果照原始的样式输出
原始数据为:
返回对象:
一般用在ajax请求中。
对象的转换和输出:
将对象转化为json:
请求中的数据:
接收的对象:
调用,看是否能够将mediaType数据转化为需要的类型
如果能转化,
将inputMessage转化为clazz对象。
输出的时候:
校验时候可以将给定的对象转化为mediaType类型
将对象t,按照contentType输出给outputMessage
看下MediaType:
它的属性:
对应表单数据:
对应json
对应二进制:
等:
消息转换器:
有不同的实现类:需要的时候,找到对应的就行
默认加载4中实现类,并没有处理json的实现类
我们使用的时候,
创建7个实现类
具体使用示例:
json工具库:
声明注解驱动:
视图解析器,可用可不用,和它没关系
此时前端:
此时请求的数据时json
而我们响应的是字符串
出错。
修改为:不请求json数据
在响应头中
可能存在乱码。
和以上代码对应:
对应
对应
解决方式:
其中:
produces中
“;”之前为数据格式。
text为:文本数据,表示大类型
plain:输出的没有标签等
如果:
表示:输出文本中可能包换html标签。
不管是plain还是html,都属于text。
为什么默认为iso-8859-1?
如果接口中有返回值,使用HttpMessageConverter中的write方法
实现类执行:
返回自定义对象:
也就是说,框架将返回的对象,转化为json对象,使用utf8编码。
若是改为:
当返回值为自定义类时:
框架中使用的消息转换类
返回值为List集合:
得到的是个json数组。