在jsp中,请求参数(带有空格的字符串值)仅显示在文本框的第一个空格中

Tho*_*ket 0 jsp

<input type="text" name="designation" value=<%=request.getParameter("designation")%> ></input>
Run Code Online (Sandbox Code Playgroud)

在这个JSP中,我使用window.location.replace()函数通过javascript从另一个JSP页面发送请求参数.

我想在文本框中的这个jsp页面中显示该请求参数.

但它只显示了第一个白色空间的字符串的一部分.剩余的字符串被修剪.

可能是这个问题的原因是什么?

例如,如果指定="软件工程师",那么它只在文本框中显示"软件",而不是""(空格)和"工程师"

Bal*_*usC 5

您需要用引号括住属性值.

<input type="text" name="designation" value="<%=request.getParameter("designation")%>">
Run Code Online (Sandbox Code Playgroud)

否则,该空间将被解释为HTML元素属性分隔符,然后下一个单词将成为另一个HTML元素属性.


具体问题无关,如果您在整个JSP中使用此方法,也是为了重新显示来自DB的用户控制数据,那么您就有了一个XSS攻击漏洞.确保正确地对它们进行HTML转义.另请参见JSP/Servlet Web应用程序中的XSS预防.