第8章WEB08-XML&Tomcat篇

今日任务
? 通过XML作为配置文件完成模拟Tomcat的案例
? 安装Tomcat服务器发布一个WEB项目
教学导航
教学目标
了解XML的基本语法,并能够编写正确格式的XML.
了解XML的约束.
掌握XML的解析.
熟练掌握并使用tomcat发布一个web应用
了解HTTP协议及掌握HTTP协议中的常用的头信息.
教学方法
案例驱动法
1.1 上次课内容回顾:
JDBC :

  • JDBC的概述:

    • JDBC:Java Database Connectivity
  • JDBC的API:
    • Connection:连接.

      • 获得连接.
      • 执行事务的管理.
    • Statement:
      • 执行SQL语句.

        • int executeUpdate(String sql);
        • ResultSet executeQuery(String sql);
        • boolean execute(String sql);
    • ResultSet:
      • getXXX(int idx),getXXX(String name);
  • JDBC完成CRUD的操作:
    连接池:
  • 自定义连接池:(了解)
    • 增强一个类中的某个方法有几种方式:

      • 继承:

        • 控制控制这个类的构造.
      • 装饰者模式:
        • 增强的类和被增强类实现相同的接口.
        • 在增强类中获得被增强的类引用.
          • 接口中方法过多,增强其中一个方法,其他方法都要重写.
      • 动态代理:
        • 被增强的类实现了接口即可.

          • 编写代码的时候麻烦.
  • DBCP:
  • C3P0:
    DbUtils:工具类:
  • 使用DBUtils完成CRUD的操作
    1.2 案例一:使用XML作为配置文件的方式完成模拟Tomcat.1.2.1 需求:
    现在有一套页面,这套页面想被其他人访问到.端口号可以进行修改的-(不修改源码的基础上).
    1.2.2 分析:1.2.2.1 技术分析:
    【Java基础的网络编程】
    【XML的概述】
    ? 什么是XML:

**** 允许用户自定义标签的!!!
? XML的作用:

  • 传输 和 存取数据.
  • 软件的配置文件.
    ? XML的使用:
  • XML的语法.
    【XML的语法】
    ? XML的基本语法:
  • XML必须有关闭标签
  • 区分大小写
  • 属性需要有引号
  • 标签必须正确嵌套.
    ? XML的文档声明
  • 文档声明:通常出现在XML的第一行第一列的位置!!!
  • 写法:
    • <?xml 属性名=”属性值” 属性名=”属性值” ...?>

      • version :必须的. 使用”1.0”
      • encoding :字符集. 是使用浏览器打开的时候采用的默认的字符集的编码.
      • standalone :描述XML文档是否需要依赖其他的文件.
        ? XML的注释
  • <!-- XML的注释 -->
    ? XML的元素
  • 元素(标签)的命名规范:

    ***** 名称中不能包含冒号(:)
    ? XML的属性
  • 属性的名称规范与元素一致.
    ***** 属性需要使用引号!
    ? XML的特殊字符和CDATA区
  • XML的特殊字符:
  • XML的CDATA区:(CDATA:Character Data)
  • <![CDATA[ 内容 ]]>
    【XML的解析】
    ? XML的解析:从XML文档中获得想要的数据(通过代码完成的.)
    ? XML的解析的方式(*****):
  • DOM解析:DOM:Document Object Model.
  • SAX解析:Simple Api for XML.
  • DOM和SAX的区别:

    ? 针对这两种解析的方式,不同的公司提供了不同的API的实现.
  • JAXP :SUN公司提供的一套XML的解析的API.
  • JDOM :开源组织提供了一套XML的解析的API-jdom.
  • DOM4J :开源组织提供了一套XML的解析的API-dom4j.
  • pull :主要应用在Android手机端解析XML.
    ? DOM4J的入门案例步骤:
  • 【步骤一】导入jar包.dom4j-1.6.1.jar
  • 【步骤二】创建解析器
  • 【步骤三】解析文档获得代表文档的Document对象.
  • 【步骤四】获得跟节点.
  • 【步骤五】从跟节点下查找其他的节点.
  • 代码实现:
@Test
/**
 * 获得元素的内容:查询的操作.
 */
