可以存在的原因:
(一)可能原因是在web.xml中配置
正确配置为:
其中
ps: url-pattern规则:有精确匹配,最长路径匹配,扩展匹配,如果前三条规则都没有匹配到,则会交给第四种叫default servlet处理。
以”/’开头和以”/*”结尾的是用来做路径映射的; “/” 是用来定义default servlet映射的。 以前缀”*.”开头的是用来做扩展映射的。剩下的都是用来定义详细映射的;比如: /aa/bb/cc.action。
注意:路径和扩展名匹配无法同时设置,因为这种匹配即属于路径映射,也属于扩展映射,导致容器无法判断。比如下面的三个
另外注意:
这个是精确匹配,url必须是 /aa/*/bb,这里的*不是通配的含义
(二)可能由于web.xml的验证中
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">
版本和约束跟tomcat对应的servlet api的版本不匹配。
解决办法:
项目-->properties-->project facets:
选择对应的Dynamic web module的版本。
修改时如果出现Cannot change version of project facet Dynamic Web Module to xx。xx为要修改成为的版本,如:3.0。
解决办法:
找到工作空间中的项目,打开项目找到.settings文件夹打开,编辑两个文件:
1.org.eclipse.jdt.core.prefs.prefs文件中的:
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8
将1.8修改成对应的jdk版本
2.org.eclipse.wst.common.project.facet.core.xml文件中:
将这个
然后再打开project facet 查看是否修改。