簡體   English   中英

servlet查詢字符串

[英]servlet Query String

我正在使用查詢字符串將參數發送到表單操作標簽中的其他頁面,但是當我在下一頁獲取值時,它顯示null並且null存儲在數據庫中。

我的代碼如下:

out.println("<html>");
out.println("<form action=SubmitTimesheet?manager="+manager+">");

在另一頁上,我嘗試以以下方式獲取parameter的值:

String manager=request.getParameter("manager");
out.println(manager);

但是它正在打印null並且如果我嘗試將獲取的值存儲在數據庫中,它將存儲null。

請幫忙。

如果manager值為null,則不要添加manager查詢參數。

還請記住對查詢參數進行編碼。

最后,應引用action屬性的值。

out.print("<form action=\"SubmitTimesheet");
if (manager != null)
    out.print("?manager=" + URLEncoder.encode(manager, "UTF-8"));
out.println("\">");

除了使用"UTF-8"字符串文字,還可以使用StandardCharsets.UTF_8


更新

實際上,您不應將查詢參數添加到<form>的操作中。 該表單將發布<input>所有值以及其他與表單相關的元素,因此您應該做的是將manager值添加為隱藏的輸入字段:

out.println("<html>");
out.println("<form action=\"SubmitTimesheet\">");
if (manager != null)
    out.print("<input name=\"manager\" type=\"hidden\" value=\"" +
              StringEscapeUtils.escapeHtml4(manager) + "\">");

上面使用了由問題答案推薦的庫推薦的Java轉義HTML方法

我已經使用了會話對象,並在會話變量而不是查詢字符串中傳遞了manager的值。 我使用了以下代碼:

ses.putValue(“ manager”,manager);

在第一個servlet頁面上,然后在第二個servlet頁面上,我這樣獲取值:

String manager=ses.getValue("manager").toString();

out.println(manager);

現在它正在打印正確的值,而不是null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM