开发者社区 问答 正文

java重定向与转发的问题

最近在做一个论坛的小项目,用户登录后会返回论坛主页面,并由游客身份变为普通用户。登录页面存放在论坛页面中,框架使用的是spring MVC ,在用户提交登录信息后,后台验证完毕向论坛主页面返回登录的用户信息。这里如果使用重定向的话,数据不能返回到主页面,所有改成了转发。但是使用转发存在用户提交完数据后点浏览器刷新或点后退之后产生重复提交的问题,怎么解决这个问题?
相关代码

@RequestMapping("/login.do")
public String checkLogin(String code,String pwd,ModelMap data){
    
    System.out.println("admincode="+code+",pwd="+pwd);
    try {
            User user = service.checkLogin(code, pwd);
        
    } catch (Exception e) {
        e.printStackTrace();
        if(e instanceof ApplicationException){
            data.addAttribute("msg",e.getMessage());
            data.addAttribute("code", code);
            return "main";
        }else{
            return "error";
        }
    }
    data.addAttribute("username", code);
    return "main";
}

这里采用的是转发的方式。将用户名返回给主页面。但是刷新页面或后退会产生重复提交,这样的话不是应该使用重定向来防止这样的问题么。但是重定向没办法返回数据,所以应该使用session来存放用户的登录信息返回给主页面,对么?

展开
收起
蛮大人123 2016-03-10 17:53:27 2270 分享 版权
2 条回答
写回答
取消 提交回答
  • 您 所说的应该是web编程这一块吧。 重定向是redirect,通过响应客户端301或302 status,由客户端重新发起请求。而转发是服务端内部的动作。
    2019-07-17 18:58:04
    赞同 展开评论
  • 我说我不帅他们就打我,还说我虚伪

    登录成功之后用户信息不是应该放到session吗,没必要通过request进行传递,你这里最好还是使用重定向,而非转发,重定向之后获取用户名可以通过session获取

    2019-07-17 18:58:04
    赞同 展开评论
问答分类:
问答标签:
问答地址: