如何在一个JSP页面中将数值传递到另一个JSP页面?

15

我有两个jsp页面:search.jspupdate.jsp

当我运行search.jsp时,会从数据库中获取一个值,并将该值存储在名为scard的变量中。现在,我想在另一个jsp页面中使用该变量的值,但我不想使用request.getparameter()

这是我的代码:

<% 
String scard = "";
String id = request.getParameter("id");

try {
    String selectStoredProc = "SELECT * FROM Councel WHERE CouncelRegNo ='"+id+"'";

    PreparedStatement ps = cn.prepareStatement(selectStoredProc);
    ResultSet rs = ps.executeQuery();

    while(rs.next()) {
        scard = rs.getString(23);
    }

    rs.close();
    rs = null;
} catch (Exception e) {
    out.println(e.getLocalizedMessage());
} finally {

}
%>

我该如何实现这个目标?


2
会话属性,出发! - Sotirios Delimanolis
如何解释演示? - user3377703
您可以使用会话(session),或者如果无状态则使用Cookies。 - Bohemian
这些是关键词,请使用它们。 - Sotirios Delimanolis
请查看此链接:https://www.javatpoint.com/session-implicit-object - Shubham Chopra
5个回答

25

使用查询参数

<a href="edit.jsp?userId=${user.id}" />  

使用隐藏变量。

<form method="post" action="update.jsp">  
...  
   <input type="hidden" name="userId" value="${user.id}">  

您可以使用会话对象发送。

   session.setAttribute("userId", userid);

只要您的会话仍然有效,这些值现在将从任何jsp中可用。

   int userid = session.getAttribute("userId"); 

我没有理解第二个选项。 - Blasanka
你如何使用<a>标签发送数据?它只是用于在页面之间移动,对吧?你能帮我解决这个问题吗? - Helsinki Red

8

使用会话

在您的 search.jsp 页面上,使用 session.setAttribute("scard","scard") 将您的 scard 放入会话中。

//第一个变量是您将在下一页中检索的字符串名称,第二个变量是其值,即 scard 值。

在您的下一页中,使用 session.getAttribute("scard") 检索它。

更新

<input type="text" value="<%=session.getAttribute("scard")%>"/>

我该如何在下一页打印这个scard? - user3377703
我该如何打印?你的意思是在下一页上检索它...使用session.getAttribute("scard")。 - Santino 'Sonny' Corleone

7
请使用以下代码将字符串从一个jsp传递到另一个jsp:

A.jsp

   <% String userid="Banda";%>
    <form action="B.jsp" method="post">
    <%
    session.setAttribute("userId", userid);
        %>
        <input type="submit"
                            value="Login">
    </form>

B.jsp

    <%String userid = session.getAttribute("userId").toString(); %>
    Hello<%=userid%>

1

如何从一个JSP页面发送数据到另一个JSP页面?以下是我从上述讨论中筛选出来的最佳答案。

有三种方法可以实现:

  1. 使用请求属性: 将要发送的值设置为请求属性,使用您选择的名称,例如request.setAttribute("send", "valueToSend"),在另一个JSP上使用request.getAttribute("send")检索它;
  2. 使用会话属性: 与上述类似,但使用会话对象而不是请求对象。
  3. 使用应用程序属性: 与1和2相同,但使用应用程序对象代替请求和会话。

0

假设我们想要从名为'show.jsp'的页面传递三个值(u1,u2,u3)到另一个页面,例如'display.jsp' 创建三个隐藏文本框和一个自动点击的按钮(使用JavaScript)。 //代码应写在'show.jsp'中

<body>
<form action="display.jsp" method="post">
 <input type="hidden" name="u1" value="<%=u1%>"/>
 <input type="hidden" name="u2" value="<%=u2%>" />
 <input type="hidden" name="u3" value="<%=u3%>" />
 <button type="hidden" id="qq" value="Login" style="display: none;"></button>
</form>
  <script type="text/javascript">
     document.getElementById("qq").click();
  </script>
</body>

// 需要编写在 'display.jsp' 中的代码

 <% String u1 = request.getParameter("u1").toString();
    String u2 = request.getParameter("u2").toString();
    String u3 = request.getParameter("u3").toString();
 %>

如果您想在JavaScript中使用Servlet的这些变量,那么只需编写:
<script type="text/javascript">
 var a=<%=u1%>;
</script>

希望能有所帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接