1

我有一个jsp文件,我使用以下 url 发送两个参数。

var url = 'abc_user_history.jsp?where='+where+'&stock_number=' + StockNumber;
window.open(url, 'Special_Value_History','toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=yes,width=1500,height=900');

在这里,我只得到stock_number, where is always null... 在我有一些 SQL 查询的地方,例如:

where=where stock_id like '4575%' and stock_name like 'abc%'

abc_user_history.jsp我总是有 where as null。但是我能够获得stock_number价值。请建议如何将值传递给...

4

2 回答 2

1

这里有这么多反模式,我不知道从哪里开始:|

如果您确实需要 where 参数是一个单一的动态参数,您可以传递一个字符串,其中所有对 field=value 由自定义分隔符分隔,然后在 Java 中解析它们(使用 StringTokenizer)并将它们安装在 Where动作中的条件。

where 变量的示例:

where="stock_id:::'4575%';;;stock_name:::'abc%';;;" (::: 表示字段名称已结束,其起始值,;;; 表示该对已结束,您最终将开始读取新对)。

当然,如果您的某些值包含“;;;”,这将中断 或“:::”(你应该先用 javascript 清理它们)。

顺便说一句,这不好,因为您不应该将您的 java 挂载字符串连接到查询字符串,而是将您的标记化值注入 PreparedStatement(因此 PreparedStatement 将为您检查和清理它们)。

但我建议将每个参数作为单个参数传递(不是 ?where= 而是 ?stock_id=xxx&stock_name=yyy&... 在您的 URL 中)。

你应该使用 POST 来发布表单,而不是 GET,它应该只用于阅读页面,而不是发布东西(不能使用 window.open(),但你可以从带有 target="_blank" 的锚点发布表单和 onclick="javascript:document.getElementById['myForm'].submit();")

希望有帮助...

于 2012-10-18T15:20:32.397 回答
1

在get params中传query是很危险的,在java中搜索parameterized query,上面有很多文档。你是从javascript调用jsp页面吗?请注意字符串中的引号。

于 2012-10-18T15:23:55.063 回答