解决在web.xml中添加filter后idea提示错误的问题

本文介绍了如何解决在SSM框架整合过程中遇到的web.xml配置错误问题。错误源于使用的Servlet版本与项目需求不符。通过调整web.xml头部声明为正确的Servlet版本(如Servlet 3.1),可以消除错误并确保项目正常运行。

  之前在整合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对应的要求:

VersionReleased in
JEE2 (J2EE 1.2)12 Dec 1999Servlet 2.2JSP 1.1
JEE3 (J2EE 1.3)24 Sep 2001Servlet 2.3JSP 1.2JSTL 1.0
JEE4 (J2EE 1.4)11 Nov 2003Servlet 2.4JSP 2.0JSTL 1.1JSF1.1
JEE511 May 2006Servlet 2.5JSP 2.1EL2.1JSTL 1.2JSF 1.2
JEE610 Dec 2009Servlet 3.0JSP 2.2EL 2.2JSTL 1.2JSF 2.0
JEE712 Jun 2013Servlet 3.1JSP 2.3EL 3.0JSTL 1.2JSF 2.2
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值