1.Schema
Schema也是一种XML约束,其出现是为了克服DTD的一些局限性。
Schema有比DTD更为严格的语义与语法约束,其语法也是XML的语法(可以用DOM与SAX来读取内容),Schema比DTD支持更多的数据类型,比DTD更有约束力。其通常的扩展名是.xsd
和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema
编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,这个URI地址叫namespace名称空间,以后XML文件就可以通过这个URI(即名称空间)引用绑定指定名称空间的元素
<?xml version="1.0" encoding="UTF-8"?>
<!--
xmlns:xml的namespace
targetNamespace:绑定名称空间的
elementFormDefault:qualified
<complexType>代表是否是复杂元素
<sequence>代表是否是有序的
-->
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
<!--绑定名称空间,这是唯一的-->
targetNamespace="http://www.itheima.com/1201"
elementFormDefault="unqualified"
>
<element name="书架">
<complexType>
<sequence maxOccurs="unbounded">
<element name="书">
<complexType>
<sequence>
<element name="书名" type="string"></element>
<element name="作者" type="string"></element>
<element name="售价" type="double"></element>
<element name="简介" type="string"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
被约束的文件:
<?xml version="1.0" encoding="UTF-8"?>
<书架
xmlns="http://www.itheima.com/1201"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itheima.com/1201 book1.xsd">
<书>
<书名>葵花宝典</书名>
<作者>曾哥</作者>
<售价>39.3</售价>
<简介>自宫!</简介>
</书>
<书>
<书名>九阴真经</书名>
<作者>王重阳</作者>
<售价>59.8</售价>
<简介>白骨爪</简介>
</书>
</书架>
targetNamespace元素用于指定schema文档中声明的元素属于哪个名称空间。
elementFormDefault元素用于指定局部元素是否受到该schema指定targetNamespace所指定的名称空间限定
attributeFormDefault元素用于指定局部属性是否受到该schema指定targetNamespace所指定的名称空间限定
如何引入Schema:
//首先指定命名空间
xmlns="http://www.itheima.com/1201"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
//引入哪个xsd文件下的哪个命名空间的约束
xsi:schemaLocation="http://www.itheima.com/1201 book1.xsd"
2.WEB概述
WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术:html css js 图片 视频...
常用动态web资源开发技术:JSP/Servlet、ASP、PHP等
在Java中,动态web资源开发技术统称为Javaweb,我们课程的重点也是教大家如何使用Java技术开发动态的web资源,即动态web页面。
服务器
需要一个硬件(电脑),并在电脑上安装一个服务器的软件。
常见的web服务器:
WebLogic:BEA公司产品. 收费的web服务器 现在已经被Oracle收购了. 支持所有的JAVAEE规范
WebSphere:IBM公司产品. 收费的web服务器 支持所有的JAVAEE规范
Tomcat:apache组织 开源的 免费的web服务器 支持Servlet/JSP规范.
Tomcat
配置Tomcat常见错误:
1.没有配置JAVA_HOME
2.端口号冲突: tomcat默认端口号 8080。
http默认端口号 :80
***** 修改tomcat端口号:去 tomcat/conf/server.xml 重启服务器.
80端口 很容易占用了.
异常:java.net.BindException: Address already in use: JVM_Bind 端口被占用了.
* 1.将占用80端口的进程 结束.
xp: FPort工具
win7: 使用doc命令:netstat -ano
win7自带一个服务器 IIS --- 占用80 开机自动启动. 进入服务界面:services.msc
* 2.将tomcat的80端口 修改了.
3.配置了一个环境变量:
CATALINA_HOME:配置 配置错了。 tomcat启动不了.
配置正确了 --- 启动机器上任何一个tomcat 都相当于 启动CATALINA_HOME配置的tomcat.
Tomcat目录层次结构:如图
web应用程序
WEB应用程序指供浏览器访问的程序,通常也简称为web应用,Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。
虚拟目录的映射方式(如何部署web程序)
1、在server.xml文件的host元素中配置,例如:
2、在Tomcat6中,不再建议在server.xml文件中配置context元素,细节查看tomcat服务器关于context元素的说明
在conf/Catalina/localhost/bb.xml
3、让tomcat自动映射: tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问
配置虚拟主机
在一个tomcat服务器中可以放置多个网站<Host>,所谓配置虚似主机,就是在tomcat服务器中配置一个网站。如需在WEB服务器中配置一个网站,需使用Host元素进行配置,例:
<Host name=”site1” appBase=”c:\app”></Host>
配置的主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册
C:\WINDOWS\system32\drivers\etc\hosts
缺省虚似主机 DefaultHost
实例:在本机搭建百度虚拟主机
1、抓取baidu主页
2、在c盘 新建虚拟主机目录 c:\baidu
3、在c:\baidu下新建 百度网站目录 website (复制网站页面到 website目录)
4、在conf/server.xml 配置虚拟主机
<Host name="www.baidu.com" appBase="C:\baidu"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
5、在本机 hosts文件添加
192.168.1.250 www.baidu.com
*** 测试 cmd中 ping www.baidu.com 测试hosts是否配置成功
6、将website配置 缺省网站 在<Host> 元素内部添加<Context> 元素
<Context path="" docBase="website" />
7、将baidu.htm 配置默认欢迎页面 conf/web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>baidu.htm</welcome-file>
</welcome-file-list>
3.Http协议
客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式
基于TCP连接的传输协议,其默认端口是80
基于请求响应模型:
* 必须先有请求 后有响应.
* 请求和响应必须成对出现.
通过一个telnet命令 感受HTTP协议.
1.cmd>telnet localhost 80 回车
2.解决telnet命令乱码 ctrl+] 回车
3.telnet命令 不能出错
GET /day02/1.html HTTP/1.1
host:localhost
点两下回车.
Http协议的版本 1.0 和 1.1
1.0 客户端和服务器连接了一次以后 马上就会断开
1.1 客户端和服务器连接了一次以后 不是马上断开
HTTP请求
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:
一个请求行、若干消息头、以及实体内容,如下所示 :
请求行中的GET称之为请求方式,通常请求方式有: GET、 POST
用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。
POST提交数据不会显示到地址栏会显示到请求体中一般没有大小限制.
Get提交数据显示到地址栏中提交的数据有大小限制一般不会超过1kb.
请求头重点:
If-Modified-Since、Referer、User-Agent
User-Agent : 客户端浏览器类型 MSIE IE浏览器 Firefox 火狐浏览器.
If-Modified-Since:结合 响应中一个头信息 Last-Modified 查找本地缓存.
Referer : 代表网页来源。防盗链.
HTTP响应
一个HTTP响应代表服务器向客户端回送的数据,它包括:一个状态行、若干消息头、以及实体内容 。
在一个HTTP响应中,WEB服务器通过响应头向web客户端描述客户端的请求成功与否,以及它所发送的数据类型等一些信息,客户端通过这些信息,进而可以知道如何对数据进行处理。
响应行里面相关响应码:
200 : 请求和响应都OK
302 : 需要 重定向 * 转发
304 : 查找本地缓存
404 : 请求资源不存在
500 : 服务器内部出错
响应头重点:
Location : 结合302状态码 完成重定向.
Last-Modified : 和请求 If-Modified-Since 一起用 查找本地缓存.
Refresh : 页面自动刷新或跳转.
Content-Disposition: 下载时候使用的。
禁用浏览器缓存
Expires: -1
Cache-Control: no-cache
Pragma: no-cache