• [javaEE] 三层架构案例-用户模块(一)


    用户注册登录注销

    Servlet+JSP+javaBean+dom4j

     

    分层结构:

    com.tsh.web

    com.tsh.service

    com.tsh.dao

    com.tsh.domain

    com.tsh.util

    com.tsh.test

    com.tsh.exception

    com.tsh.factory

     

    使用的包:

    dom4j jstl beanutils junit

     

    users.xml-----------模拟数据库

    config.properties------------主配置文件

     

    XPATH

    dom4j提供的方法,可以在xml文件中查找指定的节点,类似正则在文本文件中查找指定文本

     

     

    com.tsh.dao.XmlUserDao.java

    package com.tsh.dao;
    
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    
    import com.tsh.domain.User;
    import com.tsh.util.XmlDaoUtil;
    
    public class XmlUserDao {
        /**
         * 根据用户名查找user
         * @param username
         * @return
         */
        public User findUserByUsername(String username){
            Document dom=XmlDaoUtil.getDom();
            Element root=dom.getRootElement();
            //使用XPATH语法
            List<Element> list=root.selectNodes("//user[@username='"+username+"']");
            if(list.size()>0){
                Element userElement=list.get(0);
                String uname=userElement.attributeValue("username");
                String password=userElement.attributeValue("password");
                //将用户信息封装到bean
                User user=new User();
                user.setUsername(uname);
                user.setPassword(password);
                user.setPassword_confirm(password);
                return user;
            }
            return null;
        }
        /**
         * 添加用户
         * @param user
         */
        public void addUser(User user){
            Document dom=XmlDaoUtil.getDom();
            Element root=dom.getRootElement();
            //创建<user>元素
            Element userElement=DocumentHelper.createElement("user");
            userElement.setAttributeValue("username", user.getUsername());
            userElement.setAttributeValue("password", user.getPassword());
            //挂载到<users>
            root.add(userElement);
            //回写到xml文件
            
        }
    }

     

    com.tsh.util.XmlDaoUtil.java

    package com.tsh.util;
    
    import java.net.URL;
    
    import org.dom4j.Document;
    import org.dom4j.io.SAXReader;
    
    public class XmlDaoUtil {
        private static URL path=XmlDaoUtil.class.getClassLoader().getResource("user.xml");
        /**
         * 使用静态代码块,对象只实例化一次
         */
        private static Document dom;
        static{
            SAXReader reader=new SAXReader();
            try {
                //类加载器找到物理路径
                dom=reader.read(path);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /**
         * 获取xml
         * @return
         */
        public static Document getDom(){
            return dom;
        }
        /**
         * 写入xml
         */
        public static void writeXml(){
            
        }
    }

     

    com.tsh.domain.User.java

    package com.tsh.domain;
    
    import java.io.Serializable;
    
    public class User implements Serializable{
        private String username;
        private String password;
        private String password_confirm;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getPassword_confirm() {
            return password_confirm;
        }
        public void setPassword_confirm(String password_confirm) {
            this.password_confirm = password_confirm;
        }
        
    }

     

    user.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <users>
    <user username="admin" password="admin"></user>
    </users>

     

  • 相关阅读:
    IE6浏览器无法打开QQ邮箱
    vue 项目中 点击回车键 自动登录
    从后台拿数据来排序
    webpack 学习文档 自己留着用
    vue父子之间的传参问题
    vue中引入mint-ui的步骤 + mintui快速上手
    vue页面刷新
    调试兼容性该注意的的点
    垂直居中的几种方式 + css文本框文字溢出显示省略号
    elementui 鼠标悬停出现下拉列表
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5640007.html
Copyright © 2020-2023  润新知