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!");
    }
}

ஒரு servlet ஐ அறிவிக்கவும், URL க்கு வரும் அனைத்து கோரிக்கைகளையும் வழங்க வரைபடத்தை உருவாக்கவும் ஒரு சிறுகுறிப்பு போதுமானது /api/*.

8.2 சர்வ்லெட் மேப்பிங்கை அமைத்தல்

சிறுகுறிப்பில் @WebServletபல அளவுருக்கள் உள்ளன, அவை விவரிக்கும் சர்வ்லெட்டின் மிகவும் நெகிழ்வான உள்ளமைவை அனுமதிக்கின்றன. முக்கியவற்றைப் பார்ப்போம்:

பண்பு விளக்கம்
1 name சர்வ்லெட்டின் தனித்துவமான பெயர் (web.xml இல் உள்ளது போல)
2 displayName மனிதனால் படிக்கக்கூடிய சர்வ்லெட் பெயர்
3 description சர்வ்லெட் விளக்கம்
4 value மேப்பிங்கிற்கான url ஐ அமைக்கிறது
5 urlPatterns வரைபடத்திற்கான urlகளின் பட்டியலைக் குறிப்பிடுகிறது (மதிப்புக்குப் பதிலாகப் பயன்படுத்தப்படுகிறது)
6 initParams servlet இன் தொடக்க அளவுருக்களை அமைக்க உங்களை அனுமதிக்கிறது
7 asyncSupported சர்வ்லெட் ஒத்திசைவற்ற முறையில் இயங்க முடியும் என்பதைக் குறிப்பிடுகிறது (HTTP/2)
8 loadOnStartup சர்வ்லெட் தொடக்க முன்னுரிமையைக் கட்டுப்படுத்த வரிசை எண்
9 smallIcon சிறிய சர்வ்லெட் ஐகானை அமைக்கிறது
10 largeIcon பெரிய சர்வ்லெட் ஐகானை அமைக்கிறது

இங்கே பல சுவாரஸ்யமான புள்ளிகள் உள்ளன.

முதலில், valueஅவை urlPatternsஒன்றுக்கொன்று மாற்றக்கூடிய பண்புக்கூறுகள் என்பதைக் கவனியுங்கள். சர்வ்லெட் வரைபடமாக்க வேண்டிய URLகளின் பட்டியலைக் குறிப்பிட அவை இரண்டும் உங்களை அனுமதிக்கின்றன.

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 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...
}

பின்வரும் விரிவுரைகளில் வடிகட்டிகள் மற்றும் சேவையகங்களின் நோக்கம் பற்றி மேலும் அறிந்து கொள்வீர்கள்.