У меня есть html-форма для выбора имени пользователя и пароля, которые должны храниться в xml-файле. Этот класс, в котором хранятся детали имени пользователя:
@XmlRootElement(name = "Emp")
@XmlType(propOrder = {"username", "passowrd"})
public class UserBean {
String username;
String passowrd;
@XmlElement(name = "username")
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@XmlElement(name = "password")
public String getPassowrd() {
return passowrd;
}
public void setPassowrd(String passowrd) {
this.passowrd = passowrd;
}
@Override
public String toString() {
return "UserBean [username=" + username + ", passowrd=" + passowrd + "]";
}
}
Это сервлет, в котором я получаю данные об имени пользователя и пытаюсь сохранить их в XML-файле:
@WebServlet("/Data")
public class Data extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String FILE_NAME = "jaxb-emp.xml";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UserBean emp = new UserBean ();
String userName = request.getParameter("username");
String password = request.getParameter("password");
emp.setUsername(userName);
emp.setPassowrd(password);
jaxbObjectToXML(emp);
UserBean empFromFile = jaxbXMLToObject();
System.out.println(empFromFile.toString());
RequestDispatcher rd=request.getRequestDispatcher("index.jps");
rd.forward(request, response);
}
private static UserBean jaxbXMLToObject() {
try {
JAXBContext context = JAXBContext.newInstance(UserBean.class);
Unmarshaller un = context.createUnmarshaller();
UserBean emp = (UserBean) un.unmarshal(new File(FILE_NAME));
return emp;
} catch (JAXBException e) {
e.printStackTrace();
}
return null;
}
private static void jaxbObjectToXML(UserBean emp) {
try {
JAXBContext context = JAXBContext.newInstance(UserBean.class);
Marshaller m = context.createMarshaller();
//for pretty-print XML in JAXB
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
// Write to System.out for debugging
// m.marshal(emp, System.out);
// Write to File
m.marshal(emp, new File(FILE_NAME));
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
Каждый раз, когда я запускаю tomcat и вводю данные пользователя, файл перезаписывается. Дело в том, что моя цель состоит в том, чтобы иметь много имен пользователей и избежать дублирования.