1

如果我对 servlet 有操作我们应该使用推荐的 XML映射。所以它看起来像这样:

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>

小服务程序类

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 类。我删除了我的 XML 文件并执行了所有这些行:

<form action="ServletOne" method="POST">
<form action="ServletOne.class" method="POST">
<form action="ServletOne.java" method="POST">

而且..它们都不起作用。我真的可以直接调用 Servlet 而不需要映射吗?如果是,如何?有时出于测试目的,我不需要浪费时间映射每个 servlet。

4

1 回答 1

1

您可以使用注释,例如

@WebServlet("/go")
public class ServletOne extends HttpServlet {
    //...
}

事实上,从 Servlet 3.0 开始,大多数开发人员都更喜欢这种 XML 配置。

请注意,Servlet 规范要求映射以/. 检查以了解更多信息。

于 2020-12-11T22:07:47.577 回答