[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>
[javaEE] 三层架构案例-用户模块(一)的更多相关文章
- [javaEE] 三层架构案例-用户模块(二)
使用junit测试框架,测试查找用户和添加用户功能 com.tsh.test.xmlUserDaoTest package com.tsh.test; import org.junit.Test; i ...
- javaee三层架构案例--简单学生管理系统
背景 学了jdbc.jsp等需要串起来,不然会忘记 项目环境 win10 jdk11 mysql8.0.13 jar包 c3p0-0.9.5.2 commons-dbutils-1.7 jstl mc ...
- 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax
一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...
- JavaEE三层架构与MVC
JavaEE三层架构与MVC 摘要与总结 等下总结下 MVC模式 Model1 说到设计模式,不得不提一下之前的的Model1.据说早期对于java企业项目的开发,用的是Jsp+JavaBean的 ...
- JavaEE三层架构
三层架构 三层架构是javaee规范中的推荐架构,传统意义上是分为表示层(UI).业务逻辑层(BLL).数据访问层(DAL).在javaee的开发中,三层架构具体分为表示层(web层) ...
- MVC开发模式与javaEE三层架构
1.MVC开发模式 1. M:Model,模型.JavaBean * 完成具体的业务操作,如:查询数据库,封装对象2. V:View,视图.JSP * 展示数据3. C:C ...
- JavaEE 三层架构的浅谈
三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...
- JavaEE 三层架构模式
什么是架构模式 要理解三层架构模式,我们得先搞清楚什么是架构模式.(这里说的架构模式是针对后端开发) 所谓架构就是系统最高级别的设计,一个系统特别复杂时才需要架构设计,如果只是开发一个很小程序,就谈不 ...
- [转]MVC & JavaEE三层架构
随机推荐
- [BZOJ5212][ZJOI2018]历史
传送门(洛谷) 人生第一道九条可怜……神仙操作…… 看着题解理解了一个早上才勉强看懂怎么回事…… 简化一下题目就是:已知每一个点access的总次数,求一个顺序使虚实边转化的次数最多 考虑一下,对于x ...
- [Swift]Swift的常用内置函数
内置函数:在Swift中不需要导入任何模块(如UIKit等)或者引用任何类就可以使用的函数.Swift预先定义的函数//快捷键Control+⌘+Space来开启Emoji字符输入 1.断言asser ...
- jquery加载方式,选择器,样式操作
原生js和css不兼容,jquery已经过测试,可放心使用 https://code.jquery.com 这个网站可以下载jquery的源码,比如把源码下载到js文件夹中,文件名为jquery- ...
- TCP/IP协议之分层
 应用层和运输层只在端系统(End System)中实现, 底层协议在中间系统(Intermediate System)实现 ICMP和IGMP属于网络层的附属协议.虽然其内容是IP数据报的载荷(P ...
- 2016级算法第二次上机-D.Bamboo的饼干
Bamboo的饼干 分析 从两个数组中各取一个数,使两者相加等于给定值.要注意去重和排序 难度不大,方法很多,基本只要不大于O(n^2 ) 的都可以过.本意想考察二分搜索 还可以借助stl中的map, ...
- 233 Matrix(矩阵快速幂+思维)
In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...
- Vue项目中用的Jquery.js和easing.js做的抛物线
如果项目中还用到自有的$ <script> jQuery.noConflict();</script> //星星掉落movePathNew(args) { let self = ...
- google浏览器安装不上的绝望经历
手贱把google的一些文件删除了,整个浏览器都没法打开 决定重装下,但是连卸载的功能都无法打开了 于是决定上网重新下载了个安装包,发现安装包都打不来 很绝望,查了很多资料 很多人说要删除注册表的东西 ...
- scrapy抓取中文后乱码解决方法
出现这种东西不是乱码,是unicode,只是人看不懂,例如: \u96a8\u6642\u66f4\u65b0> \u25a0\u25a0\u25a 我们把他解码成中文码即可,在settings ...
- python函数参数类型及其顺序
根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...