Kann ich Servlet aufrufen, ohne es in web.xml zuzuordnen? [Duplikat]

Dec 12 2020

Wenn ich eine Aktion für ein Servlet habe , sollten wir die empfohlene Zuordnung in XML verwenden. So würde es aussehen:

HTML-Index:

<!DOCTYPE html>

</head><body>
    <form action="go" method="POST">
        Enter name: <input type="text" name="name">
        <button>Submit form :)</button>
    </form>
</body></html>

XML-Zuordnung:

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

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);

    }
}

Und es funktioniert gut. Meine Frage ist jedoch, was passiert, wenn ich kein Mapping erstellen möchte - ich möchte die Servlet-Klasse direkt aufrufen. Ich habe meine XML-Datei entfernt und alle diese Zeilen ausgeführt:

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

Und ... keiner von ihnen funktioniert. Kann ich Servlet tatsächlich direkt ohne Zuordnung aufrufen? Wenn ja, wie? Manchmal muss ich zu Testzwecken keine Zeit damit verschwenden, jedes Servlet zuzuordnen.

Antworten

1 LiveandLetLive Dec 12 2020 at 05:07

Sie können Anmerkungen verwenden, z

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

Ab Servlet 3.0 ziehen die meisten Entwickler dies der XML-Konfiguration vor.

Beachten Sie, dass für die Servlet-Spezifikation die Zuordnung mit a beginnen muss /. Überprüfen Sie dies , um mehr darüber zu erfahren.