为什么无法跳转到管理员页面

我在登录的Controller类里登录时,进行了判断,当判断获取到的用户名为admin时,就
跳转到管理员页面,否则才跳转到主页面,可是为什么我即使输入管理员账号也会跳转到
主页面去了?

 /**
 * 
 *用户控制器类 
 *
 */
@Controller
public class UserController {
    //依赖注入
    @Autowired
    private UserService userService;
    /**
     * 用户登录
     */
    @RequestMapping(value = "/login.action", method = RequestMethod.POST)
    public String login(String user_name, String user_password, Model model,
            HttpSession session){
        //通过用户名与密码查询用户
        User user = userService.findUser(user_name, user_password);
        if(user != null){
            if(user.getUser_name().toString() == "admin"){
                //将用户对象添加到Session
                session.setAttribute("USER_SESSION", user);
                //跳转到管理员页面
                return "admin";
            } else {
                //将用户对象添加到Session
                session.setAttribute("USER_SESSION", user);
                //跳转到主页面
                return "redirect:main/list.action";
            }
        }
        model.addAttribute("msg", "账号或者密码错误,请重新输入!");
        //返回到登录页面
        return "login";
    }
    }

11个回答

不能用==来判断字符串,整型才可以用==

字符串判断应该使用**equals**方法, 应该为"admin".equals(user.getUser_name().toString() )。等号对比的是两个变量的地址是否相同,equals则为对比字符串内容是否相同
望采纳

==比较的是对象,equals比较的是内容

已解决,我在用户表里加了个整型变量判断是否为管理员,登录判断时判断这个整型字段就可以了,之前不行,是因为字段为String型,所以不能用==来比较的关系把

if(user.getUser_name().toString() == "admin") 在判断的时候是不成立的 所以一直会到else里面执行 判断两个字符串相等 用下 user.getUser_name().toString().equals("admin")

equals比较的是内容,"admin".equals(user.getUser_name().toString() )

equals比较的是String型不能用==来比较

equals比较的是内容,==用于基本数据类型之间的比较,采用"admin".equals(user.getUser_name().toString() )

字符串比较应该用equals来比较

equals 或者 equalsIgnoreCase 来进行比较

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问