CodeGym/Java Course/தொகுதி 3/சர்வ்லெட் பதில்களை வடிவமைத்தல்

சர்வ்லெட் பதில்களை வடிவமைத்தல்

கிடைக்கப்பெறுகிறது

3.1 HttpServletResponse வகுப்பு

உங்கள் சர்வ்லெட் முறையை அழைத்த பிறகு service(), இணைய கொள்கலன் கிளையண்டிற்கு ஒரு பதிலை உருவாக்கும் HttpServletResponse. எனவே வாடிக்கையாளருக்கான பதிலை நீங்கள் எப்படியாவது பாதிக்க விரும்பினால், நீங்கள் இந்த பொருளை மாற்ற வேண்டும்.

சேவையக பதில் மூன்று பகுதிகளைக் கொண்டுள்ளது:

  • நிலை வரி (உதாரணமாக: 200 சரி)
  • தலைப்புகள்
  • பதில் உடல்

மற்றும் வகுப்பு முறைகளும் HttpServletResponse3 குழுக்களாக பிரிக்கப்பட்டுள்ளனவா? கிட்டத்தட்ட:

முறைகள் விளக்கம்
1 void setStatus(int sc) பதில் நிலைக் குறியீட்டை அமைக்கிறது.
2 void sendError(int sc) குறிப்பிட்ட குறியீட்டுடன் கிளையண்டிற்கு பிழையை அனுப்புகிறது.
3 void sendError(int sc, String msg) குறிப்பிட்ட குறியீட்டுடன் பிழை மற்றும் கிளையண்டிற்கு ஒரு செய்தியை அனுப்புகிறது.
4 void addHeader(String name, String value) பதில் தலைப்புகளின் பட்டியலில் ஒரு தலைப்பைச் சேர்க்கிறது.
5 void setHeader(String name, String value) பதில் தலைப்புகளின் பட்டியலில் தலைப்பை மாற்றுகிறது.
6 boolean containsHeader(String name) தலைப்பு ஏற்கனவே உள்ளதா என சரிபார்க்கிறது.
7 void addCookie(Cookie cookie) பதிலுக்கு குக்கீ சேர்க்கிறது.
8 void sendRedirect(String location) கிளையண்டை வேறு URLக்கு திருப்பிவிடும்.
9 String encodeRedirectURL(String url) sendRedirect முறையில் பயன்படுத்த குறிப்பிட்ட URL ஐ குறியாக்குகிறது.
10 String encodeURL(String url) அமர்வு ஐடி உட்பட குறிப்பிட்ட URL ஐ குறியாக்குகிறது.
பதினொரு void setContentType(String type) முடிவின் மைம் வகையை அமைக்கிறது.
12 void setContentLength(int len) மறுமொழி உடலின் நீளத்தை அமைக்கிறது.
13 void setCharacterEncoding(String charset) பதில் குறியாக்க தொகுப்பை அமைக்கிறது.
14 void setBufferSize(int size) மறுமொழி அமைப்பிற்கான இடையக அளவை அமைக்கிறது.
15 boolean isCommitted() பதிலுக்கு இடையகம் ஏற்கனவே எழுதப்பட்டதா என்பதைச் சரிபார்க்கிறது.
16 void flushBuffer() பதிலுக்கு இடையகத்தின் உள்ளடக்கங்களை எழுதுகிறது.
17 void reset() இடையக, தலைப்புகள் மற்றும் மறுமொழி குறியீடுகளில் சேமிக்கப்பட்டுள்ள எல்லா தரவையும் மீட்டமைக்கிறது.
18 void resetBuffer() பதில் இடையகத்தை அழிக்கிறது.

இங்கே முறைகள் மிகவும் அற்பமானவை. ஆனால் கீழே சில சிறப்பம்சங்களை தருகிறேன்.

