`
Junjiejkl
  • 浏览: 59499 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

简单的分层模式

阅读更多

数据信息层:

 

<?xml version="1.0" encoding="UTF-8"?>

<students>
  <student id="1">
    <name>soso</name>
    <password>123</password>
    <age>10</age>
  </student>
</students>

 

 

javabean:

 

package cn.itcast.xml.parser.example2;

public class Student {

	private int id;
	private String name;
	private String password;
	private int age;

	public Student() {
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

 

 

DAO:

 

package cn.itcast.xml.parser.example2;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

//数据访问层(对XML文件的CURD操作)
public class StudentDao {
	private Document getDocument() throws Exception{
		SAXReader reader = new SAXReader();
		Document document = reader.read(new File("src/cn/itcast/xml/parser/example2/students.xml"));
		return document;
	}
	private void writerToFile(Document document)throws Exception{
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		Writer writer = new OutputStreamWriter(new FileOutputStream("src/cn/itcast/xml/parser/example2/students.xml"),"UTF-8");
		XMLWriter xmlWriter = new XMLWriter(writer,format);
		xmlWriter.write(document);
		xmlWriter.close();
	}
	public void create(Student student) throws Exception{
		/*
		Document document = this.getDocument();
		Element rootElement = document.getRootElement();//<students>根元素和document已绑定在一起
		Element studentElement  = rootElement.addElement("student");//<student>
		studentElement.addElement("name").setText(student.getName());//<name>jack</name>
		studentElement.addElement("password").setText(student.getPassword());//<password>jack</password>
		studentElement.addElement("age").setText(student.getAge()+"");//<age>jack</age>
		studentElement.addAttribute("id",student.getId()+"");
		this.writerToFile(document);
		*/

		//必须保存在第一次填加学员时执行,第N次不执行
		Document document = DocumentHelper.createDocument();
		Element rootElement = DocumentHelper.createElement("students");
		//思路:第N次判段是否已有根元素,如果有,不需要再创建根元素,直接将子元素加到<students>里面
		
		Element studentElement  = rootElement.addElement("student");//<student>
		studentElement.addElement("name").setText(student.getName());//<name>jack</name>
		studentElement.addElement("password").setText(student.getPassword());//<password>jack</password>
		studentElement.addElement("age").setText(student.getAge()+"");//<age>jack</age>
		studentElement.addAttribute("id",student.getId()+"");
		document.add(rootElement);
		this.writerToFile(document);
		
	}
	public void delete(String id) throws Exception{
		Document document = this.getDocument();
		String xpath = "//student[@id='"+id+"']";
		Element element = (Element) document.selectSingleNode(xpath);
		if(element!=null){
			element.getParent().remove(element);
			this.writerToFile(document);
		}else{
			throw new RuntimeException("查无此学员");
		}
	}
}

 

 

UI:

 

package cn.itcast.xml.parser.example2;

import java.util.Scanner;

public class StudentUI {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		/*
		System.out.print("需要删除学员的编号:");
		String id = scanner.nextLine();
		StudentDao studentDao = new StudentDao();
		try {
			studentDao.delete(id);
			System.out.println("删除成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
		*/
		
		System.out.print("姓名:");
		String name = scanner.nextLine();
		System.out.print("密码:");
		String password = scanner.nextLine();
		System.out.print("年龄:");
		String age = scanner.nextLine();
		Student student = new Student();
		student.setId(Util.getId());
		student.setName(name);
		student.setPassword(password);
		student.setAge(Integer.parseInt(age));
		StudentDao studentDao = new StudentDao();
		try {
			studentDao.create(student);
			System.out.println("成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


 

分享到:
评论

相关推荐

    基于Java的设计模式大作业绘图系统【六种设计模式+文档】.zip

    本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...

    C#实现分层架构源程序

    设计模式的本质特征是模块独立性和接口简单,因为MVC系统架构难于理解,故采用分层模型对系统进行设计,系统的特点是专门设计了一层数据库的屏蔽层,用来屏蔽数据库的差异性。

    创建者模式(设计模式,分层清晰,逻辑明显)

    本例是一个分层次的实例,里面简单清晰的逻辑说明了设计模式之---创建者模式

    利用cookie实现三天免登陆示例(mvc分层模式).rar

    利用cookie技术实现简单的三天免登陆功能

    geterohier:QML异质分层模式示例

    Geterohier QML组装要求中的示例模式异构层次结构:Qt&gt; 5.2.1为简单起见固定了模型,在构造函数中创建了子代

    MVVM模式简单demo

    这是一个是MVVM模式实现的在tableview上分层选择省市区的demo

    设计模式简单代码.txt

    设计模式通常应用在设计阶段,分析阶段已经对系统分层,然后也对每个层都提取了一些类。这个时候,如何组织和使用这些类就是我们的设计模式要研究的问题了。本文档是一些设计模式的简单实现代码。

    express 项目分层实践详解

    这个就简单说一下,所谓四层架构就是 Model实体层,Dao层(数据访问层也就是从数据库中查数据),Service层(业务逻辑层,也就是处理好数据),Controller层(视图控制层,在前后端分离的情况下就是写接口响应前端...

    NET设计规范-.NET约定、惯用法与模式.part2

    1.1.1 精心设计的框架是简单的 2 1.1.2 精心设计的框架设计代价高 3 1.1.3 精心设计的框架充满利弊权衡 3 1.1.4 精心设计的框架应该借鉴过去 4 1.1.5 精心设计的框架要考虑未来发展 4 1.1.6 精心设计的...

    领域驱动设计与模式实战

    4.1.3 根据DDD进行分层 4.2 轮廓 4.2.1 领域模型示例的问题/特性 4.2.2 逐个处理特性 4.2.3 到目前为止的领域模型 4.3 初次尝试将UI与领域模型挂接 4.3.1 基本目标 4.3.2 简单UI的当前焦点 4.3.3 为客户列出订单 ...

    MVC模式写的投票系统 值得学习 封装了JDBC的方法

    MVC模式写的投票系统 值得学习 封装了JDBC的方法 后台有明确的分层 前台很简单,数据库已经上传,在DBBean.java中修改数据库连接属性就可以使用

    C#游戏贪食蛇源代码 (结合2设计模式)(Sairns,董侨)

    4.0 引入简单工厂,结合策略模式对游戏优化并加入动态加速功能,将原GUI+绘蛇变更为,自制Control控件, 关卡不变(解决了双缓冲无法解决屏幕闪烁问题) 5.0 美化游戏,应用分层理念封装各实体类 制作人: 董...

    javaWeb_struts2框架实现简单用户注册登录

    1.本demo严格按照MVC的分层模式采用myeclipse编写,可直接运行,服务器为tomcat,数据库为mysql。 2.数据库操作使用c3p0连接池和dbtuils组件,对表的CURD,二者搭配感觉很easy,没有使用hibernate。 3.控制器采用...

    NET设计规范-.NET约定、惯用法与模式.part1

    1.1.1 精心设计的框架是简单的 2 1.1.2 精心设计的框架设计代价高 3 1.1.3 精心设计的框架充满利弊权衡 3 1.1.4 精心设计的框架应该借鉴过去 4 1.1.5 精心设计的框架要考虑未来发展 4 1.1.6 精心设计的...

    小菜编程成长记

    体会简单工厂模式的美妙 工厂不好用了? 用“策略模式”是一种好策略 反射一一程序员的快乐! 会修电脑不会修收音机?一一聊设计模式原则 三层架构,分层开发 无熟人难办事?一一聊设计模式迪米特法则 有了门面,程序员...

    .NET设计规范:约定、惯用法与模式(第2版)克瓦林纳 5/5

     2.2.4 分层架构原则  2.3 小结 第3章 命名规范  3.1 大小写约定  3.1.1 标识符的大小写规则  3.1.2 首字母缩写词的大小写  3.1.3 复合词和常用术语的大小写  3.1.4 是否区分大小写  3.2 通用命名约定  ...

    京东零售流量数仓架构建设

    简单来说,流量就是用户作用在京东页面上,产生一系列行为数据的集合。 ② 流量数据的来源 数据来源主要是移动端和PC端,以及线下店、外部采买、合作商的数据等。 这些数据是如何流转到数仓的呢? 2. 京东零售——...

    高可用高并发的一共 9 种技术架构解析.docx

    分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。 在网站的分层架构中,常见的为3...

    JSP项目MVC设计模式Web通讯录

    但是编程师按照MVC设计模式分层实现的。 原项目是由Oracle数据库,我的电脑是没有所以现在我把项目改成了MySQL数据库的。数据库的jar包同项目一起打包。 如果需要修改数据库,用户,密码请在...

    .NET设计规范:约定、惯用法与模式(第2版)1/5

     2.2.4 分层架构原则  2.3 小结 第3章 命名规范  3.1 大小写约定  3.1.1 标识符的大小写规则  3.1.2 首字母缩写词的大小写  3.1.3 复合词和常用术语的大小写  3.1.4 是否区分大小写  3.2 通用命名约定  ...

Global site tag (gtag.js) - Google Analytics