Java Servlet检查用户名是否已经存在

Java Servlet检查用户名是否已经存在,java,xml,servlets,jaxb,Java,Xml,Servlets,Jaxb,这是一个检查用户名是否已经存在的函数,如果不存在,则添加它。这是在班上的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

这是一个检查用户名是否已经存在的函数,如果不存在,则添加它。这是在班上的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

            }
        }
如果这是从中传出的,则大括号正在工作,并且记录已生成。但如果我使用这个if,它就不会这样做,它会把我带到白色页面而不是index.jsp

这就是Servlet中的写和读函数:

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"));
    }

我看到您正在使用两个DepartmentBean变量:一个称为“dp”,另一个称为“DepartmentBean”。您可以使用后者来检查是否已经存在一个用户(因此“departmentBean.flag”被修改),使用“dp”来检查标志的值(代码中以前没有修改过)。我建议:

DepartmentBean departmentBean = new DepartmentBean();
UserBean user = new UserBean();
String userName = request.getParameter("username");
String password = request.getParameter("password");


user.setPassowrd(password);
user.setUsername(userName);
departmentBean.addIfAbsent(user);

if(departmentBean.flag == 2)
{

    RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
    rd.forward(request, response);
    write(departmentBean);//write to xml

}

为什么不让addIfAbsent(…)返回一个布尔值并去掉magic
标志
?但是,如果add…if…缺席应该已经处理了它,那么servlet为什么还要编写它呢?
DepartmentBean departmentBean = new DepartmentBean();
UserBean user = new UserBean();
String userName = request.getParameter("username");
String password = request.getParameter("password");


user.setPassowrd(password);
user.setUsername(userName);
departmentBean.addIfAbsent(user);

if(departmentBean.flag == 2)
{

    RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
    rd.forward(request, response);
    write(departmentBean);//write to xml

}