我正在编写一个调用服务方法的示例servlet类。服务方法需要验证用户名和密码。
public static void main(String[] args) {
System.out.println(new UserServiceImpl().login(name, password));
}
public String login(String username, String password) {
StringBuilder validUser = new StringBuilder();
if(username == null || password == null){
return invalidUser();
}
if((validUsers.contains(name) && validPassword.contains(password))){
validUser.append("<user>");
validUser.append("<username>");
validUser.append(username);
validUser.append("</username>");
validUser.append("<firstname>");
validUser.append("Mr M");
validUser.append("</firstname>");
validUser.append("<lastname>");
validUser.append("Tom");
validUser.append("</lastname>");
validUser.append("</user>");
return validUser.toString();
}
else{
return invalidUser();
}
}
private String invalidUser() {
StringBuilder invalidUser = new StringBuilder();
invalidUser.append("<status>");
invalidUser.append("<code>");
invalidUser.append("401");
invalidUser.append("</code>");
invalidUser.append("<message>");
invalidUser.append("Invalid Credentials");
invalidUser.append("</message>");
invalidUser.append("</status>");
return invalidUser.toString();
}
表单提交应该触发LoginServlet,用户名和密码从该服务器传递给UserService.login。如果验证了用户名和密码(如果语句正常),则应返回用户xml字符串:
<user><username></username><firstname></firstname><lastname></lastname></user>
否则,应返回状态xml字符串:
<status><code>401</code><message>Invalid Credentials</message></status>
在这种情况下,我尝试使用StringBuilder来制作上述格式。我可以尝试不同的方法吗?像JaxB或Sax或Dom,哪一个更适合制作以上格式?字符串构建器最适合这种情况吗?
在我的servlet类中,我需要返回查看页面,如果是有效用户则返回欢迎页面,否则返回错误信息的错误消息页面。
答案 0 :(得分:0)
SAX是单向解析器 - 您只能用它读取XML。除非您想广泛使用XML,否则JAXB太多了。 DOM是一个很好的选择,但只有一个替代方案 - 简单XML的StringBuilder更简单,只要生成正确的XML,它就是完美的。
答案 1 :(得分:0)
据我所知Jaxb是我们必须生成xml文件的最佳方法。这是最好,最简单的方法。这是jaxb的一个例子。
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Data")
public class JaxbGetterSetter {
String name;
int age;
int id;
/**
* @return the name
*/
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
@XmlElement
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/**
* @return the id
*/
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class JaxbMarshaller {
public static void main(String[] args) {
JaxbGetterSetter jaxbGetterSetter = new JaxbGetterSetter();
jaxbGetterSetter.setId(100);
jaxbGetterSetter.setName("Pritpal Singh");
jaxbGetterSetter.setAge(24);
try {
File file = new File("/root/Desktop/jaxbExample.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(JaxbGetterSetter.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(jaxbGetterSetter, file);
jaxbMarshaller.marshal(jaxbGetterSetter, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}