我是JSP / Servlets的新手,我一直在做一些事情并且它已经工作了一段时间。我有一个名为'telGir.jsp'的jsp,我将一个URL参数从这个JSP传递给一个名为'telKayit'的servlet
我在localhost上运行时JSP页面的示例URL:
http://localhost:9081/Pol/telGir.jsp?token=3403123412340000
这是我的jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title>
</head>
<body
<p align="center"><font size="14"><b>TEXT</b></font></p>
<p align="center"><font size="14">MORE TEXT</font></p>
<table align="center" size="800">
<form name="Police" id="Police" action="telKayit?token=${param.token}" method="post">
</table>
<table align="center" size="800">
<tr><td align="center"><input type="submit" value="Tamam" style="height:2.5em; width:7.5em;font-size: 51px "></td></tr>
</table></form>
</body>
</html>
按下按钮时,表单会将我带到此URL:
http://localhost:9081/Pol/telKayit?token=3403123412340000
最后在我的servlet中,我使用这行代码从上面的链接中获取令牌:
String token = request.getParameter("token");
到目前为止,这对我有用,因为代币由数字组成。最近我被要求为令牌添加编码文本,因此jsp的新URL将类似于:
http://localhost:9081/Pol/telGir.jsp?token=6amyutm%2F%2BhZeXxJonjEBqduaQVlXuO3%2FUAffs2MSyBs%3D
问题在于:当token参数由于某种原因从JSP传递到Servlet时,'%'会导致它更改。当我按下按钮时,会出现以下链接,该链接具有不同的“令牌”值。
http://localhost:9081/Pol/telKayit?token=6amyutm/+hZeXxJonjEBqduaQVlXuO3/UAffs2MSyBs=
当我在servlet中收到参数时参数发生变化,我无法正确解码并得到我的结果。根据我的研究,我发现'%'符号使我的代码将以下两个字符解释为ASCII。所以:2F变成'/'而2B变成'+'等。我怎么能阻止它并让它只是将'token'作为常规字符串变量传递而不改变它?
答案 0 :(得分:0)
不要将参数放在动作网址中,而应将其作为隐藏输入传递给表单,如:
<form name="Police" id="Police" action="telKayit" method="post">
<input type="hidden" name="token" value="${param.token}"
...
</form>