मैं servlet और फिल्टर और रैपर के बारे में कुछ पाठ पढ़ने के लिए नया हूँ। मैं फिल्टर समझ सकता हूं लेकिन रैपर के बारे में उलझन में आया। पुस्तक में, लेखक एक उदाहरण देता है:ServletResponse और HttpServletResponseWrapper के बीच मतभेद?
मामले में कोई आवरण:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
String name = request.getParameter("name").trim();
try {
chain.doFilter(request, response);
PrintWriter out = response.getWriter();
if (name.length() == 0) {
out.println("Some message");
out.println("</body>");
out.println("</html>");
out.close();
}
} catch (Throwable t) {
}
}
आवरण के मामले में:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
String name = request.getParameter("name").trim();
HttpServletResponse httpRes = (HttpServletResponse) response;
HttpServletResponseWrapper resWrapper = new HttpServletResponseWrapper(httpRes);
try {
chain.doFilter(request, response);
PrintWriter out = resWrapper.getWriter(); // why dont we just use response.getWriter();
if (name.length() == 0) {
out.println("<h3>Some message");
out.println("</body>");
out.println("</html>");
out.close();
}
} catch (Throwable t) {
}
}
क्यों हम HttpServletResponseWrapper
जरूरत है हम साथ एक ही बात कर सकते हैं, जबकि ServletResponse
मामले में 1? क्या कोई मुझे एक स्पष्ट उदाहरण दे सकता है कि हमें ServletResponse
के बजाय HttpServletResponseWrapper
का उपयोग करना चाहिए? मैंने Google की कोशिश की है लेकिन कोई भाग्य नहीं मिला है।
यह कोड अजीब लग रहा है। सर्वलेट प्रतिक्रिया लपेटने का उद्देश्य इसे आगे पास करना है ('chain.doFilter (अनुरोध, resWrapper); ') और रैपर में चयनित कॉल को रोकें। उदाहरण के लिए, आप विभिन्न प्रतिक्रिया लेखक को वापस कर सकते हैं जो फ्लाई पर सामग्री को बदलता या संपीड़ित करता है और इसे लक्ष्य 'प्रतिक्रिया' पर भेजता है। इस उदाहरण में ज्यादा समझ नहीं है ... क्या आप इसका स्रोत प्रदान कर सकते हैं (पेज, पुस्तक?) –
मुझे खुद को अजीब भी मिला। यह कोड मैंने विश्वविद्यालय व्याख्याता की पावरपॉइंट स्लाइड से लिया था। यदि हम chain.doFilter (अनुरोध, resWrapper) करते हैं तो यह अधिक समझ में आता है; आपके सुझाव के रूप में – ipkiss