gpt4 book ai didi

java servlet : passing url variable values with spaces

转载 作者:行者123 更新时间:2023-11-30 01:40:06 25 4
gpt4 key购买 nike

我正在构建一个简单的 java Servlet,它使用 URL 变量将类别传递到另一个 Servlet。

例如下面的代码

ResultSet rs = qw.DBquery("select distinct manufacturer from Products order by manufacturer asc");
try {
while (rs.next()) {
table+= "<tr><td><a href=\"getItems?manufacturer="
+ rs.getString("Manufacturer") + "\">"
+ rs.getString("Manufacturer") + "</a></td></tr>\n";
}
}

其输出包括:

Adobe 
Adobe Acrobat
IBM
IBM - Workstations

如果我点击其中一个,链接将到达以下 URL:

http://localhost/getItems?getItems?manufacturer=Adobe%20Acrobat 

但是,当我获得制造商变量及其值时

String manufacturer = request.getParameter( "manufacturer" );
ResultSet rs1 = qw.DBquery("select * from products where Manufacturer like '"
+ manufacturer + "'");

如果制造商的值中有空格,查询输出将失败并且不会生成任何内容。关于如何将其转换回来的任何想法或解决方法?我需要进行某种 urldecode 吗?

提前致谢

最佳答案

URL 中的空格编码为 %20 是正确的,Web 应用程序容器负责 URL 解码。

String manufacturer = request.getParameter( "manufacturer" );

因此,程序中的字符串manufacturer 应包含“Adobe Acrobat”(带有空格)。您可以验证这一点(通过将其记录到某个地方)吗?

"select * from products where Manufacturer like '"+ manufacturer + "'"

此外,请使用绑定(bind)变量。直接将查询参数(也没有任何验证!)插入到 SQL 中会让您完全受到 SQL 注入(inject)攻击。这对性能也很不利。

"select * from products where Manufacturer like ? "

关于java servlet : passing url variable values with spaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com