响应数据和结果视图
返回值分类
1、返回值是字符串
Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器解析为物理视图的地址。

转换为物理视图地址就是实际上执行时访问的地址
图片说明 逻辑地址物理视图地址:
举例示范
jsp页面

controller类中的方法


跳转的成功页面

执行成功

注意:
访问WEB-IND中的pages包中的success.jsp时地址栏并不发生改变

2、无返回值类型
如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到



使用转发来访问成功页面
默认会跳转到该方法的@RequestMapping路径下,如果我们想跳转到成功页面的话,我们可以使用转发来实现,我们要想完成转发,首先需要两个对象,分别是HttpServletRequest 和HttpServletResponse 
测试

执行成功,因为是转发,所以页面地址栏不会发生改变
使用重定向访问成功页面
或者我们使用重定向来实现跳转

访问成功

先不解决乱码问题,后续解决
直接给@RequestMapping的目录下页面输出文字

点击超链接


输出成功
3、返回值为ModelAndView
ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图
SpringMVC框架提供的转发和重定向
1、forward请求转发

首先返回值需要是String,然后返回值固定语法forward:需要转发的路径
2、redirect重定向

ResponseBody响应json数据
我们首先写一个ajax请求

然后点击发送ajax

我们发现并没有hello弹出来,这是因为我们最开始配置的DispatcherServlet配置的拦截路径是/,这表示什么路径都会拦截,这里也包括了我们的静态资源,像js、html、css、图片这些都是静态资源,他都会拦截,这时候我们需要告诉springMVC哪一些资源不拦截
使用如下标签
<!-- 设置静态资源不过滤 -->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
然后我们重新部署项目,再次点击按钮

成功弹出
然后我们编写ajax的js

然后是编写对应url属性的对应路径下的方法

我们通过@RequestBody 这个注解获取到请求体中的内容,请求体中的内容就是我们编写的ajax中的data属性的值
然后重新部署项目,点击ajax请求按钮,后台成功获取到data传入的json数据
并且我们可以很方便的将从ajax的data中获取到的json数据格式的内容,封装为一个对象
首先我们需要导入springMVC执行这个封装操作所需要的依赖坐标
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
并且需要保证ajax传给后天的json字符串中的键值对的键和JavaBean的属性相同

必须确保完全一致,然后我们只需要将原先的string的参数类型改为User类型即可,
然后再次运行
控制台成功输出该对象

说明封装成功。
假设我们根据传入进来的对象信息,然后调用dao层的方法进行了更新数据的操作,然后我们再将我们更新后的对象以josn对象的形式返回给客户端浏览器,我们只需要在返回值User的前面加上@ResponseBody这个注解,然后springMVC就能自己帮我们进行格式转换
然后我们改写新的ajax代码

然后重新部署该代码

依次弹出

成功获取到,json对象,有了springMVC的封装,我们再使用ajax就十分的轻松了

浙公网安备 33010602011771号