我的查询字符串为空

时间:2012-10-18 14:40:36

标签: jsp query-string

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

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,其中始终是null ...我在哪里有一些SQL查询,例如:

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

abc_user_history.jsp我总是在null。但是我能够获得stock_number值。请建议如何通过价值......

2 个答案:

答案 0 :(得分:1)

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

如果你真的需要你的where参数是一个单独的动态参数, 您可以传递一个字符串,其中所有对的字段=值由自定义分隔符分隔, 然后用Java解析它们(使用StringTokenizer)并将它们挂载到Action中的Where条件中。

变量的示例:

其中= “STOCK_ID ::: '4575%' ;;; stock_name ::: 'ABC%' ;;;” (:::表示字段名称已结束且其开始值,;;;表示该对已结束,您最终开始阅读新对。)

当然,如果你的某些值包含“;;;”,这将会中断或者“:::”(你应该先使用javascript对它们进行消毒)。

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

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

你应该使用POST来发布一个表单,而不是只用于阅读页面的GET,而不是发布内容(不可能使用window.open(),但是你可以使用target =来自锚点发布一个表单“_blank”和onclick =“javascript:document.getElementById ['myForm']。submit();”)

希望有帮助...

答案 1 :(得分:1)

在get params中传递查询是非常危险的,在java中搜索参数化查询,其上有很多文档。 你是从javascript调用jsp页面吗?请注意字符串中的引号。