2011-10-31 96 views
0

我正在向表單發送發送請求到重定向servlet。然後,servlet將一個表單寫入其響應(getWriter)對象。該表格包含許多隱藏字段。我使用JavaScript來提交這個表單(JavaScript也被寫入響應對象)。這個表單的目標是另一個servlet。從過濾器獲取servlet參數值

現在,我正在編寫一個過濾器來攔截我發送給另一個servlet(在另一個服務器上)的隱藏參數。但是,當我這樣做: String [] values = req.getParameterValues(name);

我沒有得到任何我放入字符串「name」中的參數的值。我不能改變代碼的架構(不是我的)。我只需要獲取由我的過濾器中的第一個servlet發送的參數,但我一直得到空值。任何幫助是極大的讚賞。

我的第一servlet代碼:

PrintWriter out = response.getWriter(); 
    out.println("<html>"); 
    out.println("<head><title>redirectServlet</title></head>"); 

    out.println("<body>"); 
    out.println("<form name=\"go\" method=\"post\" action=\"http://" + 
       remotehost + "/somerep/someservlet?\">"); 



    out.println("<input type=hidden name=userid value=" + conn + "> "); 

    out.println("<input type=hidden name=paramform value=no> "); 
    out.println("<input type=hidden name=nonblocksql value=no> "); 
    out.println("<input type=hidden name=recursive_load value=no> "); 
    out.println("<input type=hidden name=job_seq_id value=" + jobId + ">"); 
    out.println("<input type=hidden name=destype value=cache> "); 
    out.println("<input type=hidden name=desformat value=pdf> "); 
    out.println("</form> "); 

    out.println("<script language=\"JavaScript\" type=\"text/javascript\"> "); 
    out.println("document.getElementById('go').submit();"); 
    out.println("</script>"); 

    out.println("</body>"); 
    out.println("</html>"); 
+0

難以不說不看一些代碼 –

+0

Matt,我用一些代碼更新了我的問題。這個servlet將使用javascript將表單提交給指定的遠程servlet。我想在遠程servlet的機器/服務器上使用servlet過濾器攔截此請求。 – berto77

+4

你真的應該考慮將JSP用於HTML部分,Servlet用於邏輯部分。 –

回答

1

有與該ID go沒有元件生成的HTML。變更

out.println("<form name=\"go\" method=\"post\" action=\"http://" + 
// to 
out.println("<form id=\"go\" method=\"post\" action=\"http://" + 
+0

良好的捕獲,但是這在調用遠程servlet方面工作...我會改變,看看它是否有所作爲。謝謝!:剛試過..似乎它在IE中沒有什麼不同。我可以得到很好的頭,但不是隱藏的參數。 – berto77