Web基础了解版04-XML-Tomcat

XML

什么是XML-Tomcat

  • XML:eXtensible Markup Language (可扩展标记语言)。
  • XML 是一种标记语言,很类似 HTML。
  • XML 的设计宗旨是传输数据,而非显示数据。
  • XML的使命,就是以一个统一的格式,组织有关系的数据。为不同平台下的应用程序服务,独立于软件和硬件的信息传输工具。
  • XML 仅仅是纯文本。有能力处理纯文本的软件都可以处理 XML。不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。

XML相较于HTML,语法更加严格。

XML用途

  • 配置文件
  • 数据交换格式
  • 数据存储

基本语法

文档声明

  • version属性指定XML版本,固定值是1.0。

    • 必须在文件的第一行书写文档声明。
  • encoding指定的字符集,是告诉解析器使用什么字符集进行解码,而编码是由文本编辑器决定的
    • 通常的写法:<?xml version="1.0" encoding="utf-8" ?>
    • 这样就要求保存文件时,必须用utf-8编码保存。此时要求XML文档的作者确认当前编辑器保存文档的编码方式。

语法规则

① XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符,并且必须严格遵循语法

② 只能有一个根标签,所有的其他标签都必须声明在根标签内部

③ 标签必须正确结束,不能交叉嵌套

⑤ 严格区分大小写

⑥ 开始标签中,可以自定义添加属性。但,如果有属性就必须有值,且必须加引号

⑦ 标签不能以数字开头

⑧ 注释不能嵌套, 注释采用:<!--注释-->

⑨ XML中可以使用HTML中的转义字符

XML实体中不允许出现"&","<",">"等特殊字符,否则XML语法检查时将出错,请使用转义字符

CDATA区

  • 当XML文档中需要写一些程序代码、SQL语句或其他不希望XML解析器进行解析的内容时,就可以写在CDATA区中
  • XML解析器会将CDATA区中的内容原封不动的输出
  • CDATA区的定义格式:<![CDATA[…]]>

处理指令

① 处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。

② 处理指令必须以 <? 作为开头,以 ?> 作为结尾,XML声明语句就是最常见的一种处理指令。

例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用xsl文件显示xml文档内容。

<?xml-stylesheet type="text/css" href="p.xsl"?>

③ XSL对于XML来说就相当于CSS对HTML一样,XSL是XML的文件样式。

XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

XML解析

  • XML解析是指通过解析器读取XML文档,解释语法,并将文档转化成对象
  • 对XML的一切操作都是由解析开始的,所以解析非常重要。

dom4j

  • dom4j是一个简单、灵活的开放源代码的库。
  • Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。
  • dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件都采用dom4j,例如Hibernate。
  • 使用dom4j开发,需导入dom4j相应的jar包dom4j-1.6.1.jar。所以使用第一步:导包!
  • Dom4j解析步骤
//1、创建解析器对象
SAXReader reader = new SAXReader();
//2、使用解析器将xml文件转换为内存中的document对象
Document document = reader.read("teachers.xml"); //相对在项目根路径下查找xml文件
//3、通过文档对象可以获取文档的根标签
Element rootElement = document.getRootElement();
//4、根据根标签获取所有的根标签的子标签集合
List<Element> elements = rootElement.elements();
//5、遍历集合中的标签,并将所有的数据解析出来
for (Element element : elements) {
    //每次遍历就代表一个teacher信息
    System.out.println("正在遍历的标签名:"+element.getName());
    System.out.println("正在遍历标签的id属性值:"+element.attributeValue("id"));
    //获取teacher的子标签的内容
    String tname = element.elementText("tname");
    System.out.println("tname:"+tname);
    String age = element.elementText("tage");
    System.out.println("tage:"+age);}

修改

//添加一个新的student节点
Element newEle = rootElement.addElement("teacher");
//创建一个良好的xml格式
OutputFormat format = OutputFormat.createPrettyPrint();
//写入文件
XMLWriter xmlWriter = new XMLWriter(new FileWriter("teachers.xml"),format);
xmlWriter.write(document);
xmlWriter.close();

