Java 在Intellij中找不到Servlet

Java 在Intellij中找不到Servlet,java,jsp,servlets,intellij-idea,Java,Jsp,Servlets,Intellij Idea,我试图用servlet运行我的jsp页面。当我试图通过url调用Servlet时,找不到它 我收到一个404错误,上面写着: “请求的资源不可用” 我也试图通过一个表单来调用它。当我点击提交时,它也不会被识别,也不会产生相同的错误 请阅读此处询问使用Maven或通过web.xml设置映射的答案。根据我的理解,通过web.xml设置是旧方法,新方法是在我拥有的servlet上设置名称。不确定我做错了什么 我并没有使用和构建工具,只是启动我的Tomcat服务器,该服务器在本地用于运行jsp页面。但

我试图用servlet运行我的jsp页面。当我试图通过url调用Servlet时,找不到它

我收到一个404错误,上面写着:

“请求的资源不可用”

我也试图通过一个表单来调用它。当我点击提交时,它也不会被识别,也不会产生相同的错误

请阅读此处询问使用Maven或通过web.xml设置映射的答案。根据我的理解,通过web.xml设置是旧方法,新方法是在我拥有的servlet上设置名称。不确定我做错了什么

我并没有使用和构建工具,只是启动我的Tomcat服务器,该服务器在本地用于运行jsp页面。但是Servlet没有被认可。增加了项目结构的截图,以防出现问题

Servlet

@WebServlet(name = "StudentServlet")
public class StudentServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        out.println("<html><body>");

        out.println("<h3>Student name is:" +
                request.getParameter("firstname") +
                " " +
                request.getParameter("lastname") +
                "</h3>");

        out.println("</body></html>");

    }
}
@WebServlet(name=“StudentServlet”)
公共类StudentServlet扩展了HttpServlet{
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“学生姓名为:”+
request.getParameter(“firstname”)+
" " +
request.getParameter(“lastname”)+
"");
out.println(“”);
}
}
index.jsp

<form action="StudentServlet" method="get">
    First Name: <input type="text" name="firstname"/>
    <br/><br/>
    Last Name: <input type="text" name="lastname"/>
    <br/><br/>
    <input type="submit" value="Submit"/>
</form>

名字:


姓氏:

项目结构

在表单操作中提供上下文路径。这样,它将自动找到Servlet的路径。比如说


另外,在@WebServlet(name)中写入URL模式“/”= “/StudentServlet”)此注释表示URL模式 /StudentServlet遵循上下文根

加上, 为本地主机中的上下文根提供 例如:

声明如下:

@WebServlet("/StudentServlet")
必须在批注的
urlPattern
属性中声明至少一个URL模式,但不能同时声明这两个模式

您可以只使用以下选项:

@WebServlet("/StudentServlet")
或者这个:

@WebServlet(name = "StudentServlet", urlPatterns={"/StudentServlet"})
@WebServlet(name = "StudentServlet", value="/StudentServlet")
或者这个:

@WebServlet(name = "StudentServlet", urlPatterns={"/StudentServlet"})
@WebServlet(name = "StudentServlet", value="/StudentServlet")
当URL模式是唯一设置的属性时,建议使用
value
属性,否则应使用
urlPattern
属性


您的URL错误。@duffymo尝试了抛出相同错误的URL。url应该是什么?WAR文件的名称是什么?你告诉IntelliJ使用哪个域?@duffymo我没有war文件。每次我运行tomcat服务器时,它都会显示一条消息,上面写着“war爆炸”,并在url中打开localhost页面。我没有设置任何域。使用的是什么
web.xml
version?请尝试上面编辑的答案。仍然得到相同的错误。重新启动服务器,没有区别。您是否尝试了确切的地址?例如:其中ContextRoot是Web项目的名称(默认情况下),或者如果您提供了其他名称,那么您需要将该名称放在项目结构中可以看到的项目名称为servletdemo。因此调用:localhost:8080/servletdemo/StudentServlet时会出现相同的错误。运行项目时是否尝试访问主页?如果是这样,那么您将丢失在运行项目时打开的启动页面。例如,您在项目中使用的index.jsp,我希望它作为:index.jsp添加到web.xml文件中。我对查看jsp页面没有问题。我没有设置web.xml文件,但localhost:8080默认为index.jsp页面。问题是servlets。它现在可以工作了,谢谢。不幸的是,每次对java文件进行更改时,似乎都需要重置服务器。没有热更改。请检查,Java热交换支持的所有更改都不需要重新部署或重新启动服务器(您可以更改方法体,但不能删除或添加方法)。对于更高级的热交换,您可以使用DCEVM或JRebel。非常感谢。谢谢