标签:win leo exception har reader tno tchar oca 实体类
XML
一.xml简介
二.xml语法
1.文档声明
version代表当前xml版本
2.元素
3.属性
4.注释
+
5.CDATA区、特殊字符
6.处理指令
三.xml解析
1.Dom解析
得到根节点 getDocumentElement()
根据属性名获得id属性值 getAttribute();
遍历元素 item()
得到第一个孩子 getFirstChild();
得到节点的文本值 getNodeValue();
2.Sax解析
类继承DefaultHandler,是解析xml的基类。
这里要说明的是sax使用的工厂设计模式,通过SAXParserFactory 获取解析parser ,在从解析器中获得解析xml文件的xmlReader,但是在xmlReader读取流式的xml文件时,需要完成一个RSSHandler的设置,RSSHandler是继承的DefaultHandler,
3.Dom4j
package com.demo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
import com.entity.Emp;
public class TestDomFJ {
public static void main(String[] args) throws Exception {
//创建SAXReader解析器
SAXReader reader = new SAXReader();
//指明解析的文件,解析文件,获得Document文档
Document doc = reader.read(new File("src/com/Emplist.xml"));
//获得根节点
Element root = doc.getRootElement();
//获得根节点下的所有子节点
List<Element> elements = root.elements();
/*获得属性 attribute()
*获得节点 element()
*/
//创建List<Emp>保存所有员工对象
List<Emp> list = new ArrayList<Emp>();
//遍历子节点
for(Element element : elements){
//先获得节点的属性再获取值
String id = element.attribute("id").getValue();
//直接根据节点名获得节点中文本值
//element.elementText("name");
//先获得节点在获得节点值
String text = element.element("name").getText();
String age = element.elementText("age");
String gender = element.elementText("gender");
String salary = element.elementText("salary");
Emp emp = new Emp(Integer.parseInt(id),text,Integer.parseInt(age),gender,Double.parseDouble(salary));
list.add(emp);
}
//输出list
System.out.println(list);
}
/*添加 添加节点 addElement()
添加文本值 addText( )
添加子节点,并设置文本 addElement().addText()
添加属性 addAttribute( , )
*/
@Test
public void testAdd() throws Exception{
//list存放Emp对象
List<Emp> emps = new ArrayList<Emp>();
emps.add(new Emp(1,"zs",33,"男",9000.0));
emps.add(new Emp(2,"ls",18,"女",8000.0));
emps.add(new Emp(3,"ww",20,"男",10000.0));
//创建文档对象
Document doc = DocumentHelper.createDocument();
//创建根节点
Element root = doc.addElement("list");
for(Emp emp :emps){
//向根元素中添加名为emp的子元素
Element ele = root.addElement("emp");
//为emp元素添加id属性,并设置属性值
ele.addAttribute("id",emp.getId()+"");
//添加子节点,并设置节点中的文本值
ele.addElement("name").addText(emp.getName());
ele.addElement("age").addText(emp.getAge()+"");
ele.addElement("gender").addText(emp.getGender());
ele.addElement("salary").addText(emp.getSalary()+"");
}
//通过XMLWriter生成物理文件
//创建输出流,指明输出路径
FileOutputStream fos = new FileOutputStream("src/com/EmpList1.xml");
XMLWriter writer = new XMLWriter();
//先设置输出流
writer.setOutputStream(fos);
//将文档写出到指定路径中
writer.write(doc);
writer.close();
}
/* 删除remove()
*/
@Test
public void testRemove() throws Exception{
//使用SAXReader读取文档
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read("src/com/EmpList1.xml");
//获取节点
Element root = doc.getRootElement();
Element element = (Element)root.elements().get(0);
System.out.println(element.attribute("id"));
//为节点删除属性
element.remove(element.attribute("id"));
System.out.println(element.attribute("id"));
Element name = element.element("name");
System.out.println(name.getText());
//删除节点:必须得到父节点删除他,不能自己删除自己
element.remove(name);
System.out.println(element.element("name").getText());
}
@Test
public void testUpdate() throws Exception{
SAXReader sax = new SAXReader();
Document doc = sax.read("src/com/EmpList1.xml");
//获取根节点
Element root = doc.getRootElement();
Element e2 = (Element)root.elements().get(1);
//获取id属性
Attribute id = e2.attribute("id");
System.out.println(id.getValue());
//修改id属性
id.setValue("22");
System.out.println(id.getValue());
//获取name节点
Element name = e2.element("name");
System.out.println(name.getText());
//修改name的文本值
name.setText("李四1");
System.out.println(name.getText());
}
}
Web服务器
1.服务器简介
两种架构
2.tomcat目录结构
bin中, .bat是在windows系统中可执行的, .sh是在Unix系统中可以执行的。
3.tomcat应用
打开bin目录下的startup.bat运行(显示多少豪秒)即为成功,打开浏览器输入http://127.0.01:8080或者localhost:8080或者http:/192.168.1.95:8989可访问。
(tomcat安装即访问)
Tomcat配置的问题
数据库
1.数据库简介
2.数据库安装
3.数据库数据类型
char()定长 不太准确,会浪费空间,但如果知道字符串长度,使用效率高
varchar()可变长 不会浪费空间
4.Sql语句
使用软件heidesql.exe,因为它便捷,左边是图形化界面。可以手动创建数据库和数据库表。
单行注释-- 多行注释/* */;
utf-8写成utf8;
DDL DML DQL DCL ,TCL以后讲
DDL
创create 改alter 删drop
创建外键表
DML
truncate table ,delete from以及drop table的区别。
truncate table和delete from 删除记录。
DCL
DQL
5.完整性约束
6.多表查询
对于连接查询,where 后面的如果是单个值用=,
如果是集合要用in.
JDBC
一. jdbc简介
二. Jdbc对象介绍
1.连接数据库
编码问题 数据库和myeclipse都设置为utf-8,url后加
?userUnicode=true&characterEncoding=utf-8;
2.statement
Statement增删改用的是statement.executeUpdate(sql)
查询用resultset存放结果集。
数字下标也可以用字段名代替。
哪个资源后开启就先关闭
3 PreparedStatement
三. 批处理
四. 工具类
conf包表示配置文件 ,建一个文件properties存放键值对数据,为了方便修改。
Util包是工具包。
加载驱动用静态代码块只需加载一次,不会浪费资源。
测试
五. 事务
怎末设置cmd的编译语言?
找到mysql的路径,my.ini文件(MYSQL数据库中使用的配置文件)中default-character-set=…设置为utf-8;
使用事务控制将两个执行代码绑定在一起。
在基础上改三个地方将两个事务绑定。
例二
修改三个地方 ,关于threadLocal。创建,使用,移除
使用threadLocal优化配置,设置一个代码只需一个线程。
测试类:结果为前三个值相同,最后一个不同。
六. 连接池
修改三个地方
1.声明连接池2.创建连接池 3.获取连接池
使用连接池的connection对象,节约资源。
七. 三层架构
ORM思想
操作数据库的表放在sql中,
entity包是sql包对应的实体包,每一个包都要对应一个实体。
1. RowMapper处理结果集
Rowmapper接口,accountrowmapper类继承接口。
测试类
查询一个account.
查询多个account(用list),
先创建对象,然后在Sql后引用对象mapprerow方法。
EmpRowmapper对象中的方法是处理结果集。(先获得查询的值,并且将她赋值给新建的emp对象,并返回)。
2. Jdbc template修改封装
a(Object…object)可变长参数,可以有一个参数,可以多个参数,可以没有参数。
3. Template查询封装
Servlet
一.servlet简介
二.servlet生命周期1
初始化和实例化第一次访问就会加载,不会在执行。再更新一次就会加载一次就绪阶段。最后移除程序才会销毁。
web-xml修改会自动更新,但是sevlet java 文件中修改必须重新部署。可以在tomcat中conf下context.xml下加一个属性reloadable=“true”中就不用重新部署。
三.servlet生命周期2(同上)
四.ServletConfig对象
经常使用的有getInitParameter();获得初始化参数
通过注解查询servlet
五.ServletRequest对象
对于浏览器的响应:200服务器响应成功,404资源不存在 500服务器内部发生错误 302重定向 304查找本地缓存
常用的有getParamter(xxx) 接受一个值。
HttpServletRequest, HttpServletResponse用子类不用父类ServletRequest,ServletResponse,因为除了继承父类的方法外,还有自己的一些方法。
上两图黑色箭头表示编解码的代码。
//接收与客户端数据以utf-8解码
request.setCharacterEncoding("utf-8");
//解决输出中文乱码
response.setContentType("text/html;charset=utf-8");
六.ServletResponse对象
服务器做出响应
七.ServletContext对象
GetAttribute() ,setAttribute();作为域对象存储数据
每访问一次,浏览次数加一。
八.servlet 与jdbc-ems项目搭建
Conf 配置文件
Dao 直接控制数据库层还有service ,view包
Entity是sql对应的实体类,
Rowmapper中处理结果集,封装成对象。一个为接口,一个为继承类。
Util为工具类(程序可能用到的统一代码)
外部引入的包放到WebRoot下的lib包中。
九.servlet与jdbc-ems查询
十.servlet与jdbc-ems添加
十一.servlet与jdbc-ems修改
十二.servlet与jdbc-ems删除与合并
JSP
for循环相当于servlet中的内容,因为小脚本中不能嵌套两个语句,所以要用两个小脚本写for。
Request,session,application,pageContext可以作为域对象存储数据,4种范围对象作用域从小到大顺序如下:pageContext----request----session----application。
内置参数在jsp中已经定义好了,可以直接使用
创建对象,实现转发
静态(指令)
动态
Cookie和Session
将客户端与服务器之间多次交互当作整体来看待,并将多次交互所涉及的数据即状态保存下来。状态指的是数据,管理指的是多次交互时对数据的修改。
(状态管理) 状态指的是数据,管理指的是增删查改等操作。
Cookie只能保存字符串不能保存对象等复杂数据
注:如果是低版本,会出现乱码
Cookie特点
1.只能保存少量数据,长度有限,4kb左右,只能保存字符串,不能保存复杂对象类型。
2.Cookie可以被用户禁止
3.传输过程中,安全性很低。
用login.jsp填表如果有这个用户的话就通过servlet(验证)访问index.jsp。
(Session登录并且保护Index.jsp资源。)
EL表达式和JSTL标签库
bean为一个java类对象。
访问bean属性
输出简单运算结果
获取请求参数
1.导包(mys..中有不用在导了)2.引用
标签:win leo exception har reader tno tchar oca 实体类
原文地址:https://www.cnblogs.com/fayfay/p/13938591.html