XML操作举例→实现用户登录

来源:互联网 发布:如何用c语言画爱心 编辑:程序博客网 时间:2024/05/22 01:59
XmlUtils.java package cn.zyw.utils;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.UnsupportedEncodingException;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;//3public class XmlUtils {    private static String filepath;    static{        filepath=XmlUtils.class.getClassLoader().getResource("users.xml").getPath();        filepath=filepath.replace("%20", " ");    }    public static Document getDocument() throws Exception{        SAXReader reader = new SAXReader();        Document document = reader.read(new File(filepath));        return document;    }    public static void write2Xml(Document document) throws Exception{        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("UTF-8");        XMLWriter writer = new XMLWriter(new FileOutputStream(filepath), format );        writer.write( document );        writer.close();    }}


 

有时我们想做做一个小的项目需要保存一定的数据,如果用数据库当然是可以的。但是总觉得有点浪费资源。所以今天就学习了一点Xml总结如下:

 

1:Xml文件如下:

 

<?xml version="1.0" encoding="UTF-8"?><users>    <user id="234343434" username="aaa" password="123" email="aa@sina.com" birthday="1900-09-18" nickname="强子" /></users>
2:操作Xml文件的工具类
 
XmlUtils.java package cn.zyw.utils;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.UnsupportedEncodingException;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;//3public class XmlUtils {    private static String filepath;    static{        filepath=XmlUtils.class.getClassLoader().getResource("users.xml").getPath();        filepath=filepath.replace("%20", " ");    }    public static Document getDocument() throws Exception{        SAXReader reader = new SAXReader();        Document document = reader.read(new File(filepath));        return document;    }    public static void write2Xml(Document document) throws Exception{        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("UTF-8");        XMLWriter writer = new XMLWriter(new FileOutputStream(filepath), format );        writer.write( document );        writer.close();    }}

3:用户登录的Dao

UserDao .java

package cn.zyw.dao;

import cn.zyw.domain.User;//5public interface UserDao {

    void add(User user);

    User find(String username, String password);

    //查找注册的用户是否在数据库中存在    boolean find(String username);

}

4:用户登录的实现类

 

UserDaoImpl .java

package cn.zyw.dao.impl;

import java.text.SimpleDateFormat;

import org.dom4j.Document;import org.dom4j.Element;

import cn.zyw.dao.UserDao;import cn.zyw.domain.User;import cn.zyw.utils.XmlUtils;//2public class UserDaoImpl implements UserDao {    public void add(User user){        try {            Document document=XmlUtils.getDocument();            Element root=document.getRootElement();//得到根节点            Element user_tag=root.addElement("user");            user_tag.setAttributeValue("id", user.getId());            user_tag.setAttributeValue("username", user.getUsername());            user_tag.setAttributeValue("password", user.getPassword());            user_tag.setAttributeValue("email", user.getEmail());            user_tag.setAttributeValue("nickname", user.getNickname());            user_tag.setAttributeValue("birthday", user.getBirthday()==null ? "" : user.getBirthday().toLocaleString());            XmlUtils.write2Xml(document);        } catch (Exception e) {            throw new RuntimeException(e);        }    }    public User find(String username,String password){

        try {            Document document=XmlUtils.getDocument();            Element e=(Element) document.selectSingleNode("//user[@username='"+username+"' and @password='"+password+"']");            if(e==null)                return null;            User user=new User();            user.setUsername(e.attributeValue("username"));//获取xml里面的值            user.setNickname(e.attributeValue("nickname"));            user.setPassword(e.attributeValue("password"));            user.setEmail(e.attributeValue("email"));            user.setId(e.attributeValue("id"));            String date=e.attributeValue("birthday");            if(date==null || date.equals("")){                user.setBirthday(null);                            }else{                SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");                user.setBirthday(df.parse(date));            }            return user;                    } catch (Exception e) {            throw new RuntimeException(e);        }    }    //查找注册的用户是否在数据库中存在    public boolean find(String username){         try {            Document document=XmlUtils.getDocument();            Element e=(Element) document.selectSingleNode("//user[@username='"+username+"']");            if(e==null){                return false;            }                            return true;                            } catch (Exception e) {            throw new RuntimeException(e);        }    }    }

5:用户登录的测试

UserDaoTest.java

package junit.test;

import java.util.Date;import org.junit.Test;import cn.zyw.dao.UserDao;import cn.zyw.dao.impl.UserDaoImpl;import cn.zyw.domain.User;//4public class UserDaoTest {    @Test    public void testAdd(){        User user=new User();        user.setBirthday(new Date());        user.setEmail("aa@sina.com");        user.setId("34343434");        user.setNickname("李子");        user.setPassword("123");        user.setUsername("aaa");                        UserDao dao=new UserDaoImpl();        dao.add(user);    }    @Test    public void testFind(){        UserDao dao=new UserDaoImpl();        User user=dao.find("aaa","123");        String aa=user.getEmail();        if(aa.endsWith("kk"))        {            System.out.println("kkdf");        }    }    @Test    public void testFindByUsername(){        UserDao dao=new UserDaoImpl();        boolean b=dao.find("aaa");

    }}

 
0 0
原创粉丝点击