用户注册登录注销

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>

[javaEE] 三层架构案例-用户模块(一)的更多相关文章

  1. [javaEE] 三层架构案例-用户模块(二)

    使用junit测试框架,测试查找用户和添加用户功能 com.tsh.test.xmlUserDaoTest package com.tsh.test; import org.junit.Test; i ...

  2. javaee三层架构案例--简单学生管理系统

    背景 学了jdbc.jsp等需要串起来,不然会忘记 项目环境 win10 jdk11 mysql8.0.13 jar包 c3p0-0.9.5.2 commons-dbutils-1.7 jstl mc ...

  3. 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax

    一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...

  4. JavaEE三层架构与MVC

    JavaEE三层架构与MVC 摘要与总结 等下总结下 MVC模式 Model1 ​ 说到设计模式,不得不提一下之前的的Model1.据说早期对于java企业项目的开发,用的是Jsp+JavaBean的 ...

  5. JavaEE三层架构

    三层架构         三层架构是javaee规范中的推荐架构,传统意义上是分为表示层(UI).业务逻辑层(BLL).数据访问层(DAL).在javaee的开发中,三层架构具体分为表示层(web层) ...

  6. MVC开发模式与javaEE三层架构

    1.MVC开发模式 1. M:Model,模型.JavaBean        * 完成具体的业务操作,如:查询数据库,封装对象2. V:View,视图.JSP        * 展示数据3. C:C ...

  7. JavaEE 三层架构的浅谈

    三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...

  8. JavaEE 三层架构模式

    什么是架构模式 要理解三层架构模式,我们得先搞清楚什么是架构模式.(这里说的架构模式是针对后端开发) 所谓架构就是系统最高级别的设计,一个系统特别复杂时才需要架构设计,如果只是开发一个很小程序,就谈不 ...

  9. [转]MVC & JavaEE三层架构

随机推荐

  1. jquery函数封装

    <script type="text/javascript"> $(function () { $("#tabMenu a").on('click' ...

  2. [独家] Adobe Flash 直接复制元件不改变原元件

    正在考网页高级考证,然后会需要做Adobe Flash相关操作.在网上看了下,基本都是错误的.于是,自己研究解决该问题. 首先,你需要更改元件不改变原文件是不可能的. 所以: 1.你需要对原元件所在的 ...

  3. jmeter之jtl文件解析(生成测试报告)

    我们知道命令行的方式执行完成jmeter后,会生成jtl文件,里面打开后就是一行行的测试结果, <httpSample t="1" lt="1" ts=& ...

  4. [译文]casperjs使用说明-测试

    capserjs自带了一个测试框架,它提供了一个使你能够更容易的测试你的web应用的工具集. 注意: 1.1版本变更 这个测试框架,包括它的所有API,仅能使用在casperjs test子命令下 如 ...

  5. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  6. Cache缓存设计

    缓存的适用场景: 缓存的目的是提高访问速度,减少不必要的开销,提高性能.那什么样的场景适用于缓存呢.试想一个多项式的计算是一个CPU bound的操作,如果频繁调用同一个多项式的结果.显然缓存结果是一 ...

  7. 如何调用另一个包中的Application

    在项目中要集成Xabber,将它作为一个Lib, ..... Xabber 原有代码 /** * Base entry point. * * @author alexander.ivanov */ p ...

  8. [转]IOS应用程序多语言本地化解决方案

    最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备 ...

  9. (USB HID) Configuration Descriptor

    最近完成了HID的基本收發,使用的配置用了2個Endpoint,把一些特別重要要的地方紀錄下來 整個Configuration 分成4大部分 : 1. Configuration 2. Interfa ...

  10. 网络基础 01_OSI网际互联

    1 通信概述 网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的. 通信是人与人之间通过某种媒体进行的信息交流与传递. 网络通信是通过网络将各个孤立的设备进 ...