我有一个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
值。请建议如何通过价值......
答案 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页面吗?请注意字符串中的引号。