新建

//1.创建文档
Document document = DocumentHelper.createDocument();
//2.添加根元素
Element root = document.addElement("teachers");
//3.添加元素节点
Element tcEle = root.addElement("teacher");
Element tcEle2 = root.addElement("teacher");

XPath

  • XPath 是在 XML 文档中查找信息的语言,类似于jQuery选择器。
  • XPath通过元素和属性进行查找,简化了Dom4j查找节点的过程
语法 说明
/AAA 选择根元素AAA
/AAA/CCC 选择AAA下的所有CCC子元素
/AAA/DDD/BBB 选择AAA的子元素DDD的所有BBB子元素
//BBB 选择所有BBB元素
//DDD/BBB 选择所有父元素是DDD的BBB元素
/AAA/CCC/DDD/* 选择所有路径依附于/AAA/CCC/DDD的元素
/*/*/*/BBB 选择所有的有3个祖先元素的BBB元素
//* 选择所有元素
/AAA/BBB[1] 选择AAA的第一个BBB子元素
/AAA/BBB[last()] 选择AAA的最后一个BBB子元素
//@id 选择所有元素的id属性
//BBB[@id] 选择有id属性的BBB元素
//BBB[@name] 选择有name属性的BBB元素
//BBB[@*] 选择有任意属性的BBB元素
//BBB[not(@*)] 选择没有属性的BBB元素
//BBB[@id=‘b1‘] 选择含有属性id且其值为‘b1‘的BBB元素
//BBB[@name=‘bbb‘] 选择含有属性name且其值为‘bbb‘的BBB元素

使用

① 导包:jaxen-1.1-beta-6.jar

② dom4j怎么做就怎么做。只是在查找元素的时候可以使用xpath了

③ 获取所有符合条件的节点

  • document.selectNodes(String xpathExpression) :返回List集合

    • 举例:document.selectNodes("/students/student")
  • document.selectSingleNode(String xpathExpression) :获取符合条件的单个节点。即一个Node对象。如果符合条件的节点有多个,那么返回第一个。
    • 举例:document.selectSingleNode("/students/student[@id=‘1‘]")

Tomcat

Tomcat下载

  • Tomcat官方网站:http://tomcat.apache.org/
  • 安装版:需要安装,一般不考虑使用。
  • 解压版: 直接解压缩使用,我们使用的版本。
  • 因为tomcat服务器软件需要使用java环境,所以需要正确配置JAVA_HOME。

安装

解压apache-tomcat-7.0.79-windows-x64.zip到非中文无空格目录中

  • bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;
  • conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
    • server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是:8080
    • tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
    • web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
    • context.xml:对所有应用的统一配置,通常我们不会去配置它。
  • lib:Tomcat的类库,里面是一大堆jar文件。
  • logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
  • temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
  • webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目。其中ROOT是一个特殊的默认项目
  • work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的,可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。
  • LICENSE:许可证。
  • NOTICE:说明文件。

启动

在命令行中运行catalina run或者 Tomcat解压目录下双击startup.bat 启动Tomcat服务器,在浏览器地址栏访问地址进行测试http://localhost:8080

如果启动失败,查看如下的情况:

情况一:如果双击startup.bat后窗口一闪而过,请查看JAVA_HOME是否配置正确。

startup.bat会调用catalina.bat,而catalina.bat会调用setclasspath.bat,setclasspath.bat会使用JAVA_HOME环境变量,所以我们必须在启动Tomcat之前把JAVA_HOME配置正确。

情况二:如果启动失败,提示端口号被占用,则将默认的8080端口修改为其他未使用的值,例如8989等。

打开:解压目录\conf\server.xml,找到第一个Connector标签,修改port属性

web服务器在启动时,实际上是监听了本机上的一个端口,当有客户端向该端口发送请求时,web服务器就会处理请求。但是如果不是向其所监听的端口发送请求,web服务器不会做任何响应。例如:Tomcat启动监听了8989端口,而访问的地址是http://localhost:8080,将不能正常访问。

在Eclipse中创建Tomcat镜像

① 在Servers视窗里点击超链接或在空白处右键→New

②选择对应的安装版本,点next

注意1:关联Tomcat镜像时,Eclipse会从本地Tomcat中复制信息及文件(如下图),之后二者的配置信息就没有关系了,其中任何一个的配置信息发生变化都不会自动同步到另外一个。所以,如果修改端口号的话,需要Tomcat目录中和Eclipse的镜像文件中都要修改端口号才可以。

注意2:Tomcat服务器在Eclipse中启动以后,在浏览器中访问:http://localhost:8080会发现访问失败。因为此时在Eclipse中启动的webapps目录与之前方式访问使用的webapps目录不一致。

动态Web工程部署

项目目录结构说明

  • src:存放Java源代码的目录。
  • Libraries:存放的是Tomcat及JRE中的jar包。
  • build:自动编译.java文件的目录。
  • WebContent:存放的是需要部署到服务器的文件
    • META-INF:是存放工程自身相关的一些信息,元文件信息,通常由开发工具和环境自动生成。

      • MANIFEST.MF:配置清单文件
    • WEB-INF:这个目录下的文件,是不能被客户端直接访问的。
      • lib:用于存放该工程用到的库。粘贴过来以后,不再需要build path
      • web.xml:web工程的配置文件,完成用户请求的逻辑名称到真正的servlet类的映射。
      • classes:存放Java字节码文件的目录。

    凡是客户端能访问的资源(*.html或 *.jpg)必须跟WEB-INF在同一目录,即放在Web根目录下的资源,从客户端是可以通过URL地址直接访问的。

部署/移除Web项目

右键点击刚创建好的Tomcat服务器,选择Add and Remove …

将左边的项目 add 到右边,即为部署:

将右边的项目remove到左边,即为移除:

部署或移除web项目以后,需要重启服务器

部署Web项目的原理

  • 当我们使用Eclipse将项目部署到Tomcat中时,我们发现,在Tomcat下的webapps目录下并没有我们创建好的项目,但是当通过Eclipse启动服务器后,项目却真的可以访问到,这是为什么呢?
  • 实际上,Eclipse在使用Tomcat时,并没有将项目部署到Tomcat的目录下,而是在其工作空间中,创建了一个Tomcat的镜像,Eclipse启动的Tomcat是他自己配置的镜像。
  • Eclipse镜像所在目录:你的工作空间目录.metadata.plugins\org.eclipse.wst.server.core\tmp0

    (重启Tomcat以后,双击Servers-TOmcat v7.0即会看到部署好的web工程存在的默认位置。)

或者通过如下的方式,也可以直接找到部署的位置:

  • 在这个目录下,我们会发现一个和Tomcat安装目录几乎一模一样的目录结构。
  • 在这里Eclipse中Tomcat镜像配置文件也是独立的,而我们所创建的项目是部署到wtpwebapps目录下的,这样做的好处是Eclipse中Tomcat和我们本机的Tomcat可以保持相互独立,不会影响彼此。但是千万注意,此时千万不要试图删除原有的Tomcat目录结构或移动位置。

总结:启动服务器以后,我们的web项目会部署到服务器目录的wtpwebapps文件夹的目录下。index.jsp也是直接声明在此项目目录下的。

原文地址:https://www.cnblogs.com/Open-ing/p/12061720.html

时间: 2024-08-29 07:34:53

Web基础了解版04-XML-Tomcat的相关文章

Java web基础总结一之—— xml基础

Java web基础总结之一--xml基础 要学习java web,掌握xml语言是必要的,可以说,在一个java web项目中,xml配置文件无处不在.首先每个java web项目都会有一个web.xml的配置文件.而在各种各样的框架中,xml配置文件更是必不可少.当然,虽然有些框架可以使用注解来实现零配置.但是一般还是习惯于使用配置文件,可以和代码解耦和. 一.Xml基础知识以及语法规范 那首先的问题是,什么是xml?它主要用来做什么? Xml是Extensible Markup Langu

Web基础了解版05-Servlet

Servlet Servlet? 从广义上来讲,Servlet规范是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案.而具体的Servlet容器负责提供标准的实现. 从狭义上来讲,Servlet指的是javax.servlet.Servlet接口及其子接口,也可以指实现了Servlet接口的实现类. Servlet(Server Applet)作为服务器端的一个组件,它的本意是“服务器端的小程序”. Servlet的实例对象由Servlet容器负

Web基础了解版08-JSTL

JSTL JSP为我们提供了可以自定义标签库(Tag Library)的功能,用来替代代码脚本,Sun公司又定义了一套通用的标签库名为JSTL(JSP Standard Tag Library),里面定义很多我们开发中常用的方法 使用JSTL   1.先引入JSTL标签库的jar包类库到WEB-INF/lib目录下 2.使用taglib指令导入需要的标签库 CORE 标签库 <%@ taglib prefix="c" uri="http://java.sun.com/j

Web基础了解版11-Ajax-JSON

Ajax AJAX即“Asynchronous Javascript And XML”:是,不发生页面跳转.异步请求载入内容并改写局部页面内容的技术. 也可以简单的理解为通过JS向服务器发送请求.  同步处理: 就是当我们通过一个页面向服务器发送一个请求时,在服务器响应结束之前,我们的整个页面是不能操作的,并且即使整个页面中只有一小部分内容发生改变我们也要刷新整个页面. 异步处理: 通过AJAX向服务器发送请求,当服务器正常响应请求后,响应信息会直接发送到AJAX中,AJAX可以根据服务器响应的

Web基础了解版12-上传下载

上传 两个步骤: 用户在页面中选择要上传的文件,然后将请求提交到Servlet Servlet收到请求,解析用户上传的文件,然后将文件存储到服务器 上传文件表单 <form action="Servlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" /><br />

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

Java Web基础 --- Jsp 综述(上)

摘要: J2EE是一套规范,而Servlet/Jsp是J2EE规范的一部分,是Tomcat的主要实现部分.在最初的应用实践中,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,这导致Servlet开发效率极为低下.JSP技术通过实现普通静态HTML和动态部分混合编码,使得逻辑内容与外观相分离,大大简化了表示层的实现,提高了开发效率.本文以JSP的本质是Servlet为主线,结合JSP转译后所得的Servlet,详细探讨了JSP的原理.执行过程.脚本元素.编译指令

Java Web基础 --- Jsp 综述(下)

摘要: JSP脚本中包含九个内置对象,它们都是Servlet-API接口的实例,并且JSP规范对它们进行了默认初始化.本文首先通过一个JSP实例来认识JSP内置对象的实质,紧接着以基于请求/响应架构应用的运行机制为背景,引出JSP/Servlet的通信方式与内置对象的作用域,并对每个内置对象的常见用法进行深入介绍和总结. 一. JSP 九大内置对象概述及相关概念说明 JSP脚本中包含九个内置对象,这九个内置对象都是 Servlet API 接口的实例,并且JSP规范对它们进行了默认初始化(由 J

Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP)

Web服务和应用是目前信息技术领域的热门技术.如何使用Docker来运行常见的Web服务器(包括Apache.Nginx.Tomcat等),以及一些常用应用(LAMP.CMS等).包括具体的镜像构建方法与使用步骤. 两种创建镜像的过程.其中一些操作比较简单的镜像使用Dockerfile来创建,而像Weblogic这样复杂的应用,则使用commit方式来创建. Apache Apache是一个高稳定性的.商业级别的开源Web服务器.目前Apache已经是世界使用排名第一的Web服务器软件.由于其良