public void demo1() throws Exception{
// 创建解析器
SAXReader reader = new SAXReader();
// 解析XML的文档
Document document = reader.read("xml/demo1.xml");
// 获得跟节点
Element root = document.getRootElement();
System.out.println(root.getName());
// 查找跟节点下的子节点. element() elements();
Element pElement = root.element("person"); // 查找的是第一个person元素
// root.elements("person").get(1); // 查找的是第二个person元素
Element nElement = pElement.element("name");
Element aElement = pElement.element("age");
Element sElement = pElement.element("sex");
System.out.println(nElement.getText());
System.out.println(aElement.getText());
System.out.println(sElement.getText());
}
? XPath:
* dom4j支持XPath的jar包.
    * jaxen-1.1-beta-6.jar
* dom4j的XPath支持的API:
    * List document.selectNodes(String xPath);
    * Node document.selectSingleNode(String xPath);
* 代码:
@Test
/**
 * DOM4J的XPath的写法:
 */
public void demo2() throws Exception{
// 创建解析器:
SAXReader reader = new SAXReader();
// 解析XML返回Document对象.
Document document = reader.read("xml/demo1.xml");
/*List<Node> list = document.selectNodes("//name");
for (Node node : list) {
Element element = (Element) node;
System.out.println(element.getText());
}*/
List<Node> list = document.selectNodes("//person[‘@id‘]");
for (Node node : list) {
Element element = (Element) node;
System.out.println(element.attributeValue("id"));
}
}

1.2.3 代码实现:

【步骤一】:将基础班的Socket编写的代码复制到工程中.
【步骤二】:新建xml.在conf/server.xml
【步骤三】:使用DOM4J解析XML
public class MyServer {
public static void main(String[] args) throws Exception {
// 解析XML:
// 创建解析器
SAXReader reader = new SAXReader();
// 解析XML文档:
Document document = reader.read("conf/server.xml");
Element element = (Element)document.selectSingleNode("//Connector[‘@port‘]");
String port = element.attributeValue("port");
// ServerSocket 对象可以监听端口
ServerSocket serversocket = new ServerSocket(Integer.parseInt(port));
while(true) {
Socket socket = serversocket.accept();        // 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象
//System.out.println(socket.getInetAddress());
// 一旦有客户来访问, 就另开一个新线程去提供服务, main线程继续等待下一个客户的连接
new Thread(new MyService(socket)).start();

}
}

}

1.2.4 总结:1.2.4.1 XML的约束:
? XML的约束的额概述:

  • 什么是XML的约束 :就是用来约束XML的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数.
  • XML的约束 :用来规范XML的写法.
    ***** XML的约束的种类及区别?
    • DTD 和 Schema :

      • 区别:
        1.DTD语法是自成一体的.Schema语法就是XML的语法.
        2.Schema的语法就是XML的语法所以更容易被解析器所解析.
        3.Schema支持名称空间.
        4.Schema有比DTD更加强大的语义和语法的约束.
        ? DTD的语法 :(了解)
  • DTD的引入方式:
    • 内部的DTD:
      <!DOCTYPE persons [

    ]>

    • 外部的DTD:

      • 一种本地DTD:
        <!DOCTYPE persons SYSTEM "unknown.dtd">
      • 一种网络DTD:
        <!DOCTYPE persons PUBLIC "//UNKNOWN/" "unknown.dtd">
  • DTD的语法:
    • 元素:

      • <!ELEMENT 元素名 元素类型>

        • 元素类型:

          • EMPTY
          • ANY
          • 子元素
            • 是否有序: 使用 逗号(,)或者竖线(|)表示.
            • 出现的次数:?:零次或一次 +:一次或多次 *:零次或多次
          • PCDATA
            • 属性:
            • <!ATTLIST 元素名称 属性名称 属性的类型 属性的约束>
            • 属性的类型:
            • ID类型:表示属性值需要是唯一的.
            • CDATA类型:普通的字符串.
            • 枚举:
            • 属性的约束:

? Schema的语法:(了解)
<?xml version="1.0" encoding="UTF-8"?>

