在JSP中不使用HTML表单传递参数

Lyc*_*ana 9 java jsp

我做了一些研究,我发现的大多数示例都使用表单(显然是用户输入)来收集数据,然后通过请求对象传递给另一个JSP页面.

我的问题是:如果没有在HTML <form>标签中设置参数,是否可以在JSP页面之间传递参数?

Kri*_*ris 18

有一些方法可以将信息从一个JSP页面传递到另一个JSP页面.

1.隐藏的价值观.

只需将数据写入"隐藏"类型的表单中的输入字段,例如

<input type="hidden" name="mydata" value="<%=thedata%>">
Run Code Online (Sandbox Code Playgroud)

这样写的数据将在提交相关表格时回发.当用户填写一系列对话框时,这可以是"携带"信息的有用方式,因为所有状态都是用户端,后退和前进按钮将按预期工作.

2. URL写作.

将参数附加到页面上链接中的URL,例如

<a href="another.jsp?mydata=<%=thedata>>Go!</a>
Run Code Online (Sandbox Code Playgroud)

这也保持了客户端的状态,同时不需要提交表单元素.

3.饼干.

应该说明一下.状态仍然是用户端,但现在由cookie处理.由于某些人禁用了cookie,因此在某些方面更加脆弱.如果您不小心,后退和前进按钮也可能会发生意外情况

4.服务器端(会话)

最后,您可以将数据存储在一个JSP上的会话变量中,并在下一个JSP上检索它,例如

session.setAttribute(String key, Object value)
Run Code Online (Sandbox Code Playgroud)

session.getAttribute(String key)
Run Code Online (Sandbox Code Playgroud)

在这里,状态保持服务器端,这有一些好处(用户可以浏览并返回而不会丢失他的位置,但往往使浏览器中的后退和前进按钮有点不可靠,除非你小心.此外,值可用于所有页面.

然而,它确实具有以下优点:信息永远不会被发送到客户端,因此更安全且更防篡改.


Mat*_*hen 7

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

这就是你问的问题吗?