xml&tomcat
一、xml
1.简介:可扩展的标签语言(标签自定义)
作用:存储数据(配置文件)
后缀名:.xml
2.xml书写规范(了解)
(1)区分大小写
(2)应该有一个根标签
(3)标签必须关闭
<xx></xx>
<xx/>
(4)属性必须用引号引起来
<xx att="value"/>
(5)标签体中的空格或者换行或者制表符等内容都是作为数据内容存在的
<xx>aa</xx>
<xx> aa </xx>
(6)特殊字符必须转义
例如:<用<表示
>用>表示
满足上面规范的文件我们称之为是一个格式良好的xml文件.
可以通过浏览器浏览
3.xml组成部分(了解)
(1)声明
作用:告诉别人这是一个xml文件
格式:
<?xml ..... ?>
例如:
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='utf-8' standalone="yes|no"?>
要求:
必须在xml文件的第一行
必须顶格写
(2)元素(标签)
格式:
<xx></xx>
<xx/>
要求:
a.必须关闭
b.标签名不能以 xml Xml XML 等等开头
c.标签名中不能出现" "(空格)或者":"等特殊字符.
(3)属性
格式:
<xx 属性名="属性值"/>
例如:
<bean id="1"></bean>
要求:
属性必须用引号引起来
(4)注释
和html一样
<!-- 注释内容 -->
(5)CDATA(字符数据)
xml文件的特殊字符必须转义
通过cdata保证数据原样输出
格式:
<![CDATA[
原样输出的内容
]]>
例如:
<![CDATA[
<img>标签,<table>标签
]]>
4.xml解析
(1)解析方式
a.sax:特点:逐行解析,只能查询,不能增删改
b.dom:特点:一次性将文档加载到内存中,形成一个dom树.可以对dom树进行curd操作
(2)解析技术(了解)
JAXP:sun公司提供,支持DOM和SAX开发包
JDom:dom4j兄弟
jsoup:一种处理HTML的特定解析开发包
★dom4j:比较常用的解析开发包,hibernate底层采用
5.dom4j解析技术(进行查询操作)
使用步骤:
(1)导入jar包(dom4j-1.6.1.jar)
(2)创建一个核心对象 SAXReader
SAXReader reader = new SAXReader();
(3)将xml文档加载到内存中形成一棵树
Document doc=reader.read(xml文件路径);
(4)获取根节点
Element root=doc.getRootElement();
(5)通过根节点就可以获取其他节点(文本节点,属性节点,元素节点)
获取所有的子元素
List<Element> list=root.elements()
获取元素的指定属性内容
String value=root.attributeValue("属性名");
获取子标签标签体:遍历list获取到每一个子元素
String text=ele.elementText("子标签名称")
6.xpath解析技术(扩展) 依赖于dom4j
(1)使用步骤
a.导入jar包(dom4j和jaxen-1.1-beta-6.jar)
b.加载xml文件到内存中
Document doc = new SAXReader().read(xml文件路径);
c.使用api
获取多个
格式:List<Element> selectNodes("表达式");
例如:List<Element> list = doc.selectNodes("/web-app/servlet/servlet-name");
Element ele = list.get(0);
获取一个
格式:Element selectSingleNode("表达式");
例如:Element ele = (Element)doc.selectSingleNode("//servlet/servlet-name");
System.out.println(ele.getText());
(2)表达式的写法(了解)
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
例如一个标签下有一个id属性且有值 id=2;
//元素名[@属性名='属性值']
//元素名[@id='2']
7.反射
使用步骤:
(1)获取class对象
方式1:★
Class clazz=Class.forName("全限定名");// 包名+类名
例如:
Class clazz = Class.forName("com.javaweb.HelloMyServlet");
方式2:
Class clazz=类名.class;
方式3:
Class clazz=对象.getClass();
(2)创建一个实例对象(相当于new 类() 即调用此类的无参构造)
格式:
Object clazz.newInstance();
例如:
HelloMyServlet a = (HelloMyServlet)clazz.newInstance();
(3)获取方法(public修饰的方法)
格式:
Method method=clazz.getMethod("方法名",Class .... paramType);
其中paramType为参数的类型
例如:
Method m = clazz.getMethod("add", int.class,int.class);
(4)执行方法
格式:
method.invoke(Object 实例对象,Object ... 参数);//相当于 实例对象.m(参数...)
Object 实例对象:以前调用方法的对象 就是a
Object ... 参数:该方法运行时需要的参数 就是10和30
执行这个方法 相当于
a.add(10,30);
例如:
method.invoke(a,10,30)
8.xml约束
(1)作用:规定xml中可以出现哪些元素及哪些属性,以及他们出现的顺序.
(2)分类:
DTD约束 :struts hiebernate等等
SCHEMA约束:tomcat 项目 spring等等
9.DTD约束
(1)dtd和xml的关联(一般都会提供好,复制过来即可,有时候连复制都不需要)
方式1:内部关联
格式:
<!DOCTYPE 根元素名 [dtd语法]>
方式2:外部关联-系统关联
格式:
<!DOCTYPE 根元素名 SYSTEM "约束文件的位置">
例如:
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
方式3:外部关联-公共关联
格式:
<!DOCTYPE 根元素名 PUBLIC "约束文件的名称" "约束文件的位置">
(2)dtd语法(了解)
a.元素
<!Element 元素名称 数据类型|包含内容>
数据类型:
#PCDATA:普通文本 使用的时候一般用()引起来
例如:<!ELEMENT servlet-name (#PCDATA)>
包含内容:
该元素下可以出现哪些元素 用()引起来
例如:<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
符号:
* 出现任意次
? 出现1次或者0次
+ 出现至少1次
| 或者
() 分组
, 顺序
b.属性
格式:
<!ATTLIST 元素名 属性名 属性类型 属性是否必须出现>
例如:
<!ATTLIST web-app version CDATA #IMPLIED>
属性类型:
ID:唯一
CDATA:普通文本
属性是否必须出现
REQUIRED:必须出现
IMPLIED:可以不出现
注:一个xml文档中只能添加一个DTD约束
(3)学习要求
可以根据约束文件写出相应xml文件.(按f2或者 alt+/提示写出内容即可)
(4)一个xml文档中只能有一个dtd约束;
只要在文档上面看到<!DOCTYPE>,就说明使用的是dtd约束
10.SCHEMA约束
(1)一个xml文档中可以添加多个schema约束;
只要在xml文档中看到xmlns,就说明使用的是schema约束
(2)xml和schema的关联
格式:
<根标签 xmlns="名称空间" ...>
<根标签 xmlns:别名="名称空间" ...>
名称空间:
关联约束文件
规定元素是来源于哪个约束文件的,其中xmlns是约束文件的名称
注:schema约束本身也是xml文件.
二、tomcat
1.web的概念
(1)服务器(了解):硬件服务器和软件服务器
web服务器(属于软件服务器)(了解):提供资源供别人访问
(2)web:网页或者资源.
(3)web资源分类:
动态的web资源:内容有可能发生改变的
静态的web资源:内容是一成不变的(几乎看不到)
(4)web开发技术:
动态的web开发技术:servlet jsp php .net
静态的web开发技术:html css ...
(5)web通信机制(了解):基于请求响应机制.
一次请求一次响应,先有请求后有响应
(6)javaweb(了解):通过java语言编写的网页
(7)常见的web服务器:
服务器名称 厂商 特点
weblogic oracle 大型的收费的支持javaee所有规范的服务器
webspere IBM 大型的收费的支持javaee所有规范的服务器
tomcat apache组织 中小型的免费的支持servlet和jsp规范的服务器
2.tomcat安装配置★
(1)下载
.tar .tar.gz:提供给linux系统
.zip .exe :提供给window系统
(2)安装:
解压apache-tomcat-7.0.52.zip即可
(3)启动:
tomcat/bin目录下,双击 startup.bat
打开浏览器:http://localhost:8080
(4)退出:
方式1:点 x
方式2:ctrl+c
方式3:双击 shutdown.bat
(5)常见问题(配置):
a.启动的时候一闪而过
解法方法:正确配置JAVA_HOME
b.端口冲突问题
解法方法:修改tomcat的端口号
打开tomcat/conf/server.xml
大概70行左右 有如下代码:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改port后面的值就可以了.
注意:1024以下的端口号留给系统用的
80端口是留给http协议用的.我们可以使用这个端口号
c.有可能出现的问题(在环境变量中配置CATALINA_HOME,使得只能使用某一个tomcat)
解法方法:删除CATALINA_HOME
3.tomcat目录结构(了解)
bin :存放的可执行程序
conf:配置文件
lib :存放的是tomcat和项目运行时需要的jar包
logs:日志 注意:catalina
temp:临时文件
★★webapps:存放项目的目录
★work:存放jsp文件在运行时产生的java和class文件
4.web项目的目录结构 ★★★
myweb(项目名称) web2.5版本标准的目录结构
|
|---- html css js image等目录或者文件
|
|---- WEB-INF(特点:通过浏览器直接访问不到,通过java程序可以 目录)
| |
| |--- lib(项目的第三方jar包)
| |--- classes(存放的是我们自定义的java文件生成的.class文件)
| |--- web.xml(当前项目的核心配置文件)
| |
访问路径:
http://主机:端口号/项目名称/资源路径
例如:我的项目 myweb
资源 myweb有一个1.html
http://localhost:8080/myweb/1.html
5.web项目发布方式(虚拟目录映射)
★方式1:将项目放到tomcat/webapps下
(了解)方式2:修改 tomcat/conf/server.xml(适用于修改了myweb的位置)
大概130行:
在host标签下 添加如下代码
格式:
<Context path="/项目名" docBase="项目的磁盘目录"/>
例如:
<Context path="/my" docBase="D:\myweb"/>
访问路径:http://localhost:8080/my/1.html
(了解)方式3:
在tomcat/conf/引擎目录/主机目录下 新建一个xml文件
例如:
tomcat/conf/Catalina/localhost
文件的名称就是项目名 文件的内容如下:
<Context docBase="D:\myweb"/>
访问路径:http://localhost:8080/web1/1.html
6.eclipse和tomcat的整合 ★★
(1)Window-Preferences-Server-Runtime Environments-Add
(2)选择Apache Tomcat v7.0-next
(3)找到自己的Tomcat安装目录 例如:D:\instal-package\JavaWeb-install
选择自己的jre 例如:jdk1.7.0_72
(4)Window-show view-servers
(5)选择Use Tomcat installation,Deploy path写wepapps
7.在eclipse发布项目
(1)创建一个项目(动态的web项目)
(2)选择web项目的版本为 2.5(若版本为3.0目录下没有web.xml)
(3)java文件在src目录下
网页或者图片放在webcontent下
(4)发布项目
选中Servers下的Tomcat v7.0 Server-右键-选择Add and Remove
-单击左边要发布的项目-点击Add-Finish
三、常见案例
1.案例一-编写服务器软件
(1)需求:编写配置文件,编写一个服务器软件,按照指定的全限定名(例如:com.itheima.HelloServlet),
根据路径,让服务器创建这个对象,调用指定的方法
(2)技术分析:xml
解析xml
根据全限定名创建一个对象,调用方法
2.案例二-发布项目
(1)需求:通过eclipse能发布自己的项目.
(2)技术分析:eclipse:ide tomcat:服务器 项目:web项目