用户登录跳转问题

来源:8-5 用户登录接口与界面开发-2

吐槽者

2018-06-23

http://img.mukewang.com/szimg/5b2da7b6000185b815790619.jpg

登录跳转能跳转成功,但是后台报错,看了一下网上搜的,后面加上  return ; 也不行

写回答

9回答

Jimin

2018-06-23

加上那一行就不会有问题了啊,我的意思是你现在实际执行的代码不一定是你现在看到的这样,是可能受之前的缓存的影响。你可以清一下你执行的缓存,不排除可以选择重启电脑和开发工具,尤其是eclipse,经常会出现这类问题。

你最开始出现那个异常,加上return肯定就没问题了。那个异常的根本原因是页面跳转还继续使用了之前的request会和response,加上return就不存在这个问题了。

0
3
吐槽者
非常感谢!
2018-06-26
共3条回复

吐槽者

提问者

2018-06-23

老师的,源码

//img.mukewang.com/szimg/5b2deb04000123be06940930.jpg

0
0

吐槽者

提问者

2018-06-23

//img.mukewang.com/szimg/5b2deac9000173ce12560892.jpg

除了上面标红的,这个真是老师写的

0
0

Jimin

2018-06-23

最新的代码运行应该不会出现你说的那个问题,如果还有,那应该走的是你之前编译的版本,不信你debug试试,return走过之后代码就走不到后面了,不可能出错

0
0

吐槽者

提问者

2018-06-23

这个是我现在改的,跟源码是一致的,而且加了个 return  ;

不行的

@RequestMapping("/login.page")

public void login(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {

String username=request.getParameter("username");

String password=request.getParameter("password");

SysUser sysUser=sysUserService.findByKeyword(username);

String errorMsg="";

String ret=request.getParameter("ret");

if(StringUtils.isBlank(username)){

errorMsg="用户名不可以为空";

}else if (StringUtils.isBlank(password)) {

errorMsg="密码不可以为空";

}else if(sysUser==null){

errorMsg="查询不到指定的用户";

}else if(!sysUser.getPassword().equals(MD5Util.encrypt(password))){

errorMsg="用户名或密码错误";

}else if(sysUser.getStatus() !=1){

errorMsg="用户已被冻结,请联系管理员";

}else {

//login success

request.getSession().setAttribute("user", sysUser);

System.out.println("---ret1----"+ret);

if(StringUtils.isNotBlank(ret)){

response.sendRedirect(ret);

}else{

response.sendRedirect("/admin/index.page"); //TODO

}

return;

}

//返回页面数据

request.setAttribute("error", errorMsg);

request.setAttribute("username", username);

if(StringUtils.isNoneBlank(ret)){

request.setAttribute("ret", ret);

}

String path="signin.jsp";

request.getRequestDispatcher(path).forward(request, response);

}


0
2
吐槽者
回复
Jimin
我自己就多加了这一句,好像跟这个没关系吧,你要看我的和你的源码是不是一致啊。。
2018-06-23
共2条回复

吐槽者

提问者

2018-06-23

老师这个是你的源码

package com.mmall.controller;


import com.mmall.model.SysUser;

import com.mmall.service.SysUserService;

import com.mmall.util.MD5Util;

import org.apache.commons.lang3.StringUtils;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;


import javax.annotation.Resource;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;


@Controller

public class UserController {


    @Resource

    private SysUserService sysUserService;


    @RequestMapping("/logout.page")

    public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        request.getSession().invalidate();

        String path = "signin.jsp";

        response.sendRedirect(path);

    }


    @RequestMapping("/login.page")

    public void login(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        String username = request.getParameter("username");

        String password = request.getParameter("password");


        SysUser sysUser = sysUserService.findByKeyword(username);

        String errorMsg = "";

        String ret = request.getParameter("ret");


        if (StringUtils.isBlank(username)) {

            errorMsg = "用户名不可以为空";

        } else if (StringUtils.isBlank(password)) {

            errorMsg = "密码不可以为空";

        } else if (sysUser == null) {

            errorMsg = "查询不到指定的用户";

        } else if (!sysUser.getPassword().equals(MD5Util.encrypt(password))) {

            errorMsg = "用户名或密码错误";

        } else if (sysUser.getStatus() != 1) {

            errorMsg = "用户已被冻结,请联系管理员";

        } else {

            // login success

            request.getSession().setAttribute("user", sysUser);

            if (StringUtils.isNotBlank(ret)) {

                response.sendRedirect(ret);

            } else {

                response.sendRedirect("/admin/index.page"); //TODO

            }

        }


        request.setAttribute("error", errorMsg);

        request.setAttribute("username", username);

        if (StringUtils.isNotBlank(ret)) {

            request.setAttribute("ret", ret);

        }

        String path = "signin.jsp";

        request.getRequestDispatcher(path).forward(request, response);

    }

}


0
4
吐槽者
回复
Jimin
好吧,不过我确实是试过了,老师你那边是没问题吗?
2018-06-23
共4条回复

Jimin

2018-06-23

if(StringUtils.isNotBlank(ret)){
response.sendRedirect(ret);
}else{
response.sendRedirect("/admin/index.page"); //TODO
}
return;
}

0
2
Jimin
回复
吐槽者
你这里括号有点多,你注意一下添加return相对括号的位置。 理论上,走完跳转代码,再走return就不会遇到这个异常了
2018-06-23
共2条回复

吐槽者

提问者

2018-06-23

package com.mmall.controller;


import java.io.IOException;


import javax.annotation.Resource;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.apache.commons.lang3.StringUtils;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;


import com.mmall.model.SysUser;

import com.mmall.service.SysUserService;

import com.mmall.util.MD5Util;


@Controller

public class UserController {

@Resource

private SysUserService sysUserService;

@RequestMapping("/login.page")

public void login(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {

String username=request.getParameter("username");

String password=request.getParameter("password");

SysUser sysUser=sysUserService.findByKeyword(username);

String errorMsg="";

String ret=request.getParameter("ret");

if(StringUtils.isBlank(username)){

errorMsg="用户名不可以为空";

}else if (StringUtils.isBlank(password)) {

errorMsg="密码不可以为空";

}else if(sysUser==null){

errorMsg="查询不到指定的用户";

}else if(!sysUser.getPassword().equals(MD5Util.encrypt(password))){

errorMsg="用户名或密码错误";

}else if(sysUser.getStatus() !=1){

errorMsg="用户已被冻结,请联系管理员";

}else {

//login success

request.getSession().setAttribute("user", sysUser);

System.out.println("---ret1----"+ret);

if(StringUtils.isNotBlank(ret)){

response.sendRedirect(ret);

}else{

response.sendRedirect("/admin/index.page"); //TODO

}

}

//返回页面数据

request.setAttribute("error", errorMsg);

request.setAttribute("username", username);

if(StringUtils.isNoneBlank(ret)){

request.setAttribute("ret", ret);

}

String path="signin.jsp";

request.getRequestDispatcher(path).forward(request, response);

return ;

}

}


0
0

Jimin

2018-06-23

你把登录那个方法的代码贴一下看看

0
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2264 学习 · 1347 问题

查看课程