Dapatkah saya menjalankan Servlet tanpa memetakannya di web.xml? [duplikat]
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
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.