springMVCcontroller返回值类型

controller的返回值可以有三种类型

1,String,返回的string默认为逻辑视图的名称,视图解析器会根据逻辑视图名称找物理视图

string的跳转方式为请求转发,
(1)服务器认为只发送一次请求
(2)跳转的地址不发生改变
(3)只能访问同一个项目下面的URL
(4)效率相对高
(5)转发是服务器行为,重定向是客户端行为
(6)请求转发可以传递数据

2,返回值是void类型,当返回值时void类型

默认返回请求URL/方法名.jsp
会报错404找不到页面
我试了一下给结尾加上了一个占位符,请求跳转到了占位符.jsp

这时候要使用servletAPI的request或者response做请求转发重定向,或者直接作出响应给浏览器
后面可以加上return;加上之后之后的代码不再执行
(1),请求转发,ps:
request.getRequestDispatcher("/jsp/success.jsp").forward(request,response)
这里的URL要写上前面的路径,因为自己做调转,视图解析器不起作用
(2),重定向,ps:
response.sendRedirect(request.getContextPath()+"/success.jsp")
这里是之所以要获取项目路径,是因为重定向重新发送了请求,所以要加上request.getContextPath()
另外若果跳转的页面在web_inf下面,不能直接重定向
web_inf下面的资源都是不可以直接访问的

(3),直接对浏览器作出反应

ps:
response.setContentType(“text/html;charset=utf-8”);
response.getWriter().print(“哈哈哈哈哈哈!”)

3,返回类型为ModelAndView,springMVC提供的一个对象,代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念,(引用其他博主的话)可以用来指定返回的具体页面还可以存值,

@RequestMapping("/view")
public ModelAndView modelAndView(){
ModelAndView mv=new ModelAndView();
System.out.println(“返回值为ModelAndView类型”);
mv.setViewName(“success”);
mv.addObject(“aaa”,“zwp”);
return mv;
}

在string类型的返回值中除了直接返回逻辑视图名称还可以使用 
SpringMVC框架提供的转发和重定向forward,redirect关键字

这里使用和在void是差别的,这里和servletAPI并不相关,降低程序之间的耦合性
用法:

return “forward:/jsp/success.jsp”
return “forward:/jsp/success.jsp”
这里请求转发还是要写实际URL,但是重定向不用加项目名,SpringMVC已经给我们自动加上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值