在Intellij中找不到Servlet

时间:2017-02-21 20:19:06

标签: java jsp servlets intellij-idea

我尝试将jsp页面与servlet一起运行。当我尝试通过url

调用它时找不到Servlet

http://localhost:8080/StudentServlet 我收到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>");

    }
}

的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>

项目结构

enter image description here

2 个答案:

答案 0 :(得分:5)

WebServlet documentation声明如下:

  

必须在注释的valueurlPattern属性中声明至少一个URL模式,但不能同时在两者中声明。

您可以使用以下内容:

@WebServlet("/StudentServlet")

或者这个:

@WebServlet(name = "StudentServlet", urlPatterns={"/StudentServlet"})

或者这个:

@WebServlet(name = "StudentServlet", value="/StudentServlet")
  

当URL模式是唯一设置的属性时,建议使用value属性,否则应使用urlPattern属性。

答案 1 :(得分:0)

  

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

<form action="${pageContext.request.contextPath}/sampleServlet">
  

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

     

另外,   在localhost中提供Context Root   例如:http://localhost:8080/ContextRoot/StudentServlet