1、检查web.xml中的servlet映射里面的<url-pattern>,看<url-pattern></url-pattern>中配置的内容是否缺少“/” ,"/"表示当前web应用。这个问题也可能是由过滤器引起的。
2、不同的servlet使用了相同的@WebServlet标注。在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息。
举个例子:
@WebServlet("/RequestDemo") ps::记得前面加 /
public class DownLoadDemo extends HttpServlet{
当用户请求的URL是"/RequestDemo",则由DownLoadDemo的实例提供服务。
注:@WebServlet("/RequestDemo")这种方式称为注解,省去在web.xml中进行配置。
等同例如:
<servlet>
<!-- 声明Servlet对象 -->
<servlet-name>RequestDemo</servlet-name>
<!-- 上面一句指定Servlet对象的名称 -->
<servlet-class>com.jd.request.RequestDemo</servlet-class>
<!-- 上面一句指定Servlet对象的完整位置,包含包名和类名 -->
</servlet>
<servlet-mapping>
<!-- 映射Servlet -->
<servlet-name>RequestDemo</servlet-name>
<!--<servlet-name>与上面<Servlet>标签的<servlet-name>元素相对应,不可以随便起名 -->
<url-pattern>/RequestDemo</url-pattern>
<!-- 上面一句话用于映射访问URL -->
</servlet-mapping>