之前在整合SSM框架的时候,配置web.xml的时候一直提示错误,但filter、servlet的顺序写的也是对的,而且项目也能正常运行。
错误提示:
The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)
后来发现是web.xml的头部声明的问题。由于当时用的是maven创建的,默认使用的是Servlet2.3模板。最后改成Servlet3.1的就好了。
Servlet 3.1:
Java EE 7 XML schema,命名空间是 http://xmlns.jcp.org/xml/ns/javaee/
JSTL标签库使用<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<?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_3_1.xsd"
version="3.1">
</web-app>
Servlet 3.0:
Java EE 6 XML schema,命名空间是 http://java.sun.com/xml/ns/javaee
<?xml version="1.0" encoding="UTF-8"?>
<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>
Servlet 2.5:
Java EE 5 XML schema,命名空间是 http://java.sun.com/xml/ns/javaee
<?xml version="1.0" encoding="UTF-8"?>
<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>
Servlet 2.4:
Java EE 1.4 XML schema, 命名空间是 http://java.sun.com/xml/ns/j2ee
<?xml version="1.0" encoding="UTF-8"?>
<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">
</web-app>
Servlet 2.3:
Java EE 1.3 DTDs schema
JSTL标签库使用<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!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>
下面来罗列一下JSP中各个版本的JSTL的taglib的引用方式:
JSTL1.0(要求(必须满足此条件):Servlet 2.3, JavaServer Pages 1.2)的使用方法:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
JSTL1.1(要求(必须满足此条件):Servlet 2.4, JavaServer Pages 2.0)的使用方法:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL1.2(要求(必须满足此条件):Servlet 2.5, JavaServer Pages 2.1)的使用方法:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
不同版本的Java EE对应的要求:
Version | Released in | |||||
---|---|---|---|---|---|---|
JEE2 (J2EE 1.2) | 12 Dec 1999 | Servlet 2.2 | JSP 1.1 | |||
JEE3 (J2EE 1.3) | 24 Sep 2001 | Servlet 2.3 | JSP 1.2 | JSTL 1.0 | ||
JEE4 (J2EE 1.4) | 11 Nov 2003 | Servlet 2.4 | JSP 2.0 | JSTL 1.1 | JSF1.1 | |
JEE5 | 11 May 2006 | Servlet 2.5 | JSP 2.1 | EL2.1 | JSTL 1.2 | JSF 1.2 |
JEE6 | 10 Dec 2009 | Servlet 3.0 | JSP 2.2 | EL 2.2 | JSTL 1.2 | JSF 2.0 |
JEE7 | 12 Jun 2013 | Servlet 3.1 | JSP 2.3 | EL 3.0 | JSTL 1.2 | JSF 2.2 |