1.3 案例二:使用Tomcat发布一个WEB项目.1.3.1 需求:
有一个web项目,需要通过tomcat服务器被其他人访问到.
1.3.2 分析:1.3.2.1 技术分析:
【软件的架构】
? C/S架构的软件:
* Client / Server 客户端和服务器端的软件. 都是需要在PC端安装的软件. 比如 QQ,迅雷,暴风...
* 优点:效果炫,一部分代码写到客户端(速度快).
* 缺点:服务器端更新,客户端都需要更新.
? B/S架构的软件:
* Browser / Server 浏览器端和服务器端的软件. 不需要安装到PC端,只需要有一个浏览器即可. 比如 京东,网银,WEBQQ,WEB迅雷...
* 优点:服务器端更新,客户端浏览器不需要进行更新.
* 缺点:效果不炫,所有的代码运行都在服务器端,导致服务器压力过大.
* 效果:使用HTML5,CSS3可以做出很炫效果.
* 服务器端压力:搭建服务器的集群.而且还有AJAX技术.
【WEB的资源】
? 静态资源:
* HTML,CSS,JS,图片...
? 动态资源:
* PHP :
* ASP :
* Servlet/JSP :
【服务器】
? 硬件:其实就是一台配置很高的电脑.
? 软件:必须在一台电脑上安装服务器软件.这台电脑称为是WEB服务器.
【常见WEB服务器】
? Apache :发布PHP的.LAMP:Linux Apache MySQL PHP.
? IIS :发布ASP的.
? WebSphere :IBM公司研发,收费的大型服务器软件,支持EE的所有的开发规范.
? WebLogic :BEA公司研发,收发的大型服务器软件,支持EE的所有的开发规范.
? Tomcat :Apache组织研发,免费的小型的服务器软件,支持Servlet/JSP的开发规范.
? JBoss :
【WEB动态资源目录结构】
website
|-----静态资源
|-----WEB-INF
|-----web.xml :必须的
|-----classes :可选的
|-----lib :可选的
1.3.3 案例实现:1.3.3.1 Tomcat的安装:
【下载Tomcat】
http://tomcat.apache.org/download-70.cgi
【安装Tomcat】
解压即可.
【了解Tomcat的目录结构】
![](http://i2.51cto.com/images/blog/201804/10/13b51a8112838e52c315f8e97bfec566.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
* bin :tomcat的执行的文件.
* conf :tomcat的配置文件.
* lib :tomcat运行的需要的jar包.
* logs :tomcat的运行的日志文件.
* temp :tomcat产生临时文件存放的路径.
* webapps :tomcat发布的web项目的路径.
* work :tomcat运行JSP的时候,JSP翻译成Servlet的代码存放的路径.
1.3.3.2 发布一个WEB项目到Tomcat中.
? 发布一个WEB工程到Tomcat中共有三种方式:
* 1.直接将工程copy到tomcat/webapps下.
* 2.配置tomcat虚拟路径:
* 3.配置tomcat虚拟路径:
【方式一:直接将项目copy到webapps下】
* 将工程复制到webapps即可.
【方式二:配置tomcat的虚拟路径-不推荐】
* 在tomcat/conf/server.xml文件中进行配置:
* 在标签下配置:
*
【方式三:配置tomcat的虚拟路径-推荐】
* 在tomcat/conf/Catalina/localhost/xxx.xml
* 配置
* xxx作为虚拟路径的名称.
1.3.4 总结:1.3.4.1 使用STS工具发布一个WEB工程.
1.3.4.2 Tomcat常见问题:
【没有配置JAVA_HOME引发tomcat一闪消失】
* 一定要配置JAVA_HOME环境变量.
【端口号冲突的问题】
* 一种:将占用端口的应用结束.
* netstat -ano
* 打开任务管理器结束:
* 二种:修改自身应用的端口号.
* tomcat/conf/server.xml

原文地址:http://blog.51cto.com/13587708/2096341

时间: 2024-10-10 08:42:17

第8章WEB08-XML&Tomcat篇的相关文章

tomcat篇之结合apache+tomcat+memcached做session共享

tomcat1:192.168.1.155 tomcat2:192.168.1.11 apache:192.168.1.155 前端代理apache设置,参考前面的tomcat文章(基于mod_proxy和mod_jk模块) 这里不再赘述,直接贴配置文件: cd /etc/httpd/conf.d [[email protected] conf.d]# cat mod_jk.conf LoadModule  jk_module  modules/mod_jk.so JkWorkersFile/e

Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务器所提供的SQL语句的巨大威力.与此同时,MyBaits消除了书写大量冗余代码的痛苦,它使使用SQL更容易. 在代码里直接嵌套SQL语句是很差的编码实践,并且维护起来困难.MyBaits使用了映射器配置文件或注解来配置SQL语句.在本章中,我们会看到具体怎样使用映射器配置文件来配置映射SQL语句.

Web for pentester_writeup之XML attacks篇

Web for pentester_writeup之XML attacks篇 XML attacks(XML攻击) Example 1 - XML外部实体注入(XXE) Payload http://192.168.219.136/xml/example1.php?xml= <!DOCTYPE a[<!ENTITY b SYSTEM "file:///etc/passwd">]><c>%26b;</c> Example 2 - Xpath

Xml &amp; Tomcat

Xml & Tomcat Xml eXtendsible markup language 可扩展的标记语言 XML 有什么用? 可以用来保存数据 可以用来做配置文件 数据传输载体 定义xml 其实就是一个文件,文件的后缀为 .xml 文档声明 简单声明,version : 解析这个xml的时候,使用什么版本的解析器解析 <?xml version="1.0" ?> encoding : 解析xml中文字的时候,使用什么编码来翻译 <?xml version=&

Lucene/Solr搜索引擎开发系列 - 第2章 Solr安装与部署(Tomcat篇)

一.安装环境 图1-1 Tomcat和Solr的版本     我本机目前使用的Java版本为JDK 1.8,因为Solr 4.9要求Java版本为1.7+,请注意. 二.Solr部署到Tomcat流程 图1-2 Tomcat安装目录     1.如图1-2所示,为Tomcat的解压目录: 图1-3 Tomcat首页     2.在目录E:\apache-tomcat-8.0.9\bin中,找到startup.bat文件,双击该文件,启动Tomcat服务器,等待几秒钟后,在浏览器中输入http:/

tomcat篇之与nginx结合做静态分离和负载均衡

tomcat1:192.168.1.11 tomcat2:192.168.1.155 nginx:192.168.1.155 静态分离:192.168.1.155 nginx: location / { root   /www/webapps/; index  index.html index.htm index.jsp; } location ~* \.(jsp|do)$ { proxy_set_header X-Forwarded-Host $host; proxy_set_header X

web.xml引入 xml (tomcat 7.0.52) 以上版本报错!

今天在搞工作流,tomcat7.0.57 总是报错,解析不了web.xml引用的joa.xml . <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app [<!ENTITY joa SYSTEM  "joa.xml">]> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst

J2ee Tutorial学习笔记(第二章Understanding XML)

[译者注]在本文中,作者提出了使用k-means算法来对图像进行色彩还原,介绍算法的步骤,同时应用在图像上,通过对比还原前后的图像,来证明k-means算法的有效性.以下为译文: k-means是机器学习中最著名.最广泛使用的算法之一.在这篇文章中,将使用k-means算法来减少图像上的颜色(但不减少像素),从而也减少了图像的大小.在这个领域不需要任何基础知识,因为可执行应用程序文件(大小为150MB,这是由于长时间的Spark依赖)已经提供了友好的用户界面.所以你可以很容易地用不同的图像来做实

读了两章的 How Tomcat Works

周一发现了一本书.How Tomcat Works 惯例先到豆瓣搜书评.结果书评出奇的好.然后下载了PDF.从简介中看,本书的每个章节都会不断的围绕怎么建造一个Tomcat讲解.我本人比较喜欢这种造轮子的书.原因很简单,比较笨.如果书中没有代码,很难从脑海中构件代码结构.可是万万没想到,看到第三章,就发现,书中的代码不全,完整的代码还要到GitHub下载.无奈只能放下这本好书.(个人觉得看书就是要了解本质,如果书中的源码不全,而是给出片段,剩下的还要到项目中找,我觉得你还不如让我去直接看Tomc