XML(配置文件)
XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。
常见配置文件类型
1 根标签只能有一个
2 第一行永远是<?xml version="1.0" encoding="UTF-8"?>不允许放任何东西
两种约束(无需自己写) dtd 简单 约束没有schema细致
schema 复杂 约束细致
- 根标签: 根标签有且只能有一个。
- 标签关闭
- 双标签:开始标签和结束标签必须成对出现。
- 单标签:单标签在标签内关闭。
- 标签嵌套: 可以嵌套,但是不能交叉嵌套。
- 注释不能嵌套
- 标签名、属性名建议使用小写字母
- 属性
- 属性必须有值
- 属性值必须加引号,单双都行
XML文档声明 这部分基本上就是固定格式,要注意的是文档声明一定要从第一行第一列开始写
DOM4J的使用步骤
1. 导入jar包 dom4j.jar
2. 创建解析器对象(SAXReader)
3. 解析xml 获得Document对象
4. 获取根节点RootElement
5. 获取根节点下的子节点
代码举例:
public class TestDom4j {
@Test
//java如何读取XML文件;用反射中的类加载器加载文件,并使用dom4进行解析和获取配置
public void testRead() throws Exception{
//读取jdbc.xml配置文件,获得document对象
SAXReader saxReader=new SAXReader();
//通过类加载器获得指向字节码根路径下的指定文件的输入流
InputStream resourceAsStream=TestDom4j.class.getClassLoader().getResourceAsStream("jdbc.xml");
//通过输入流获取配置文件,解析成一个dom对象
Document document=saxReader.read(resourceAsStream);
//从document对象上获取配置文件信息
/*
* Node 节点
* Element 元素节点
* Attribute 属性节点
* Text 文本节点
* */
Element rootElement=document.getRootElement();//读取根标签-----------node
System.out.println(rootElement.getName());
//获取元素(整个jdbc元素)下的子元素(div,test,formal)
List<Element> elments= rootElement.elements();
for (Element elment : elments) {
System.out.println("\t"+elment.getName());
//从元素上获取属性
Attribute idAttribute = elment.attribute("id");
System.out.println("\t\t"+idAttribute.getName()+"="+idAttribute.getValue());
//继续获取子元素
List<Element> eles = elment.elements();
for (Element ele : eles) {
System.out.println("\t\t"+ele.getName()+":"+ele.getText());//获取该子元素的名字和文本
}
}
}
}
WEB项目标准结构
解释:
app 本应用根目录
static 非必要目录,约定俗成的名字,一般在此处放静态资源 ( css js img)
WEB-INF 必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录
classes 必要目录,src下源代码,配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现
lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现
web.xml 必要文件,web项目的基本配置文件. 较新的版本中可以没有该文件,但是学习过程中还是需要该文件
index.html 非必要文件,index.html/index.htm/index.jsp为默认的欢迎页
url的组成部分和项目中资源的对应关系
WEB项目部署的方式
> 方式1 直接将编译好的项目放在webapps目录下
> 方式2 将编译好的项目打成war包放在webapps目录下,tomcat启动后会自动解压war包(其实和第一种一样)
> 方式3 可以将项目放在非webapps的其他目录下,在tomcat中通过配置文件指向app的实际磁盘路径 在磁盘的自定义目录上准备一个app
HTTP
简介
1 客户端和服务端交互的方式
请求 (永远都是客户端向服务端发送)
响应 (永远都是服务端向客户端返回)
2 客户端和服务端交互数据的格式
请求时发送的数据称之为请求报文
响应时返回的数据称之为响应报文
报文是有规定格式的:
报文的首部
行(信息)
头(信息)
报文的主体
请求和响应的报文格式
请求报文
> 客户端发给服务端的报文
请求报文格式
请求首行(请求行); GET/POST 资源路径?参数 HTTP/1.1(请求协议)
请求头信息(请求头);(key:value key:value……)
空行;
请求体; GET请求数据不放在请求体,放在URL上(搜索栏)(POST请求数据才放在请求体中)
form表单发送GET请求特点
1、由于请求参数在请求首行中已经携带了,所以没有请求体,也没有请求空行
2、请求参数拼接在url地址中,地址栏可见\[url?name1=value1\&name2=value2],不安全
3、由于参数在地址栏中携带,所以由大小限制\[地址栏数据大小一般限制为4k],只能携带纯文本
4、get请求参数只能上传文本数据
5、没有请求体。所以封装和解析都快,效率高, 浏览器默认提交的请求都是get请求比如:地址栏输入回车,超链接,表单默认的提交方式
form表单发送post请求特点
1、POST请求有请求体,而GET请求没有请求体。
2、post请求数据在请求体中携带,请求体数据大小没有限制,可以用来上传所有内容\[文件、文本]
3、只能使用post请求上传文件
4、post请求报文多了和请求体相关的配置\[请求头]
5、地址栏参数不可见,相对安全
6、post效率比get低