Spring MVC中配置多个Servlet时,IDEA报错,如下:
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*)".
- No grammar constraints (DTD or XML schema) detected for the document.
意思很简单,次序不对,很多博文建议删除DOCTYPE中的校验代码方法是不推荐的。
正确做法是调整次序。
如web.xml中存在如下多个servlet,此时编辑器将报错,xml代码如下:
1 <servlet> 2 <servlet-name>UserServlet</servlet-name> 3 <servlet-class>fun.liping.web.UserServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>UserServlet</servlet-name> 7 <url-pattern>/userServlet</url-pattern> 8 </servlet-mapping> 9 <servlet> 10 <servlet-name>DispatcherServlet</servlet-name> 11 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 12 <load-on-startup>1</load-on-startup> 13 </servlet> 14 <servlet-mapping> 15 <servlet-name>DispatcherServlet</servlet-name> 16 <url-pattern>/</url-pattern> 17 </servlet-mapping>
此时要保证所有的servlet标签在servlet-mapping标签前面,调整次序如下:
1 <servlet> 2 <servlet-name>UserServlet</servlet-name> 3 <servlet-class>fun.liping.web.UserServlet</servlet-class> 4 </servlet> 5 <servlet> 6 <servlet-name>DispatcherServlet</servlet-name> 7 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 8 <load-on-startup>1</load-on-startup> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>UserServlet</servlet-name> 12 <url-pattern>/userServlet</url-pattern> 13 </servlet-mapping> 14 <servlet-mapping> 15 <servlet-name>DispatcherServlet</servlet-name> 16 <url-pattern>/</url-pattern> 17 </servlet-mapping>
以上,问题解决。
一起学习加微信交流: