我可以在不将 Servlet 映射到 web.xml 的情况下调用它吗?
Can I invoke Servlet without mapping it in web.xml?
如果我有 action 到 servlet,我们应该在 [=] 中使用 mapping 37=] 这是推荐的。所以它看起来像这样:
HTML 索引:
<!DOCTYPE html>
</head><body>
<form action="go" method="POST">
Enter name: <input type="text" name="name">
<button>Submit form :)</button>
</form>
</body></html>
XML映射:
<web-app..........
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>ServletOne</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/go</url-pattern>
</servlet-mapping>
</web-app>
Servlet class
public class ServletOne extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String s = req.getParameter("name");
PrintWriter pw = resp.getWriter();
pw.println("Welcome " + s);
}
}
而且效果很好。但我的问题是,如果我不想进行映射怎么办——我想直接调用 Servlet class。我删除了 XML 文件并执行了所有这些行:
<form action="ServletOne" method="POST">
<form action="ServletOne.class" method="POST">
<form action="ServletOne.java" method="POST">
并且.. none 其中有效。我真的可以在根本不映射的情况下直接调用 Servlet 吗?如果是,如何?有时出于测试目的,我不需要浪费时间映射每个 servlet。
您可以使用注释,例如
@WebServlet("/go")
public class ServletOne extends HttpServlet {
//...
}
事实上,从Servlet 3.0开始,大多数开发者更喜欢这种XML配置。
请注意,Servlet 规范要求映射以 /
开头。检查 this 以了解更多信息。
如果我有 action 到 servlet,我们应该在 [=] 中使用 mapping 37=] 这是推荐的。所以它看起来像这样:
HTML 索引:
<!DOCTYPE html>
</head><body>
<form action="go" method="POST">
Enter name: <input type="text" name="name">
<button>Submit form :)</button>
</form>
</body></html>
XML映射:
<web-app..........
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>ServletOne</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/go</url-pattern>
</servlet-mapping>
</web-app>
Servlet class
public class ServletOne extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String s = req.getParameter("name");
PrintWriter pw = resp.getWriter();
pw.println("Welcome " + s);
}
}
而且效果很好。但我的问题是,如果我不想进行映射怎么办——我想直接调用 Servlet class。我删除了 XML 文件并执行了所有这些行:
<form action="ServletOne" method="POST">
<form action="ServletOne.class" method="POST">
<form action="ServletOne.java" method="POST">
并且.. none 其中有效。我真的可以在根本不映射的情况下直接调用 Servlet 吗?如果是,如何?有时出于测试目的,我不需要浪费时间映射每个 servlet。
您可以使用注释,例如
@WebServlet("/go")
public class ServletOne extends HttpServlet {
//...
}
事实上,从Servlet 3.0开始,大多数开发者更喜欢这种XML配置。
请注意,Servlet 规范要求映射以 /
开头。检查 this 以了解更多信息。