无法读取xml头部dtd的原因

          昨天有人碰到这样一个问题,struts2程序以前本身跑得好好的,但后来运行出问题,说无法读取struts2.0-dtd之类的。

          其实这个问题,在SSH项目中大家可能有时遇到。从字面意思来看,把web项目部署到服务器上后,dom4j解析xml文件,找不到 struts2.0-dtd之类的文件。 

             从深层次分析,其实应该是你自己xml的dtd格式写的不对,因为按照struts,spring以及hibernate的运行机制,只要你按照官方文档写dtd格式,就不会出现这个问题。系统会自动在classpath路径下的某个路径下寻找相应的dtd文件,如果找不到,才到指定的url网站上找。

      

 比如struts2.3.4 为例,我们用rar压缩工具打开struts2-core-2.3.4.1.jar包,就会发现有多个struts dtd文件。比如struts-2.1.7.dtd ,struts-2.0.dtd,我们选择struts-2.1.7.dtd来说。

打开struts-2.1.7.dtd文件,我们可以再注释的地方可以看到这样一句话

<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
 "http://struts.apache.org/dtds/struts-2.1.7.dtd">

    其实这个就是你需要在struts.xml里配置dtd格式。

 

以hibernate3.5.5为例,我们打开hibernate3.jar包可以发现,在org.hibernate里面有hibernate-mapping-3.0.dtd这个文件,这个文件开头有介绍

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
那么我们配置hibernate的hbm.xml的时候,把头文件这样加上就ok了

 

 

 

你可能感兴趣的:(无法读取xml头部dtd的原因)