刚刚学习配置springmvc,遇到了一个问题,我使用maven配置springmvc,tomcat8作为容器,在启动时,一直报The method getDispatcherType() is undefined for the type HttpServletRequest错误,并且告诉我不能解析jsp,通过搜索,得知问题原因好像是在maven依赖中引入了servlet-api-xxx.jar包,而tomcat8中已经存在了servlet-api-xxx.jar包,因此在编译时会产生冲突。
解决办法有两种:
1.将maven中的依赖换成另一个版本的依赖。
如在stackoverflow中有人这样替换。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
替换成
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
2.将依赖的scope改成provided,也就是说当tomcat8中本身具有相关jar包时,maven中的依赖包只供编译时使用,在运行时使用tomcat8中的jar包,这样就不会产生冲突。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>