1.1 ఇంటర్ఫేస్ సర్వ్లెట్
ఈ రోజు మనం ఒక కొత్త మరియు ఆసక్తికరమైన అంశాన్ని ప్రారంభిస్తున్నాము - సర్వ్లెట్స్ . ఇది జావాకు సర్వ్లెట్లను జోడించడం వల్ల జావా పెద్ద సర్వర్ అప్లికేషన్లకు వాస్తవ ప్రమాణంగా మారింది. ప్రపంచంలోని మొత్తం ఎంటర్ప్రైజ్ సాఫ్ట్వేర్లలో 80% జావాలో వ్రాయబడ్డాయి. మరియు చైనాలో, ప్రతిదీ 100%. కాబట్టి సర్వ్లెట్స్ అంటే ఏమిటి?
సర్వ్లెట్ అనేది జావా ప్రోగ్రామ్ను వెబ్ సేవగా మారుస్తుంది మరియు క్లయింట్ల నుండి అభ్యర్థనలను ప్రాసెస్ చేయడానికి అనుమతిస్తుంది. మరియు ఇది ఇలా ఉంది ...
90 వ దశకంలో, వరల్డ్ వైడ్ వెబ్ వచ్చిన వెంటనే, వెబ్ క్లయింట్లు (బ్రౌజర్లు) మరియు వెబ్ సర్వర్లు కనిపించాయి. వెబ్ సర్వర్లు సాధారణంగా ఇంటర్నెట్లో నిల్వ చేసిన ఫైల్ను పంపిణీ చేస్తాయి: html పేజీలు, స్క్రిప్ట్లు, చిత్రాలు మొదలైనవి.
ఒకానొక సమయంలో, ప్రతి ఒక్కరూ రెండు వైపులా తెలివిగా మార్చడం అవసరం అనే నిర్ణయానికి వచ్చారు. జావాస్క్రిప్ట్ HTML పేజీలకు జోడించబడింది మరియు సర్వర్లకు ప్లగిన్లు జోడించబడ్డాయి - నిర్దిష్ట అభ్యర్థనలకు ప్రతిస్పందనగా పిలువబడే ప్రత్యేక స్క్రిప్ట్లు మరియు సర్వర్ ప్రవర్తనను మరింత సరళంగా మరియు తెలివిగా మార్చాయి.
కాబట్టి సర్వ్లెట్ అనేది జావా ప్లగ్ఇన్గా రూపొందించబడింది Java web-server
మరియు నిర్దిష్ట పేజీల కోసం అభ్యర్థించినప్పుడు జావా కోడ్ని అమలు చేయడానికి అనుమతించబడుతుంది. మరియు ఇప్పటికే ఈ జావా కోడ్, సర్వ్లెట్ క్లాస్ నుండి వారసత్వంగా పొందిన తరగతి ద్వారా ప్రాతినిధ్యం వహిస్తుంది, దాని డెవలపర్లు ఉద్దేశించినది చేసింది.
మరియు మీకు ఇప్పటికే తెలిసినట్లుగా, అత్యంత ప్రజాదరణ పొందిన జావా వెబ్ సర్వర్ టామ్క్యాట్ . "టామ్ అండ్ జెర్రీ" అనే కార్టూన్ నుండి పిల్లి టామ్ గౌరవార్థం పేరు పెట్టారు.
సర్వ్లెట్లతో టామ్క్యాట్ ఎలా సంకర్షణ చెందుతుంది? వాస్తవానికి, ఈ ప్రక్రియ ప్రమాణీకరించబడింది మరియు దీనిని సర్వ్లెట్ జీవిత చక్రం అంటారు . అందులో, సర్వ్లెట్ అనేది లోడ్ చేయదగిన వస్తువు, మరియు వెబ్ సర్వర్ అనేది సర్వ్లెట్ కంటైనర్ .
సర్వ్లెట్ ఇంకా లోడ్ చేయకపోతే , అప్పుడు:
- సర్వ్లెట్ క్లాస్ కంటైనర్ ద్వారా లోడ్ చేయబడింది.
- కంటైనర్ సర్వ్లెట్ యొక్క తరగతి (ఆబ్జెక్ట్) యొక్క ఉదాహరణను సృష్టిస్తుంది.
- కంటైనర్
init()
సర్వ్లెట్ ఆబ్జెక్ట్పై ఒక పద్ధతిని పిలుస్తుంది. పద్ధతిని ఒకసారి మాత్రమే పిలుస్తారు.
ప్రామాణిక పని చక్రం - క్లయింట్ అభ్యర్థనను అందించడం :
- ప్రతి అభ్యర్థన ప్రత్యేక థ్రెడ్లో ప్రాసెస్ చేయబడుతుంది.
- కంటైనర్
service()
సర్వ్లెట్లో ఒక పద్ధతిని పిలుస్తుంది మరియు అక్కడ సర్వ్లెట్రిక్వెస్ట్ మరియు సర్వ్లెట్ రెస్పాన్స్ ఆబ్జెక్ట్లను పంపుతుంది. destroy()
సర్వ్లెట్ను ముగించడానికి, సర్వ్లెట్ ఆబ్జెక్ట్పై ఒక పద్ధతిని పిలుస్తారు . ఇది ఒక్కసారి మాత్రమే పిలువబడుతుంది.
సర్వ్లెట్ నిలిపివేయడానికి అనేక కారణాలు ఉండవచ్చు:
- ప్రోగ్రామర్ వెబ్ సర్వర్ను పునఃప్రారంభిస్తాడు, అన్ని సర్వ్లెట్లను సరసముగా మూసివేయడం అవసరం.
- ప్రోగ్రామర్ సర్వ్లెట్ యొక్క కొత్త సంస్కరణను లోడ్ చేస్తాడు, పాతది తప్పక సరిగ్గా అన్లోడ్ చేయబడాలి.
- మరియు అందువలన న.
ప్రధాన విషయం గుర్తుంచుకోండి: వెబ్ సర్వర్ మరియు దాని సర్వర్లు వైఫల్యాలు లేకుండా పని చేయాలి మరియు నెలల తరబడి పునఃప్రారంభించబడతాయి, నిమిషానికి వేలాది అభ్యర్థనలను అందిస్తాయి. అందువల్ల, సర్వ్లెట్ను లోడ్ చేయడం మరియు పని చేయడం మరియు అన్లోడ్ చేయడం రెండింటి కోసం కోడ్ ఎల్లప్పుడూ చాలా అధిక నాణ్యతతో వ్రాయబడాలి.
1.2 HttpServlet తరగతి
సర్వ్లెట్ మరియు కంటైనర్ ఎలా పని చేస్తాయో ప్రమాణీకరించడానికి సర్వ్లెట్ క్లాస్ ఉంది. ప్రోగ్రామర్లు ఈ తరగతితో నేరుగా పని చేయరు. బాగా, వారు చాలా అరుదుగా పని చేస్తారు. సర్వసాధారణంగా ఉపయోగించే తరగతి HttpServlet
సర్వ్లెట్ నుండి వారసత్వంగా పొందబడింది.
ఈ తరగతిలో మనకు ఉపయోగపడే అనేక పద్ధతులు ఉన్నాయి. మీరు వాటిని తరచుగా ఉపయోగిస్తారు:
పద్ధతి | వివరణ | |
---|---|---|
1 | init() |
సర్వ్లెట్ లోడ్ అయినప్పుడు ఒకసారి కాల్ చేసారు |
2 | destroy() |
సర్వ్లెట్ దించగానే ఒకసారి కాల్ చేశారు |
3 | service(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త అభ్యర్థన కోసం కాల్ చేయబడింది |
4 | doGet(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త GET అభ్యర్థన కోసం కాల్ చేయబడింది |
5 | doPost(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త POST అభ్యర్థన కోసం కాల్ చేయబడింది |
6 | doHead(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త HEAD అభ్యర్థన కోసం కాల్ చేయబడింది |
7 | doDelete(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త డిలీట్ అభ్యర్థన కోసం కాల్ చేయబడింది |
8 | doPut(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త PUT అభ్యర్థన కోసం కాల్ చేయబడింది |
init()
మరియు పద్ధతులు destroy()
సర్వ్లెట్ తరగతి నుండి వారసత్వంగా పొందబడ్డాయి. అందువల్ల, మీరు వాటిని మీ సర్వ్లెట్లో భర్తీ చేయాలని నిర్ణయించుకుంటే, మీరు బేస్ క్లాస్ నుండి వాటి అమలును కూడా కాల్ చేయాల్సి ఉంటుంది. దీని కోసం కమాండ్ ఉపయోగించబడుతుంది super.method name()
.
సర్వ్లెట్ ఉదాహరణ:
public class FirstHttpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Getting the parameter “secret” from request
String secret = request.getParameter("secret");
// Put parameter “secret” into Http-session
HttpSession session = request.getSession(true);
session.setAttribute("secret", secret);
// Print HTML as response for browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Header</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet example "+ secret +"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
1.3 సేవ(HttpServletRequest, HttpServletResponse) పద్ధతి
మీరు క్లయింట్ అభ్యర్థన యొక్క ప్రాసెసింగ్ను సర్వ్లెట్ కోణం నుండి చూస్తే, విషయాలు ఇలా ఉంటాయి.
ప్రతి క్లయింట్ అభ్యర్థన కోసం, కంటైనర్ (వెబ్ సర్వర్) సృష్టిస్తుంది HttpServletRequest
మరియు వస్తువులు HttpServletResponse
, ఆపై service(HttpServletRequest request, HttpServletResponse response)
సంబంధిత సర్వ్లెట్లో ఒక పద్ధతిని పిలుస్తుంది. ఈ వస్తువులు దానికి పంపబడతాయి, తద్వారా పద్ధతి అవసరమైన డేటాను తీసుకోగలదు request
మరియు పని ఫలితాన్ని ఉంచగలదు response
.
పద్ధతి service()
డిఫాల్ట్ అమలును కలిగి ఉంది. ఇది పునర్నిర్వచించబడకపోతే, అది అమలు చేయబడుతుంది. అతను చేసేది అదే.
పద్ధతి service()
అభ్యర్థన (GET, POST, ...) నుండి HTTP పద్ధతి రకాన్ని నిర్ణయిస్తుంది మరియు అభ్యర్థనకు సంబంధించిన పద్ధతిని కాల్ చేస్తుంది.
పద్ధతి | వివరణ | |
---|---|---|
1 | service(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త అభ్యర్థన కోసం కాల్ చేయబడింది |
2 | doGet(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త GET అభ్యర్థన కోసం కాల్ చేయబడింది |
3 | doPost(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త POST అభ్యర్థన కోసం కాల్ చేయబడింది |
4 | doHead(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త HEAD అభ్యర్థన కోసం కాల్ చేయబడింది |
5 | doDelete(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త డిలీట్ అభ్యర్థన కోసం కాల్ చేయబడింది |
6 | doPut(HttpRequest, HttpResponse) |
సర్వ్లెట్కి ప్రతి కొత్త PUT అభ్యర్థన కోసం కాల్ చేయబడింది |
మీ తరగతిలో, మీరు ఒక పద్ధతిని పునర్నిర్వచించవచ్చు service()
లేదా దానిని ఒంటరిగా వదిలివేయవచ్చు, కానీ అవసరమైన విధంగా పద్ధతులను పునర్నిర్వచించవచ్చు doGet()
, ...doPost()