8.1 Pambuka kanggo anotasi servlet
Miwiti karo versi 7, Tomcat wiwit ndhukung spesifikasi servlet web Servlet API 3.0 . Ing tartamtu, paket katon ing disebut javax.servlet.annotation
. Isine macem-macem jinis anotasi sing bisa digunakake kanggo menehi anotasi kelas servlet. Yen sampeyan nggunakake anotasi, deskriptor penyebaran (web.xml) ora dibutuhake.
Dhaptar anotasi sing paling migunani:
anotasi | Katrangan | |
---|---|---|
1 | @WebServlet |
Ngandika servlet |
2 | @WebInitParam |
Nemtokake parameter initialization |
3 | @WebFilter |
Nyatakake saringan web |
4 | @WebListener |
Nyatakake lisener web |
5 | @ServletSecurity |
Ngidini sampeyan ngatur setelan keamanan |
Tuladha:
@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {
protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
}
Siji anotasi cukup kanggo ngumumake servlet lan peta kanggo nglayani kabeh panjalukan sing bakal teka menyang URL sing diwenehake dening /api/*
.
8.2 Nggawe pemetaan servlet
Anotasi duwe @WebServlet
akeh paramèter sing ngidini konfigurasi fleksibel banget saka servlet sing diterangake. Ayo goleki sing utama:
Atribut | Katrangan | |
---|---|---|
1 | name |
Jeneng unik Servlet (kaya ing web.xml) |
2 | displayName |
Jeneng servlet sing bisa diwaca manungsa |
3 | description |
Deskripsi Servlet |
4 | value |
Nyetel url kanggo pemetaan |
5 | urlPatterns |
Nemtokake dhaptar url sing arep dipetakan (digunakake tinimbang nilai) |
6 | initParams |
Ngidini sampeyan nyetel paramèter wiwitan servlet |
7 | asyncSupported |
Nemtokake manawa servlet bisa mlaku kanthi ora sinkron (HTTP/2) |
8 | loadOnStartup |
Nomer urutan kanggo ngontrol prioritas wiwitan servlet |
9 | smallIcon |
Nyetel lambang servlet cilik |
10 | largeIcon |
Nyetel lambang servlet gedhe |
Ana sawetara titik menarik ing kene.
Pisanan, elinga value
lan urlPatterns
minangka atribut sing bisa diijolake. Loro-lorone ngidini sampeyan nemtokake dhaptar URL sing kudu dipetakan dening servlet.
Kapindho, parameter kasebut asyncSupported
nuduhake manawa servlet bakal ngolah panjaluk asinkron kanthi bener liwat protokol HTTP/2.
Lan atribut penting katelu yaiku initParams
, ngidini sampeyan nyetel dhaptar paramèter sing bakal diselehake ing ServletContext.
Tuladha:
@WebServlet(
urlPatterns = {"/sendFile", "/uploadFile"},
loadOnStartup = 1,
asyncSupported = true,
initParams = {
@WebInitParam(name = "saveDir", value = "c:/uploaded"),
@WebInitParam(name = "allowedTypes", value = "jpg,gif,png")
}
)
public class ImageUploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String saveDir = getInitParameter("saveDir");
String fileTypes = getInitParameter("allowedTypes");
PrintWriter writer = response.getWriter();
writer.println("saveDir = " + saveDir);
writer.println("fileTypes = " + fileTypes);
}
}
8.3 Nggawe pemetaan filter
Kaya kasebut ing ndhuwur, saringan minangka jinis utilitas servlet, lan dikonfigurasi kaya servlet. Mangkene atribut sing ana ing anotasi @WebFilter
:
Atribut | Katrangan | |
---|---|---|
1 | filterName |
Filter jeneng unik (kaya ing web.xml) |
2 | displayName |
Jeneng Filter sing bisa diwaca manungsa |
3 | description |
Katrangan Filter |
4 | value / urlPatterns |
Nyetel dhaptar url kanggo peta |
5 | dispatcherTypes |
Nemtokake dhaptar DispatcherTypes |
6 | servletNames |
Nemtokake dhaptar servlet sing bakal ditrapake |
7 | initParams |
Ngidini sampeyan nyetel paramèter wiwitan panyaring |
8 | asyncSupported |
Nemtokake yen panyaring bisa mlaku kanthi ora sinkron (HTTP/2) |
9 | smallIcon |
Nyetel lambang filter cilik |
10 | largeIcon |
Nyetel lambang filter gedhe |
Conto panyaring sing nyegat kabeh panjalukan menyang servlet tartamtu :
@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
// implements Filter's methods here...
}
Conto filter sing diwenehi pirang-pirang paramèter :
@WebFilter(
urlPatterns = "/uploadFilter",
initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif")
)
public class UploadFilter implements Filter {
// implements Filter's methods here...
}
Conto jinis filter sing diwenehake kanggo RequestDispatcher :
@WebFilter(
urlPatterns = "/admin",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
// implements Filter's methods here...
}
Sampeyan bakal sinau luwih lengkap babagan tujuan saringan lan servlet ing kuliah ing ngisor iki.
GO TO FULL VERSION