返回自定义类型对象
返回自定义类型对象时,不能以对象的形式直接返回给客户端浏览器,而是将对象转换为JSON 格式的数据发送给浏览器的。
由于转换器底层使用了Jackson 转换方式将对象转换为JSON 数据,所以需要导入Jackson 的相关Jar 包。
项目:returnObject-custom。在 returnVoid-ajax 基础上进行修改。
Step1:定义数据类
Step2:修改处理器 MyController
Step3:修改index 页面
返回 List 集合
项目:returnObject-list。在 returnObject-custom 基础上进行修改。
Step1:修改处理器 MyController
Step2:修改index 页面
返回字符串对象
若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符串即可。但若返回的字符串中带有中文字符,则接收方页面将会出现乱码。此时需要使用@RequestMapping 的produces 属性指定字符集。
produces,产品,结果,即该属性用于设置输出结果类型。
项目:returnObject-String。直接修改处理器。
修改页面:
解读
配置详解
(1) *.do
在没有特殊要求的情况下,SpringMVC 的中央调度器DispatcherServlet 的常使用后辍匹配方式,如写为*.do 或者 *.action, *.mvc 等。
(2) /
可以写为/,因为DispatcherServlet 会将向静态资源的获取请求,例
如.css、.js、.jpg、.png 等资源的获取请求,当作是一个普通的 Controller 请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的,所以在这种情况下,所有的静态资源获取请求也均会报 404 错误。
项目:url-pattern。在项目primary-annotation 基础上进行修改。
需求:在index.jsp 页面中存在一个访问图片的链接。该项目用于演示将写为*.do 可以访问到该图片,而写为/,则无法访问。
A、 在项目中添加图片
在项目的WebRoot 下添加一个目录images,并在其中添加一张图片资源。
B、 修改index 页面
C、 修改的值
保持的值为 *.do,扩展名方式,图片会正常显示。将的值修改为 / ,则图片将无法显示。
静态资源访问
的值并不是说写为/后,静态资源就无法访问了。经过一些配置后,该问题也是可以解决的。
(1) 使用mvc:default-servlet-handler/
声明了<mvc:default-servlet-handler />后,springmvc 框架会在容器中创建DefaultServletHttpRequestHandler 处理器对象。它会像一个检查员, 对进入DispatcherServlet 的URL 进行筛查,如果发现是静态资源的请求,就将该请求转由Web 应用服务器默认的 Servlet 处理。一般的服务器都有默认的Servlet。
在 Tomcat 中,有一个专门用于处理静态资源访问的 Servlet 名叫DefaultServlet。其为 default。可以处理各种静态资源访问请求。该 Servlet 注册在 Tomcat 服务器的web.xml 中。在 Tomcat 安装目录/conf/web.xml。
项目:url-pattern-2。在项目url-pattern 基础上修改。
只需要在springmvc.xml 中添加mvc:default-servlet-handler/标签即可。
mvc:default-servlet-handler/表示使用DefaultServletHttpRequestHandler 处理器对象。而该处理器调用了 Tomcat 的DefaultServlet 来处理静态资源的访问请求。
当然了,要想使用<mvc: …/>标签,需要引入 mvc 约束
该约束可从 Spring 帮助文档中搜索关键字spring-mvc.xsd 即可获取:
docs/spring-framework-reference/htmlsingle/index.html
(2) 使用mvc:resources/(掌握)
项目:url-pattern-3。在项目url-pattern 基础上修改。
在 Spring3.0 版本后,Spring 定义了专门用于处理静态资源访问请求的处理器ResourceHttpRequestHandler。并且添加了mvc:resources/标签, 专门用于解决静态资源无法访问问题。需要在springmvc 配置文件中添加如下形式的配置:
location 表示静态资源所在目录。当然,目录不要使用/WEB-INF/及其子目录。
mapping 表示对该资源的请求(以 /images/开始的请求,如 /image/beauty.jpg ,,/images/car.png 等)。注意,后面是两个星号**。
(3) 声明注解驱动
解决动态资源和静态资源冲突的问题,在springmvc 配置文件加入: