3.2注册功能
//注册功能,外界传递一个User对象进来。我就在XML文档中添加一条信息
publicvoidregister(Useruser){
//获取XML文档路径!
Stringpath=UserImplXML.class.getClassLoader().getResource("user.xml").getPath();
try{
//获取dom4j的解析器,解析XML文档
SAXReadersaxReader=newSAXReader();
Documentdocument=saxReader.read(path);
//在XML文档中创建新的节点
ElementnewElement=DocumentHelper.createElement("user");
newElement.addAttribute("id",String.valueOf(user.getId()));
newElement.addAttribute("username",user.getUsername());
newElement.addAttribute("email",user.getEmail());
newElement.addAttribute("password",user.getPassword());
//日期返回的是指定格式的日期
SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yy-MM-dd");
Stringdate=simpleDateFormat.format(user.getBirthday());
newElement.addAttribute("birthday",date);
//把新创建的节点增加到父节点上
document.getRootElement().add(newElement);
//把XML内容中文档的内容写到硬盘文件上
OutputFormatoutputFormat=OutputFormat.createPrettyPrint();
outputFormat.setEncoding("UTF-8");
XMLWriterxmlWriter=newXMLWriter(newFileWriter(path),outputFormat);
xmlWriter.write(document);
xmlWriter.close();
}catch(DocumentExceptione){
e.printStackTrace();
thrownewRuntimeException("注册的时候出错了!!!");
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException("注册的时候出错了!!!");
}
}
- 我们也测试一下有没有错误!
@Test
publicvoidtestRegister(){
UserImplXMLuserImplXML=newUserImplXML();
//这里我为了测试的方便,就添加一个带5个参数的构造函数了!
Useruser=newUser(10,"nihao","123","sina@qq.com",newDate());
userImplXML.register(user);
}
- 注意!测试的结果是在classes目录下的user.xml文件查询的!因为我们是用Test来测试代码,读取XML文件时使用的是类装载器的方法,在编译后,按照WEB的结构目录,XML文件的读写是在WEB-INF的classes目录下的!
- DAO的实现已经开发完成了,接下来我们就对DAO的实现进行抽取。【当然了,也可以先写DAO再写DAO的实现】
④开发service层
service层的开发就非常简单了!上面已经说了,service层就是:将多个原子性的DAO操作进行组合,组合成一个完整的业务逻辑。简单来说:对web层提供所有的业务服务的!
在逻辑代码不是非常复杂的情况下,我们可以没有service层的,这里还是演示一下吧!
publicclassUserServiceXML{
//Service层就是调用Dao层的方法,我们就直接在类中创建Dao层的对象了
UserDaouserImplXML=newUserImplXML();
publicvoidregister(Useruser){
userImplXML.register(user);
}
publicvoidlogin(Stringusername,Stringpassword){
userImplXML.find(username,password);
}
}
- 当然了,为了更好的解耦,也把它抽取成接口!