IDEA下Servlet404报错的一些情况:

2022-10-27 13:28:53

IDEA下Servlet可能出现404的一些情况:

idea中servlet文件的urlPatterns必须和jsp表单中action的值相同
如:
样例中servlet中urlPattern为urlPatterns = "/com.servlet.RegisterServlet"
则jsp表单中的action的值为:
<form action="/com.servlet.RegisterServlet" >,可以看到,这两个值应该是相同的,如果不相同,可能会出现各种错误,如404或显示源码等…
urlPattern的值和action的值可以改,关键是这两个属性的值要相同
,这样才能把servlet和jsp表单联系起来。servlet处理的才是表单上发来的请求。

在这里插入图片描述
在这里插入图片描述


关于注解的写法

1.注解中只写name,不写urlPatterns。结果会报错。

image-20210601155416909

image-20210601155650556

2.不明确写出urlPatterns,但内容是urlPatterns的内容:@WebServlet("/ServletDemo1") 注:斜杠后面的部分可以换成自己的编写的java文件名。结果可以访问。

image-20210601160001482

3.只写urlPatterns:@WebServlet(urlPatterns = "/ServletDemo1")。结果可以访问。

image-20210601163654449

4.name和urlPattern都写:@WebServlet(name = "ServletDemo1", urlPatterns = "/ServletDemo1")。结果可以访问。

image-20210601160637518

综上所述,建议name与urlPatterns都写上:@WebServlet(name = "ServletDemo1", urlPatterns = "/ServletDemo1")

但每次这样写会很麻烦,可以直接改一下模板:

image-20210601175813012image-20210601180201256

然后把@javax.servlet.annotation.WebServlet(name = "${Entity_Name}", urlPatterns="/${Entity_Name}")复制进去即可。

关于表单访问servlet的写法

先放一下我的目录:

image-20210601161321712

正确写法:

<form action="/ServletDemo1"

注意:这里可能有人说ServletDemo1不是在src目录下面吗?为什么不写src呢?

先说结果,写了src会报错,下面的错误写法中也会有体现。我思考了下,原因可能是:我们在第一次配置servlet环境的时候,选择了src为servlet文件的根目录,同时,也正因为我们选择了src作为servlet的根目录,所以我们才能在src目录下创建servlet文件,如下图:

image-20210601162119640

image-20210601162737551

综上,src是被视为根目录的,用"/"就可以表示根目录,所以直接写<form action="/ServletDemo1">是可以的。

错误写法:

1.<form action="/WEB-INF/classes/ServletDemo1.class" method="get">注:method选择get或post大家根据实际情况决定,我这里一并放上来了,大家只关注action的内容即可。

2.<form action="/src/ServletDemo1" method="get">

  • 作者:Tshaxz
  • 原文链接:https://blog.csdn.net/Tshaxz/article/details/117448903
    更新时间:2022-10-27 13:28:53