如何在不使用会话的情况下将两个或多个值从JSP页面发送到另一个JSP页面或servlet?我是JSP新手,所以建议一下吗?
答案 0 :(得分:3)
我无法理解为什么你不会使用session。但你还有另外一种我知道的方式:
使用get参数:例如,您有第二个jsp文件的链接。在链接末尾添加参数。像这样:mysite.com/second.jsp?param1=value1¶m2=value2
在firstjsp页面中使用表单并使用隐藏输入:
<form action="second.jsp" method="post">
<input type="hidden" name="param1" value="value1" />
<input type="hidden" name="param2" value="value2" />
<input type="submit" name="next" value="Next Page" />
</form>
使用应用程序变量,但如果您的数据是通用的,或使用speciall参数名称来存储您的值。例如,您可以使用:
<%
application.setAttribute("user1_param1","value1");
%>
在您的代码中使用RequestDispatcher。并在请求对象而不是会话中设置您的参数。
<%
request.setAttribute("param1","value1");
RequestDispatcher r=request.getRequestDispatcher("second.jsp");
r.forward(request, response);
%>
请Subtilize您可以在不同的状态下互相使用。例如,您可以在发送任何结果ro用户之前转发请求时使用RequestDispatcher。以及在下一个使用请求的第二页中将当前数据发回给您的其他方法。
答案 1 :(得分:1)
您可以使用标准标记库将所有必需的参数添加到第二个jsp。因此,您基本上导入库,使用所需的链接创建变量,最后创建一种允许用户执行它的方法。它可能是这样的:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<c:url value="anotherPage.jsp" var="url">
<c:param name="param1" value="${'parameter1'}"/>
<c:param name="param2" value="${'parameter2'}"/>
</c:url>
<a href=${url}>this is my link</a>
编辑: 阅读完评论后,我可以告诉你:
快速回答:如果您需要跟踪所有修改,那么您的1.jsp应检查数据库中的数据,否则2.jsp可以使用 c将数据发送到1.jsp :url 或任何其他机制。
长答案:如果您的2.jsp将数据直接存储到数据库中,那么这不是这样做的方法!你可以使用servlet代替。这基本上取决于你想要做的帽子类os页面。我看到这两种情况:
您有一个页面,其中有一个显示多行的表
您有一个页面,允许用户只编辑一条记录
另外,请考虑以下提示:
如果你想从servlet转到jsp,你应该这样做:
RequestDispatcher rdispatcher = request.getRequestDispatcher(“showAllData.jsp”); rdispatcher.forward(请求,响应);
您可以在每个要提交给servlet的html字段中隐藏。在该字段中,您可以使用某种键来标识要执行的operation
。
&lt; form action =“MyServlet”method =“GET”&gt;
&lt; input type =“hidden”name =“operation”value =“READ_ALL”/&gt;
...
&LT; /形式&GT;
和
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String operation = req.getParameter("operation");
if ("READ_ALL") {
readDataFromDb(req, res);
}
if ("INSERT_RECORD") {
insertRecordIntoDb(req, res);
}
}
希望有所帮助
答案 2 :(得分:0)
当您想要在多个请求之间进行通信时,需要会话。它可以存储多个请求的数据,并识别它们来自同一客户端。
如果你直接从一个jsp传递到另一个jsp,那么你甚至不需要像session这样的机制。你可以用简单的request
和response
对象来做到这一点。例如,如果您的表单包含参数username
和password
,则可以使用
String username = request.getParameter("username");
其中request
是HttpServletRequest
个对象。
如果您希望页面转发到包含参数的其他页面,则可以使用调度程序
RequestDispatcher rd = request.getRequestDispatcher("someJSP.jsp");
rd.forward(request,response);
答案 3 :(得分:0)
使用查询字符串或使用 RequestDispatcher 而不使用会话。