有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

            }
        }

在Servlet中,我检查如下标志:

    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

         }

如果这是从中传出的,则大括号正在工作,并且记录已生成。但如果我使用这个if,它就不会,它会把我带到白色页面而不是索引。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"));
    }

共 (1) 个答案

  1. # 1 楼答案

    我看到您正在使用两个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
    
    }