我在登录的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";
}
}
不能用==来判断字符串,整型才可以用==
字符串判断应该使用**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 来进行比较
要用equals比较字符串