return "login 和 return "redirect:/user/login.html"的区别

return "login 和 return "redirect:/user/login.html"的区别

在做SSM项目中, 在编写Controller层代码的返回值你可能写过return “login”,或者是 return “redirect:/user/login.html” , 如下代码

@Controller
@RequestMapping("/user")
public class UserController {
    private Logger logger = Logger.getLogger(UserController.class);

    @Resource
    private UserService userService;

    @Resource
    private RoleService roleService;

    // 登录功能
    @RequestMapping(value = "/login.html")
    public String login(){
        logger.debug("UserController welcome SMBMS==================");
        return "login";
    }

    // 登录功能
    @RequestMapping(value = "/dologin.html",method = RequestMethod.POST)
    public String doLogin(@RequestParam String userCode, @RequestParam String userPassword, HttpServletRequest request, HttpSession session){
        logger.debug("doLogin====================================");
        //调用service方法,进行用户匹配
        User user = userService.login(userCode,userPassword);
        //如果用户为空
        if(null == user){
            throw new RuntimeException("用户名不存在!");
        }else if (null != user && !user.getUserPassword().equals(userPassword)){
            throw  new RuntimeException("密码输入错误!");
        }else {
            //放入session
            session.setAttribute(Constants.USER_SESSION, user);
            //页面跳转
            return "redirect:/user/main.html";
        }
    }

    //实现页面跳到首页
    @RequestMapping(value="/main.html")
    public String main(HttpSession session){
        //判断session是否为空
        if(session.getAttribute(Constants.USER_SESSION) == null){
            return "redirect:/user/login.html";
        }
        return "frame";
    }

其实代码可以略过,你只需理解加redirect的意义是什么就行!

第一点
直接使用return "login"会被当成逻辑视图名处理, 这仅仅是进行服务端的页面跳转而已,并非客户端重新发送的url请求。

第二点
若想进行重定向操作,就需要加”redirect“前缀,它的意义在于SpringMVC会为它进行特殊处理,将”redirect“当作指示符,其后的字符串作为URL处理,比如上述代码"redirect:/user/main.html",会让浏览器重新发送一个新的请求/user/main.html,从而进入控制器的main()处理方法中,当然main()方法中也可加入其他的一些业务处理逻辑后再进行页面跳转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值