springmvc中转发与重定向

11 篇文章 0 订阅

在Spring MVC中,处理请求时,默认返回的View组件的名称,是按照转发进行处理的!如果需要重定向,则在组件名的左侧添加‘redirect:’即可,例如:

        return "redirect:login.do";

注意:如果是转发,‘return’的是组件的名称,可以结合配置得前缀和后缀找到某个jsp页面,如果是重定向, 'return'的‘redirect:’右侧是请求路径,也就是体现在'@RequestMapping'中配置的那些路径格式!





# 向前端页面提供数据

## 【不推荐】通过HttpServletRequest转发


在处理请求的方法中,添加`HttpServletRequest`参数,然后调用参数的`setAttribute(String name, Object data)`方法以封装需要转发的数据,如果有多条数据,则调用多次即可:

request.setAttribute("username", username);

在Spring MVC中,并不需要调用`getRequestDispatcher("").forward(req, resp)`语句,因为Spring MVC默认处理方式就是转发!

## 【不常用】通过ModelAndView转发数据

在`ModelAndView`中,`Model`表示的就是转发的数据,可以通过`ModelAndView(String viewName, Map<String, ?> model)`构造方法封装`Model`,而这里`Model`的类型就是`Map<String, Object>`,例如:

public ModelAndView handleReg(
String username, String password, String age) {
// 封装需要转发的数据
Map<String, Object> model
= new HashMap<String, Object>();
model.put("username", username);
model.put("password", password);
// 创建返回的对象
ModelAndView mav
= new ModelAndView("error", model);
// 执行返回
return mav;
}

## 【推荐】通过ModelMap转发数据

在处理请求的方法中,添加`ModelMap`类型的参数,当需要转发数据时,调用它的`addAttribute(String name, Object value)`方法即可封装数据,如果需要封装多条数据,则多次调用该方法即可:

public String handleReg(
String username, String password, String age,
ModelMap modelMap) {
// 转发数据:直接向参数modelMap中封装数据
modelMap.addAttribute("username", username);

// 返回
return "error";
}


## 把前端页面所需的数据放在HttpSession中

通常会把当前访问的用户的唯一标识(例如用户的ID或用户名、邮箱等)和使用频率较高的数据(例如用户名、昵称、头像)存储在Session中!

使用Session的方式可以完全参考使用`ModelMap`。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值