Это функция, которая проверяет, существует ли уже имя пользователя, а затем добавляет его, если отсутствует. Это в классе DepartmentBean.
Личный список пользователей;
public List<UserBean> getUsers() {
return users;
}
public int flag;
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public void addIfAbsent(UserBean userBean) {
if (users.stream().anyMatch(x -> x.getUsername().equals(userBean.getUsername()))) {
setFlag(1);// flag to indicate that there is user with the same name
} else {
setFlag(2);
users.add(userBean);// add the user
}
}
В Сервлете я проверяю флаг следующим образом:
DepartmentBean dp = new DepartmentBean();
UserBean user = new UserBean();//UserBean is class which store name and password
DepartmentBean departmentBean = read();
String userName = request.getParameter("username");
String password = request.getParameter("password");
user.setPassowrd(password);
user.setUsername(userName);
departmentBean.addIfAbsent(user);
if(dp.flag == 2)//if flag is 2, their's no user with the same name, so write it
{
RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
rd.forward(request, response);
write(departmentBean);//write to xml
}
Если это не так, если фигурные скобки работают и запись сделана. Но если я использую это, если, это не так и приводит меня к белой странице вместо index.jsp.
Это функции записи и чтения в сервлете:
public static DepartmentBean read() throws JAXBException {
JAXBContext context = JAXBContext.newInstance(DepartmentBean.class, UserBean.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
return (DepartmentBean) unmarshaller.unmarshal(new StreamSource(new File("1.xml")));
}
public static void write(DepartmentBean department) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(DepartmentBean.class, UserBean.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(department, new File("1.xml"));
}