में एक अनुरोध भेजने मुझे आशा है कि तुम मुझे इस समस्या का सामना करना पड़ रहा हूँ के साथ मदद कर सकते हैं:अनंत लूप जब एक जावा सर्वलेट
मैं NetBeans का उपयोग कर एक सरल वेब अनुप्रयोग बनाया। अभी तक, यह बहुत बुनियादी है।
- एक सर्वलेट
/verificon/*
यूआरएल पैटर्न पर अनुरोध प्राप्त करता है। - यह
/verificon/
के बाद जो भी स्ट्रिंग सेट किया गया है, यह निष्कर्ष निकाला जाता है, यानी यदि यूआरएलhttp://domain/context/verificon/blahblah
था, तो यहblahblah
निकालता है। - यह जांचता है कि ऐसी स्ट्रिंग एक ज्ञात स्ट्रिंग है, और परिणाम (सत्य/गलत) के साथ बस एक jsp प्रदर्शित करता है।
हालांकि, के रूप में सरल यह है के रूप में, मैं निम्नलिखित त्रुटि जब एक परीक्षण तार के साथ आवेदन चलाने के:
javax.servlet.ServletException:
The server side component of the HTTP Monitor has detected a java.lang.StackOverflowError.
This happens when there is an infinite loop in the web module.
Correct the cause of the infinite loop before running the web module again.
org.netbeans.modules.web.monitor.server.MonitorFilter.rethrow(MonitorFilter.java:1648)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:473)
mx.tegu.kdor.web.iu.ServletVerificon.processRequest(ServletVerificon.java:51)
mx.tegu.kdor.web.iu.ServletVerificon.doGet(ServletVerificon.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
mx.tegu.kdor.web.iu.ServletVerificon.processRequest(ServletVerificon.java:51)
mx.tegu.kdor.web.iu.ServletVerificon.doGet(ServletVerificon.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
mx.tegu.kdor.web.iu.ServletVerificon.processRequest(ServletVerificon.java:51)
mx.tegu.kdor.web.iu.ServletVerificon.doGet(ServletVerificon.java:70)
...
तो यह सिर्फ अपने आप को दोहरा रहता है।
मेरी सर्वलेट की प्रक्रियाRequest विधि निम्नानुसार है। TestData
एक सहायक वर्ग के अलावा कुछ भी नहीं है जो Mapeo
ऑब्जेक्ट देता है यदि स्ट्रिंग ज्ञात है या null
यदि यह नहीं है।
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String h = request.getRequestURI().replaceFirst(request.getContextPath() + "/verificon/", "");
TestData td = TestData.getInstance();
Mapeo m = td.getMapeo(h);
boolean valido = false;
if(m != null) {
valido = true;
}
request.setAttribute("valido", valido);
/*
PrintWriter out = response.getWriter();
out.write("Válido?: " + valido);
out.close();
*/
String respuesta = "WEB-INF/jsp/resultado.jsp";
// Como regla general, forward se utiliza para los GET y sendRedirect para los POST
RequestDispatcher rd = request.getRequestDispatcher(respuesta);
rd.forward(request, response);
}
किसी भी मदद वास्तव में सराहनीय है।
यदि कोई अतिरिक्त जानकारी है जो आपको जानना है, तो कृपया मुझे बताएं।
धन्यवाद!
नोट 1: सर्वलेट का लाइन 51 प्रक्रिया के अंत में rd.forward() के लिए कॉल है। अनुरोध विधि, और लाइन 70 केवल doGet विधि से प्रक्रिया Request() को कॉल करने के लिए कॉल है। नोट 2: अगर मैं आगे अनुभाग पर टिप्पणी करता हूं और प्रिंटवाइटर सेक्शन को अनदेखा करता हूं तो सब कुछ अपेक्षित काम करता है। नोट 3: resultado.jsp उचित doctype डीईएफ़, एचटीएमएल, सिर और शरीर टैग और इस के साथ एक सादे HTML पृष्ठ है: <%boolean valido = (boolean)request.getAttribute("valido");%> ... <% if(valido) {%> <p>Válido</p> <% } else {%> <p>Inválido</p> <% }%>
Pff, मैं विश्वास नहीं कर सकता मुझे लगता है कि याद किया! इस के साथ मेरी मदद करने के लिए धन्यवाद! इसके अलावा, ईएल का सुझाव देने के लिए धन्यवाद, मैं इसके साथ मिल जाऊंगा। – ahpoblete
आपका स्वागत है। – BalusC