原创文章,转载请注明出处:http://blog.csdn.net/moushao/article/details/55194141
前言:保证web.xml的配置无误,无重复
解决两个错误:
1 the servlets named [cn.itcast.servlet.resource.HServlet] and [cn.itcast.servlet.resource.JServlet] are both mapped to the url-pattern [/JServlet] which is not permitted
2 the servlets named [JServlet] and [cn.itcast.servlet.resource.JServlet] are both mapped to the url-pattern [/JServlet] which is not permitted
其实这两个错误指的都是一个意思,HServlet和JServlet都指向了同一个映射,也就是说,你明明写了两个不同的服务,但是映射的,是同一个服务。
正文
最近自学i2ee,昨晚用Tomcat部属项目的时候,报了如下错误!
最开始我以为是web.xml的配置写重复了,但认真检查了两遍,发现并没有重复配置或者引用同一个影射。
后来发先是和MyEclipse有关系,我的MyEclipse的版本是2017 CI 1的,属于目前最新的版本,用以前的版本,比如2015以前的版本,采用如下图所示的方式自动创建servlet的时候,系统会自动把你创建的servlet在web.xml中配置成功。
<servlet>
</servlet>
<servlet-mapping>
<url-pattern>/HServlet</url-pattern>//地址名
</servlet-mapping>
在使用2017 CI 1版本的是时候,我在选项中并没有看到可以勾选自动配置web.xml的选项,我还以为取消了这个功能,所以自己又跑到web.xml中把servlet的配置了一遍,但事实上MyEclipse已经帮我们配置好了,如下图:
@WebServlet("/JServlet"),这一行代码,就等同上面的8行代码,MyEclipse已经帮我们自动配全。
所以,当我再到web.xml中去配置后,则给我报了前言里的第二个错,the servlets named [JServlet] and [cn.itcast.servlet.resource.JServlet] are both mapped to the url-pattern [/JServlet] which is not permitted,改正方式为,删除其中一种配置。
那第一个错更简单了,是我懒惰没有去重新new一个servlet,而是直接copy的servlet,所以,即便我把servlet的名字改了,但java文件里的配置“@WebServlet("/JServlet")” 依然和被copy的java文件配置相同,所以报了第一个错。更改方式为,修改新建服务的配置