8.1 सर्वलेट एनोटेशन का परिचय
संस्करण 7 से शुरू होकर, टॉमकैट ने सर्वलेट एपीआई 3.0 वेब सर्वलेट विनिर्देश का समर्थन करना शुरू किया । विशेष रूप से, इसमें एक पैकेज दिखाई दिया, जिसे javax.servlet.annotation
. इसमें विभिन्न प्रकार के एनोटेशन होते हैं जिनका उपयोग सर्वलेट क्लास को एनोटेट करने के लिए किया जा सकता है। यदि आप एनोटेशन का उपयोग करते हैं, तो डिप्लॉयमेंट डिस्क्रिप्टर (web.xml) की आवश्यकता नहीं है।
सबसे उपयोगी एनोटेशन की सूची:
टिप्पणी | विवरण | |
---|---|---|
1 | @WebServlet |
सर्वलेट घोषित करता है |
2 | @WebInitParam |
प्रारंभिक पैरामीटर निर्दिष्ट करता है |
3 | @WebFilter |
एक वेब फिल्टर की घोषणा करता है |
4 | @WebListener |
वेब श्रोता की घोषणा करता है |
5 | @ServletSecurity |
आपको सुरक्षा सेटिंग्स कॉन्फ़िगर करने की अनुमति देता है |
उदाहरण:
@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!");
}
}
एक एनोटेशन सर्वलेट घोषित करने के लिए पर्याप्त है और इसे द्वारा दिए गए यूआरएल पर आने वाले सभी अनुरोधों को पूरा करने के लिए मैप करें /api/*
।
8.2 सर्वलेट मैपिंग की स्थापना
एनोटेशन में @WebServlet
कई पैरामीटर हैं जो इसके द्वारा वर्णित सर्वलेट के बहुत लचीले कॉन्फ़िगरेशन की अनुमति देते हैं। आइए नजर डालते हैं मुख्य बातों पर:
गुण | विवरण | |
---|---|---|
1 | name |
सर्वलेट अद्वितीय नाम (जैसा कि web.xml में है) |
2 | displayName |
मानव पठनीय सर्वलेट नाम |
3 | description |
सर्वलेट विवरण |
4 | value |
मैपिंग के लिए यूआरएल सेट करता है |
5 | urlPatterns |
मैप करने के लिए url की सूची निर्दिष्ट करता है (मान के बजाय उपयोग किया जाता है) |
6 | initParams |
आपको सर्वलेट के प्रारंभ पैरामीटर सेट करने की अनुमति देता है |
7 | asyncSupported |
निर्दिष्ट करता है कि सर्वलेट अतुल्यकालिक रूप से चल सकता है (HTTP/2) |
8 | loadOnStartup |
सर्वलेट प्रारंभ प्राथमिकता को नियंत्रित करने के लिए अनुक्रम संख्या |
9 | smallIcon |
एक छोटा सर्वलेट आइकन सेट करता है |
10 | largeIcon |
एक बड़ा सर्वलेट आइकन सेट करता है |
यहाँ कई दिलचस्प बिंदु हैं।
सबसे पहले, ध्यान दें कि value
और urlPatterns
विनिमेय विशेषताएँ हैं। वे दोनों आपको उन यूआरएल की सूची निर्दिष्ट करने की अनुमति देते हैं जिन्हें सर्वलेट को मैप करना चाहिए।
दूसरा, पैरामीटर asyncSupported
इंगित करता है कि सर्वलेट HTTP/2 प्रोटोकॉल पर एसिंक्रोनस अनुरोधों को सही ढंग से संसाधित करेगा या नहीं।
और तीसरी महत्वपूर्ण विशेषता है initParams
, यह आपको पैरामीटर की एक सूची सेट करने की अनुमति देती है जिसे ServletContext में रखा जाएगा।
उदाहरण:
@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 फ़िल्टर मैपिंग की स्थापना
जैसा कि ऊपर उल्लेख किया गया है, फ़िल्टर एक उपयोगिता प्रकार के सर्वलेट हैं, और वे सर्वलेट्स की तरह कॉन्फ़िगर किए गए हैं। एनोटेशन में ये विशेषताएँ हैं @WebFilter
:
गुण | विवरण | |
---|---|---|
1 | filterName |
अद्वितीय नाम फ़िल्टर करें (जैसा कि web.xml में है) |
2 | displayName |
मानव पठनीय फ़िल्टर नाम |
3 | description |
फ़िल्टर विवरण |
4 | value / urlPatterns |
मैप करने के लिए url की सूची सेट करता है |
5 | dispatcherTypes |
डिस्पैचर टाइप्स की एक सूची निर्दिष्ट करता है |
6 | servletNames |
लागू करने के लिए सर्वलेट्स की एक सूची निर्दिष्ट करता है |
7 | initParams |
आपको फ़िल्टर के शुरुआती पैरामीटर सेट करने की अनुमति देता है |
8 | asyncSupported |
निर्दिष्ट करता है कि फ़िल्टर अतुल्यकालिक रूप से चल सकता है (HTTP/2) |
9 | smallIcon |
एक छोटा फ़िल्टर आइकन सेट करता है |
10 | largeIcon |
एक बड़ा फ़िल्टर आइकन सेट करता है |
फ़िल्टर का एक उदाहरण जो विशिष्ट सर्वलेट के सभी अनुरोधों को रोकता है :
@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
// implements Filter's methods here...
}
एकाधिक पैरामीटर दिए गए फ़िल्टर का एक उदाहरण :
@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...
}
RequestDispatcher के लिए दिए गए प्रकार के फ़िल्टर का एक उदाहरण :
@WebFilter(
urlPatterns = "/admin",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
// implements Filter's methods here...
}
आप निम्नलिखित व्याख्यानों में फ़िल्टर और सर्वलेट के उद्देश्य के बारे में अधिक जानेंगे।