[英]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.