SpringMVC高能笔记,SpringMVC中处理器方法

238 阅读3分钟

返回自定义类型对象

返回自定义类型对象时,不能以对象的形式直接返回给客户端浏览器,而是将对象转换为JSON 格式的数据发送给浏览器的。

由于转换器底层使用了Jackson 转换方式将对象转换为JSON 数据,所以需要导入Jackson 的相关Jar 包。

项目:returnObject-custom。在 returnVoid-ajax 基础上进行修改。

Step1:定义数据类

image.png

Step2:修改处理器 MyController

image.png

Step3:修改index 页面

image.png

返回 List 集合

项目:returnObject-list。在 returnObject-custom 基础上进行修改。

Step1:修改处理器 MyController

image.png

Step2:修改index 页面

image.png

返回字符串对象

若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符串即可。但若返回的字符串中带有中文字符,则接收方页面将会出现乱码。此时需要使用@RequestMapping 的produces 属性指定字符集。

produces,产品,结果,即该属性用于设置输出结果类型。

项目:returnObject-String。直接修改处理器。

image.png

修改页面:

image.png

解读

配置详解

(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,并在其中添加一张图片资源。

image.png

B、 修改index 页面

image.png

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。

image.png

项目:url-pattern-2。在项目url-pattern 基础上修改。

只需要在springmvc.xml 中添加mvc:default-servlet-handler/标签即可。

image.png

mvc:default-servlet-handler/表示使用DefaultServletHttpRequestHandler 处理器对象。而该处理器调用了 Tomcat 的DefaultServlet 来处理静态资源的访问请求。

当然了,要想使用<mvc: …/>标签,需要引入 mvc 约束

image.png

该约束可从 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 配置文件中添加如下形式的配置:

image.png

location 表示静态资源所在目录。当然,目录不要使用/WEB-INF/及其子目录。

mapping 表示对该资源的请求(以 /images/开始的请求,如 /image/beauty.jpg ,,/images/car.png 等)。注意,后面是两个星号**。

(3) 声明注解驱动

解决动态资源和静态资源冲突的问题,在springmvc 配置文件加入:

image.png