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