8.1 సర్వ్లెట్ ఉల్లేఖనాలకు పరిచయం
వెర్షన్ 7తో ప్రారంభించి, టామ్క్యాట్ సర్వ్లెట్ API 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!");
}
}
సర్వ్లెట్ని డిక్లేర్ చేయడానికి మరియు ద్వారా అందించబడిన URLకి వచ్చే అన్ని అభ్యర్థనలను అందించడానికి దాన్ని మ్యాప్ చేయడానికి ఒక ఉల్లేఖన సరిపోతుంది /api/*
.
8.2 సర్వ్లెట్ మ్యాపింగ్ని సెటప్ చేస్తోంది
ఉల్లేఖన @WebServlet
అనేక పారామితులను కలిగి ఉంది, అది వివరించే సర్వ్లెట్ యొక్క చాలా సౌకర్యవంతమైన కాన్ఫిగరేషన్ను అనుమతిస్తుంది. ప్రధానమైన వాటిని పరిశీలిద్దాం:
గుణం | వివరణ | |
---|---|---|
1 | name |
సర్వ్లెట్ ప్రత్యేక పేరు (web.xmlలో వలె) |
2 | displayName |
హ్యూమన్ రీడబుల్ సర్వ్లెట్ పేరు |
3 | description |
సర్వ్లెట్ వివరణ |
4 | value |
మ్యాపింగ్ కోసం urlని సెట్ చేస్తుంది |
5 | urlPatterns |
మ్యాప్ చేయడానికి urlల జాబితాను పేర్కొంటుంది (విలువకు బదులుగా ఉపయోగించబడుతుంది) |
6 | initParams |
సర్వ్లెట్ యొక్క ప్రారంభ పారామితులను సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది |
7 | asyncSupported |
సర్వ్లెట్ అసమకాలికంగా అమలు చేయగలదని పేర్కొంటుంది (HTTP/2) |
8 | loadOnStartup |
సర్వ్లెట్ ప్రారంభ ప్రాధాన్యతను నియంత్రించడానికి సీక్వెన్స్ నంబర్ |
9 | 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
:
గుణం | వివరణ | |
---|---|---|
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...
}
మీరు క్రింది ఉపన్యాసాలలో ఫిల్టర్లు మరియు సర్వ్లెట్ల ప్రయోజనం గురించి మరింత తెలుసుకుంటారు.
GO TO FULL VERSION