String类型
String类型的响应是最常用的方式,直接返回一个视图名称,然后通过视图解析器进行解析,返回相应的视图,示例如下:
这个是前面写的一个demo,直接返回“success”,然后去看一下视图解析器
可以看到,对String返回类型,视图解析器对前缀和后缀进行了定义,我们到/WEB-INF/pages/下面去找对应的视图
确实在指定路径下有success.jsp视图
void类型
如果我们返回void类型,会出现什么情况?
这里先给出结论,如果是void类型,SpringMVC会默认去视图解析器指定路径下找RequestMapping定义的同名视图,示例如下:
先定义一个路由
访问该路由
可以看到默认确实是去找了同名视图,其实返回void类型,我们可以通过request进行转发,或者使用response进行重定向,可以达到相同的跳转效果
request转发
SpringMVC获取request的方法前面也已经讲过了,转发同样用到response,直接在参数中标明即可:
直接写一段转发逻辑,转到我们的success页面
成功跳转到了成功页面,而且url不变,表示是一次请求,服务器端的行为
Response重定向
同理,我们来测试void类型下的重定向,示例如下:
这里没有去尝试跳转到success界面的原因,就是WEB-INF下的所有资源对外不可访问,只能由服务器内部来获取,所以这里无法跳转到该目录下面
ModelAndView类型
ModelAndView和第一种String跳转的方式都差不多,也是通过视图解析器来进行的,示例如下:
通过ModelAndView返回值跳转,还可以在model中添加参数,添加参数是往request域中添加,我们在success中打印requestSocpe来进行验证:
返回成功页面
RespnoseBody响应
使用@ResponseBody实现将返回值以json的形式返回给客户端,先来完成一下前端页面,这里直接在index中添加js内容
引入jquery
链接:https://pan.baidu.com/s/1WMUJJV_DNxCIgvptiuOnhQ
提取码:12yv
测试jquery的引入,这里需要注意,由于前端控制器会以“/”来进行匹配,“/”会拦截所有的请求除了jsp,所以客户端在获取jquery资源的时候也会被拦截,所以我们要取消对静态资源的拦截,需要设置resources为资源目录,否则部署后不可见
配置完后就可以测试jquery是否引入成功,如果成功,我们就假定给服务器端发送一个json信息,然后服务器端也会响应一个json
测试结果: