一、XML
1.1XML简介
1.1.1什么的XML
XML是可扩展的标记性语言
1.1.2XML的作用
xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在JSON为主)。
Student[id=1,name="张三"]
Student[id=2,nane="李四"]
students.xml
<students>
<student>
<id>1</id>
<name>张三</name>
</student>
<student>
<id>2</id>
<nane>李四</name>
</student>
</students>
1.2XML语法
1.2.1文档声明
<?xml version="1.0" encoding="utf-8”?>就是文件声明
version 表示xmL的版本
encoding 表示xmL文件本身的编码
<?xml version="1.0" encoding="utf-8”?>
<books>< ! --books表示多个图书信息-->
<book sn="SN123412123412">< !--book表示一个图书信息―sn属性表示图书序列号-->
<name>时间简史</name>< ! -- name标签表示书名-->
<author>霍金</author>< !-- author表示作者-->
<price>75</price>< ! --price表示图书价格-->
</book>
</books>
1.2.2XML注释
html和XML注释一样
1.2.3XML元素(标签)
什么是XML元素?
XML元素指的是从<且包括〉开始标签直到(且包括>结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性
XML元素必须遵循以下命名规则:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符“xml”或者XML、xmL开始
- 名称不能包含空格
1.2.4xml属性
xml的标签属性和html 的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个属性。每个属性的值必须使用引号引起来。的规则和标签的书写规则一致。
<book id="SN12341234123" name="张三的犯罪"/>
1.2.5语法规则
- 所有XML元素都须有关闭标签(也就是闭合)
- XML标签对大小写敏感
- XML必须正确地嵌套
- XML文档必须有根元素且唯一
- XML的属性值须加引号
- 文本区域(CDATA区)
CDATA格式:
<!I[CDATA[云里可以把你输入的字符原样显示,不会解析xml ]]>
1.3XML解析技术
xml可扩展的标记语言。
不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom 技术来解析。
第三方的解析:
jdom在dom基础上进行了封装
dom4j又对jdom进行了封装
pull主要用在Android手机开发,是在跟sax非常类似都是事件机制解析xml文件。
1.3.1使用dom4j读取xml文件得到Document对象
由于dom4j 它不是sun公司的技术,而属于第三方公司的技术,我们需要使用dom4j就需要到dom4j官网下载dom4j的 jar包。
- 创建一个lib目录,并添加dom4j的jar包。并添加到类路径。
- 创建一个saxReader输入流,去读取xml配置文件,生成Document对象
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class Dom4jTest {
@Test
public void test1( ) throws Exception {
//创建一个saxReader输入流,去读取 xmL配置文件,生成Document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books.xm1" );
system.out.println(documenty);
}
}
- 读取books.xmL文件生成Book类
@Test
public void test2( ) throws Exception{
//1读取books .xmL文件
SAXReader reader - new SAXReader( );
//在Junit测试中,相对路径是从模块名开始算
Document document = reader.read( "src/ books.xml");
//2通过Document对象获取根元紊
Element rootElement = document.getRootElement( );
System.out.printLn( rootELement );
//3通过根元紊获取book标签对象
//element( )和eLements()都是通过标签名查找子元紊
List <Element> books = rootElement.elements( "book" );
//4遍历,处理每个book标签转换为Book类
for (Element book : books) {
// asXNL()把标签对象。转换为标签字符串
System.out.println( book.asXML()):
// getText();可以获取标签中的文本内容
Element nameElement = book.element( "name" );
String nameText = nameElement.getText();
}
二、Tomcat
2.1 JavaWeb
2.1.1 什么是JavaWeb
JavaWeb是指,所有通过Java语言编写可以通过浏览器访问的程序的总称,叫JavaWeb。JavaWeb是基于请求和响应来开发的。l
2.1.2 什么是请求
请求是指客户端给服务器发送数据,叫请求Request。
2.1.3 什么是请求
响应是指服务器给客户端回传数据,叫响应 Response
2.2 Web资源的分类
web资源按实现的技利和呈现的效果的不同,又分为静态资源和动态资源两种。
2.2.1 静态资源
html、css、js、txt、mp4视频,jpg图片
2.2.2 动态资源
jsp 页面、serviet程序
2.3 Tomcat
2.3.1 目录介绍
bin :专门用来存放Tomcat服务器的可执行程序
conf :专门用来存放Tocmat服务器的配置文件
lib :专门用来存放Tomcat服务器的jar包
logs :专门用来存放Tomcat服务器运行时输出的日记信息
temp :专门用来存放Tomcdat运行时产生的临时数据
webapps :专门用来存放部署的web工程。[
work :是Tomcat工作时的目录,用来存放Tomcat运行时jsp翻译为servlet 的源码,和session钝化的目录。
2.3.2 修改端口号
Mysql默认的端口号是:3306
Tomcat默认的端口号是:8080
找到Tomcat目录下的conf目录,找到 server.xml配置文件。
技到Connector标签,修改port属性为你需耍的端口号。
端口号范园:1 - 65535
修改完端口号,一定要重启Tomcat服务器才能生效
2.3.3 如何部暑web工程到Tomcat中
第一种方法:只需要把web工程的目录拷贝到Tomcat的 webapps目录下即可。|
第二种部署方法:
找到Tomcat下的conf目录\Catalina\localhost\下,创建如下的配置文件:
context表示一个工程上下文
path表示工程的访问路径:/ abc
docBase表示你的工程目录在哪里
<Context path="/abc" dobBase="E:\book”/>
2.3.4 动态web王程自录的介绍
src :日录存在自已编写的java源代码
web :目录专门用来存放web工程的资源文件。
比如: html页面
css文件
js文件等等
WEB-INF :目录是一个受服务器保护的目录,浏览器无法直接访问到此目录的内容
web. xml :它是整个动态web工程的配置部署描述文件。可以在这些配置很多web工程的组件
比如:
Servlet程序
Filter过滤器
Listener监听器
Session超时
……
lib :目录用来存放第三方的jar 包。( IDEA还需要自己配置导
三、Servelt
3.1、Servelt技术
3.1.1什么是Servelt
1、servlet是JavaEE规范之一。规范就是接口
2、Servlet 就JavaWeb三大组件之一。三大组件分别是:serviet程序、Filter过滤器、Listener监听器。
3、Servlet 是运行在服务器上的一个 java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
3.1.2手动实现Servlet程序
1、编写一个类去实现servlet接口
2、实现service方法,处理请求,并响应数据
3、到web.xml中去配置servlet程序的访问地址
<! -- servlet标签给Tomcat配置servlet程序-->
<servlet>
<! --servlet-name标签ServLet程序起一个别名(一般是类名)-->
<servlet-name>Helloservlet</servlet-name>
<! --servlet-class是Servlet程序的全类名-->
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet>
<! --servLet-mapping标签给servlet程序配置访问地址-->
<servlet-mapping>
<! --servLet-name标签的作用是告诉服务器,我当前配置的地址给哪个ServLet程序使用-->
<servlet-name>Helloservlet</servlet-name>
<! --urL-pattern标签配置访问地址<br/>
<! -- / 斜杠在服务器解析的时候,表示地址为: http://ip: port/工程路径-->
<! -- /hello 表示地址为: http: / /ip:port/工程路径/hello-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
3.1.3Servlet的生命周期
1、执行Servlet构造器方法2、执行init初始化方法
第一、二步,是在第一次访问的时候,创建servlet程序会调用。
3、执行service方法
第三步,每次访问都会调用。
4、执行destroy销毁方法
第四步,在web工程停止的时候调用。
3.2、ServletConfig类
3.2.1ServletConfig类的三大作用
servlet程序和servletConfig对象都是由Tomcat负责创建,我们负责使用。
Servlet程序默认是第一次访问的时候创建,servletConfig 是每个Servlet程序创建时,就创建一个对应的ServlietConfig对象。|
- 可以获取Servlet程序的别名servlet-name的值
- 获取初始化参数init-param
- 获取ServletContext对象
重写init方法时候要带上父类的init的方法,原因:重写继承的父类时,子类调用重写的方法时使用子类的方法,但config被封装在父类里了,如果不加super .init(config);就会形成空指针异常错误
@Override
public void init(Servletconfig config) throws ServletException {
super .init(config);
system.out.println(“重写了init初始化方法,做了一些工作");
3.3ServletContext类
3.3.1什么是ServletContext类
- ServletContext是一个接口,它表示Servlet上下文对象
- 一个web工程,只有一个ServletContext对象实例。
- ServletContext对象是一个域对象。
什么是域对象?
域对象,是可以像Map一样存取数据的对象,叫域对象。这里的域指的是存取数据的操作范围。
Name | 存数据 | 取数据 | 删除数据 |
---|---|---|---|
Map | put() | get() | remove() |
域对象 | setAttribute() | getAttribute() | removeAttribute() |
3.3.2ServletContext类的4个作用
- 获取web.xml中配置的上下文参数context-param
- 获取当前的工程路径,格式:/工程路径
- 获取工程部署后在服务器硬盘上的绝对路径
- 像Map一样存取数据
3.4、HTTP协议
3.4.1、HTTP协议
所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫 HTTP协议。
HTTP协议中的数据又叫报文。
3.4.2、Get请求的HTTP协议格式
客户端给服务器发送数据叫请求。
服务器给客户端回传数据叫响应。
1、请求行
(1)请求的方式 GET
(2)请求的资源路径[+?+请求参数]
(3)请求的协议的版本号 HTTP/1.1
2、请求头
key : value组成 不同的键值对,表示不同的含义。
Key | 作用 |
---|---|
Accept | 告诉服务器,客户端可以接收的数据类型 |
Accept-Language | 告诉服务器客户端可以接收的语言类型 |
User-Agent | 浏览器的信息 |
Accept-Encoding | 告诉服务器,客户端可以接收的数据编码(压缩)格式 |
Host | 表示请求的服务器ip和端口号 |
Connection | 告诉服务器请求连接如何处理 |
3.4.3、POST请求的HTTP协议格式
1、请求行
(1)请求的方式 POST
(2)请求的资源路径[+?+请求参数]
(3)请求的协议的版本号 HTTP/1.1
2、请求头
(1)key : value 不同的请求头,有不同的含义
空行
3、请求体===>>>就是发送给服务器的数据|
3.4.4、哪些是GET请求,哪些是POST请求
GET请求有哪些:
1、form标签 method=get
2、a标签
3、link标签引入css
4、Script标签引入js文件
5、img标签引入图片
6、iframe引入html页面
7、在浏览器地址栏中输入地址后敲回车
POST请求有哪些:
8、form标签method=post
3.4.5、响应的HTTP协议格式
1、响应行
(1)响应的协议和版本号(2)响应状态码
(3)响应状态描述符
2、响应头
(1) key : value 不同的响应头,有其不同含义
空行
3、响应体---->>>就是回传给客户端的的数据
3.4.6、常见的响应码
200 | 表示请求成功 |
---|---|
301 | 访问地址永久移动 |
302 | 表示请求重定向 |
404 | 表示请求服务器已经牧到了,但是你要的数据不存在(请求地址错误) |
500 | 服务器已经收到请求,但是服务器内部错误〈代码错误) |