我尝试将jsp页面与servlet一起运行。当我尝试通过url
调用它时找不到Servlethttp://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>
项目结构
答案 0 :(得分:5)
必须在注释的
value
或urlPattern
属性中声明至少一个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