8.1 सर्वलेट भाष्यांचा परिचय

आवृत्ती 7 पासून प्रारंभ करून, टॉमकॅटने सर्व्हलेट API 3.0 वेब सर्व्हलेट तपशीलास समर्थन देण्यास सुरुवात केली . विशेषतः, त्यात एक पॅकेज दिसले ज्याचे नाव आहे javax.servlet.annotation. यामध्ये विविध प्रकारच्या भाष्यांचा समावेश आहे ज्याचा वापर सर्व्हलेट क्लासवर भाष्य करण्यासाठी केला जाऊ शकतो. तुम्ही भाष्य वापरत असल्यास, उपयोजन वर्णनकर्ता (web.xml) आवश्यक नाही.

सर्वात उपयुक्त भाष्यांची यादी:

भाष्य वर्णन
@WebServlet सर्व्हलेट घोषित करते
2 @WebInitParam इनिशिएलायझेशन पॅरामीटर निर्दिष्ट करते
3 @WebFilter वेब फिल्टर घोषित करते
4 @WebListener वेब लायसेनर घोषित करतो
@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!");
    }
}

सर्व्हलेट घोषित करण्यासाठी आणि द्वारे दिलेल्या URL वर येणार्‍या सर्व विनंत्या पूर्ण करण्यासाठी ते मॅप करण्यासाठी एक भाष्य पुरेसे आहे /api/*.

8.2 सर्व्हलेट मॅपिंग सेट करणे

भाष्यामध्ये @WebServletअनेक पॅरामीटर्स आहेत जे ते वर्णन केलेल्या सर्व्हलेटच्या अतिशय लवचिक कॉन्फिगरेशनला परवानगी देतात. चला मुख्य गोष्टींवर एक नजर टाकूया:

विशेषता वर्णन
name सर्व्हलेट अद्वितीय नाव (web.xml प्रमाणे)
2 displayName मानवी वाचनीय सर्वलेट नाव
3 description सर्वलेट वर्णन
4 value मॅपिंगसाठी url सेट करते
urlPatterns नकाशावर url ची सूची निर्दिष्ट करते (मूल्याऐवजी वापरली जाते)
6 initParams तुम्हाला सर्व्हलेटचे स्टार्ट पॅरामीटर्स सेट करण्याची परवानगी देते
asyncSupported सर्व्हलेट असिंक्रोनसपणे चालू शकते हे निर्दिष्ट करते (HTTP/2)
8 loadOnStartup सर्व्हलेट प्रारंभ प्राधान्य नियंत्रित करण्यासाठी अनुक्रम क्रमांक
smallIcon एक लहान सर्वलेट चिन्ह सेट करते
10 largeIcon एक मोठे सर्वलेट चिन्ह सेट करते

येथे अनेक मनोरंजक मुद्दे आहेत.

प्रथम, ते लक्षात घ्या valueआणि ते urlPatternsअदलाबदल करण्यायोग्य गुणधर्म आहेत. ते दोन्ही तुम्हाला URL ची सूची निर्दिष्ट करण्याची परवानगी देतात ज्यावर सर्व्हलेटने मॅप केले पाहिजे.

asyncSupportedदुसरे म्हणजे, सर्वलेट HTTP/2 प्रोटोकॉलवर असिंक्रोनस विनंत्यांवर योग्यरित्या प्रक्रिया करेल की नाही हे पॅरामीटर सूचित करते.

आणि तिसरा महत्त्वाचा गुणधर्म आहे initParams, तो तुम्हाला सर्व्हलेट कॉन्टेक्स्टमध्ये ठेवलेल्या पॅरामीटर्सची सूची सेट करण्याची परवानगी देतो.

उदाहरण:

@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:

विशेषता वर्णन
filterName अद्वितीय नाव फिल्टर करा (web.xml प्रमाणे)
2 displayName मानवी वाचनीय फिल्टरचे नाव
3 description फिल्टर वर्णन
4 value / urlPatterns नकाशावर url ची सूची सेट करते
dispatcherTypes डिस्पॅचर प्रकारांची सूची निर्दिष्ट करते
6 servletNames लागू करण्यासाठी सर्वलेटची सूची निर्दिष्ट करते
initParams तुम्हाला फिल्टरचे प्रारंभिक पॅरामीटर्स सेट करण्याची अनुमती देते
8 asyncSupported फिल्टर असिंक्रोनसपणे चालू शकते हे निर्दिष्ट करते (HTTP/2)
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...
}

फिल्टर्स आणि सर्व्हलेट्सच्या उद्देशाबद्दल तुम्ही पुढील लेक्चर्समध्ये अधिक जाणून घ्याल.