我做了一些研究,我发现的大多数示例都使用表单(显然是用户输入)来收集数据,然后通过请求对象传递给另一个JSP页面.
我的问题是:如果没有在HTML <form>标签中设置参数,是否可以在JSP页面之间传递参数?
Kri*_*ris 18
有一些方法可以将信息从一个JSP页面传递到另一个JSP页面.
只需将数据写入"隐藏"类型的表单中的输入字段,例如
<input type="hidden" name="mydata" value="<%=thedata%>">
Run Code Online (Sandbox Code Playgroud)
这样写的数据将在提交相关表格时回发.当用户填写一系列对话框时,这可以是"携带"信息的有用方式,因为所有状态都是用户端,后退和前进按钮将按预期工作.
将参数附加到页面上链接中的URL,例如
<a href="another.jsp?mydata=<%=thedata>>Go!</a>
Run Code Online (Sandbox Code Playgroud)
这也保持了客户端的状态,同时不需要提交表单元素.
应该说明一下.状态仍然是用户端,但现在由cookie处理.由于某些人禁用了cookie,因此在某些方面更加脆弱.如果您不小心,后退和前进按钮也可能会发生意外情况
最后,您可以将数据存储在一个JSP上的会话变量中,并在下一个JSP上检索它,例如
session.setAttribute(String key, Object value)
Run Code Online (Sandbox Code Playgroud)
和
session.getAttribute(String key)
Run Code Online (Sandbox Code Playgroud)
在这里,状态保持服务器端,这有一些好处(用户可以浏览并返回而不会丢失他的位置,但往往使浏览器中的后退和前进按钮有点不可靠,除非你小心.此外,值可用于所有页面.
然而,它确实具有以下优点:信息永远不会被发送到客户端,因此更安全且更防篡改.
JSP页面无法区分手动构建的GET URL,例如:
<a href="/foo.jsp?bar=baz">Go to the next JSP page</a>,而不是像:
<form method="get" action="/foo.jsp">
<input name="bar" value="baz">
</form>
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,它都可以通过getParameter或访问getParameterValues
这就是你问的问题吗?