2013-10-23 17 views
9

मैं एक सर्वलेट एक जहाँ मैं HTTP प्रतिक्रिया में एक हैडर सेट कर रहा हूं कर दिया है:HTTP प्रतिक्रिया में शीर्षलेख कैसे सेट करें?

public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    String userName=request.getParameter("userName"); 
    String newUrl = "http://somehost:port/ServletB"; 

    response.addHeader("REMOTE_USER", userName); 

    response.sendRedirect(newUrl); 
} 
अब एक सर्वलेट बी में

, मैं हैडर मूल्य कि में स्थापित किया गया था प्राप्त करने के लिए कोशिश कर रहा हूँ सर्वलेट एक:

public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    String userid = request.getHeader("REMOTE_USER"); 
} 


लेकिन यहाँ userid का मूल्यके रूप में आ रहा है 210। कृपया मुझे बताएं कि मैं यहां क्या खो रहा हूं।

+0

@Nambari, तुम मुझे जानते हो अगर मैं करना चाहते हैं कृपया सकते हैं ServletB को उपयोगकर्ता आईडी जानकारी भेजें तो मैं मौजूदा हेडर का उपयोग करके इसे कैसे सेट करूं? –

+0

क्योंकि एक अन्य एप्लिकेशन जिसे मैं userinfo भेजना चाहता हूं, यह एसएसओ कार्यान्वयन के लिए हेडर या कुकी स्वीकार करता है। –

उत्तर

7

सबसे पहले आप

response.sendRedirect(newUrl); 

यह ग्राहक (ब्राउज़र) एक यूआरएल के साथ 302 http कोड प्रतिक्रिया दे रहा है की प्रकृति को समझना होगा। ब्राउज़र तब उस यूआरएल पर एक अलग जीईटी अनुरोध करता है। और उस अनुरोध को पहले व्यक्ति में हेडर का कोई ज्ञान नहीं है।

तो sendRedirect अगर आप काम करने के लिए इस कोड को चाहते हैं सर्वलेट एक से एक हैडर बी

सर्वलेट को पास किए जाने से काम नहीं चलेगा - सर्वलेट ए (sendRedirect के बजाय) में RequestDispatcher का उपयोग करें। साथ ही, सापेक्ष पथ का उपयोग करना हमेशा बेहतर होता है।

public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException 
{ 
    String userName=request.getParameter("userName"); 
    String newUrl = "ServletB"; 
    response.addHeader("REMOTE_USER", userName); 
    RequestDispatcher view = request.getRequestDispatcher(newUrl); 
    view.forward(request, response); 
} 

========================

public void doPost(HttpServletRequest request, HttpServletResponse response) 
{ 
    String sss = response.getHeader("REMOTE_USER"); 
} 
0

शीर्षलेख फ़ील्ड को बाद के अनुरोधों पर कॉपी नहीं किया गया है। आपको इस (कुकीक्यू विधि) के लिए कुकी का उपयोग करना चाहिए या सत्र में "REMOTE_USER" स्टोर करना चाहिए (जिसे आप getSession विधि से प्राप्त कर सकते हैं)।

+0

या इसके बजाय अनुरोध विशेषताओं का उपयोग करें ... – dwegener

संबंधित मुद्दे