Мне нужно сделать регистрацию на spring
Мне нужно сделать регистрацию для БД на spring. Данные пользователей будут храниться в оперативной памяти. Я хочу сделать так, чтобы пользователь не мог зарегистрироватся под cуществующим логином, но у меня это не получается.Несмотря на if пользователь может зарегистрироватся под существующим логином.
private ArrayList<account> accounts = new ArrayList<>();
@Override
public String toString() {
String s = "";
for(int i = 0;i<accounts.size();i++){
s+=accounts.get(i).getLogin()+'\n';
}
return s;
}
public account register(String name, String pass){
int isin = 0;
for(int i = 0;i<accounts.size();i++){
if(accounts.get(i).getLogin() == name ){
isin = 1;break;
}
}
if(isin==1){return null;}
else{
account t = new account(name,pass);
accounts.add(t);
return t;
}
}
Вот код, который это делает
public class MyController {
private MemAccountService accountService;
private account myAccount;
public MyController(MemAccountService accountService) {
this.accountService = accountService;
this.myAccount = null;
}
@RequestMapping("/")
public String main(){
return "redirect:index.html";
}
@RequestMapping("/register")
@ResponseBody
public String register(@RequestParam("name") String name,@RequestParam("password") String password){
myAccount = accountService.register(name,password);
if (myAccount == null) {
return "error";
}
else return "ok";
}
Ответы (1 шт):
Автор решения: jilvik
→ Ссылка
Не работает по причине неправильного сравнения строк. В примере
if(accounts.get(i).getLogin() == name )
Вы сравниваете ссылки. Вам необходимо сравнить значения путем вызова метода equals
if(accounts.get(i).getLogin().equals(name))
Немного подробнее описано тут: https://yandex.ru/turbo/s/internet-technologies.ru/articles/sravnenie-strok-v-java.html