Dapatkah saya menjalankan Servlet tanpa memetakannya di web.xml? [duplikat]

Dec 12 2020

Jika saya memiliki tindakan ke servlet , kita harus menggunakan pemetaan dalam XML yang direkomendasikan. Jadi akan terlihat seperti ini:

Indeks HTML:

<!DOCTYPE html>

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

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

Kelas Servlet

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

    }
}

Dan itu bekerja dengan baik. Tetapi pertanyaan saya adalah bagaimana jika saya tidak ingin membuat pemetaan - saya ingin memanggil kelas Servlet secara langsung. Saya menghapus file XML saya dan saya melakukan semua baris ini:

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

Dan .. tidak satupun dari mereka berhasil. Bisakah saya benar-benar memanggil Servlet secara langsung tanpa pemetaan sama sekali? Jika ya, bagaimana caranya? Terkadang untuk tujuan pengujian, saya tidak perlu membuang waktu untuk memetakan setiap servlet.

Jawaban

1 LiveandLetLive Dec 12 2020 at 05:07

Anda dapat menggunakan anotasi misalnya

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

Faktanya, Servlet 3.0 dan seterusnya, sebagian besar pengembang lebih suka ini daripada konfigurasi XML.

Perhatikan bahwa Spesifikasi Servlet memerlukan pemetaan dimulai dengan a /. Periksa ini untuk mempelajarinya lebih lanjut.