தாங்கல் . உங்கள் சர்வ்லெட்டின் பதில் இடையகத்திற்கு எழுதப்பட்டுள்ளது, பயனருக்கு உடனடியாக அனுப்பப்படாது. எனவே, சில கட்டத்தில் (எடுத்துக்காட்டாக, பிழை ஏற்பட்டால்), இடையகத்திற்கு எழுதப்பட்ட அனைத்தையும் மீட்டமைக்கலாம் (அழிக்கலாம்). நீங்கள் ரீசெட்() முறையைக் கூட அழைக்கலாம் மற்றும் இடையகத்தின் உள்ளடக்கங்களை மட்டுமல்ல, பதில் குறியீட்டைக் கொண்ட தலைப்புகளையும் அழிக்கலாம்.

3.2 வழிமாற்று()

இரண்டாவது முக்கியமான விஷயம் திசைதிருப்பல். உங்கள் சர்வ்லெட் கிளையண்டை வேறு URL க்கு திருப்பிவிட முடிவு செய்தால், நீங்கள் எப்படியாவது இந்த URL ஐ கிளையண்டிற்கு அனுப்ப வேண்டும். இதைப் பயன்படுத்தி செய்யலாம் sendRedirect.

ஆனால் ஒரு முக்கியமான நுணுக்கம் உள்ளது. மறுமொழி அமைப்பில் அனுமதிக்கப்பட்டதை விட URI ஆனது பரந்த அளவிலான எழுத்துக்களைக் கொண்டிருக்கலாம். எனவே, முறைக்கு அழைப்பதற்கு முன், URL ஆனது செல்லுபடியாகும் எழுத்துத் தொகுப்பில் குறியாக்கம் செய்யப்பட வேண்டும் sendRedirect(). இதற்கு ஒரு சிறப்பு முறை உள்ளது encodeRedirectURL(String url). இதை பயன்படுத்து.

வழிமாற்று உதாரணம்:

public class RedirectServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String newUrl = "http://google.com?q=Learn to google!";
        String redirectUrl = response.encodeRedirectURL(newUrl);
        response.sendRedirect(redirectUrl);
    }
}

3.3 getWriter() முறை

இப்போது நம் உரையை ஒரு பதில் அமைப்பாக எழுதுவது எப்படி என்பதைக் கற்றுக்கொள்வோம். இதைச் செய்ய, வகுப்பில் ஒரு பொருளை வழங்கும் HttpServletResponseசிறப்பு முறை உள்ளது . யாரேனும் மறந்திருந்தால், பெயர் கொண்ட புலத்தின் வகை இதுவாகும் .getWriter()PrintStreamSystem.out

சில உரையை சர்வ்லெட் பதிலாக எழுத, உங்களுக்கு இது தேவை:

  • ஐ அழைப்பதன் மூலம் PrintStream பொருளைப் பெறவும் response.getWriter().
  • PrintStream ஆப்ஜெக்ட்டுக்கு என்ன தேவை என்று நீங்கள் நினைக்கிறீர்களோ அதை எழுதவும் (அனைத்து தரவுகளும் பஃப்பரில் எழுதப்படும்).
  • close()பிரிண்ட்ஸ்ட்ரீமில் உள்ள முறையை அழைப்பதன் மூலம் பயனருக்கு இடையகத்தை அனுப்பவும் .

aஇரண்டு எண்களைச் சேர்த்து , bபயனருக்கு முடிவைத் தரும் சர்வ்லெட்டை எழுதுவோம் :

public class CalculatorServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
         // Getting the parameter “a” and “b” from request
        String a = request.getParameter("a");
        String b = request.getParameter("b");

        try {
            // Convert strings to numbers and calculate sum
            int sum = Integer.parseInt(a) + Integer.parseInt(b);

            // Print HTML as a response for browser
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            out.println("<html>");
            out.println("<head> <title> CalculatorServlet </title> </head>");
            out.println("<body>");
            out.println("<h1> Sum == " + sum + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}
கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை