idea 中web.xml 文件的標籤瘋狂報錯

element XXX is not allowed here的錯誤。網上不少說重啓idea或者Tomcat的jar包配置的,真是但願本身試一下再轉帖啊,幾篇錯誤的能抄的處處都是,害人害己啊。html

一、注意比對web.xml的頭文件格式是否正確。java

web.xml文件頭聲明各個版本參考

  1. Servlet 3.1
    Java EE 7 XML schema, namespace is http://xmlns.jcp.org/xml/ns/javaee/
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
</web-app>

 

  1. Servlet 3.0
    Java EE 6 XML schema, namespace is http://java.sun.com/xml/ns/javaee
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          version="3.0">
</web-app>

 

  1. Servlet 2.5
    Java EE 5 XML schema, namespace is http://java.sun.com/xml/ns/javaee
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
          version="2.5">
</web-app>

 

  1. Servlet 2.4
    J2EE 1.4 XML schema, namespace is http://java.sun.com/xml/ns/j2ee

複製代碼

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
          http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
          version="2.4">

  <display-name>Servlet 2.4 Web Application</display-name>
</web-app>

複製代碼

 

  1. Servlet 2.3
    J2EE 1.3 DTDs schema. This web.xml file is too old, highly recommend you to upgrade it.

複製代碼

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Servlet 2.3 Web Application</display-name>
</web-app>

複製代碼

web.xml頭部聲明究竟是如何得來的????請往下看web

相關文檔說明下載:架構

http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html#7oracle

  下載文件:web-app_4_0.xsd 具體版本號自行決定本文以4.0版本爲例打開xsd文件,我用的notepad++打開的。Web.xml的schema由文檔瞭解app

這是Servlet 4.0部署描述符的XML Schema。部署描述符必須在「WEB-INF/web.xml」
中命名Web應用程序的war文件。 全部Servlet部署描述符必須使用Java EE指示
Web應用程序架構命名空間:http://xmlns.jcp.org/xml/ns/javaee
並經過指示架構的版本使用以下所示的version元素:
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="..."
      version="4.0">
      ...
</web-app>
實例文檔可能指示已發佈的版本,使用Java EE的xsi:schemaLocation屬性的模式具
有如下位置的命名空間:http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd

  因此最終應寫的頭文件是:ide

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
            version="4.0">
</web-app>idea

相關文章
相關標籤/搜索