2013-03-10 120 views
1

我开发了simeple web应用程序。在一个jsp中,我使用getattribute和set属性从preivous servlet文件中获取值。我获得了这些值。但现在我想从目前的jsp到另一个jsp文件的值。使用我使用的getattribute和setattribute,但值应显示为空。从一个jsp获取价值到另一个jsp

firstjsp文件:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
      "http://www.w3.org/TR/html4/loose.dtd"> 
      <%@ page import="javax.servlet.http.*" %> 

      <html> 
      <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
     </head> 
     <body> 
    <form action="payment.jsp" method="POST"> 
     <h1>Confirmation</h1> 
     <% 
       Integer amount=(Integer)request.getAttribute("amt"); 
       String service=(String)request.getAttribute("service"); 
       String month=(String)request.getAttribute("month"); 
       Integer day=(Integer)request.getAttribute("day"); 
        String time=(String)request.getAttribute("time"); 
        String city=(String)request.getAttribute("city"); 
        out.println("<center>"); 
        out.println("<table><tr>"); 
        out.println("<td><h2>Service:"+service+"</td></tr>"); 
        out.println("<tr><td><h2>Month:"+month+"</td></tr>"); 
        out.println("<tr><td><h2>Date:"+day+"</td></tr>"); 
        out.println("<tr><td><h2>Time:"+time+"</td></tr>"); 
        out.println("<tr><td><h2>City:"+city+"</td></tr>"); 
        out.println("<tr><td><h2>Total Amount:Rs."+amount+"</td></tr>");      
        out.println("</center>"); 
        request.setAttribute("amt",amount); 







     %> 


     <center> 
      <input type="submit" value="Confirm"></input> 
     </center> 

    </form> 
     </body> 
     </html> 

payment.jsp:

  <html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <h2>Select bank</h2> 
    <%!Integer money;%> 
    <% 
    if(request.getAttribute("amt")!=null) 
     { 
    money=(Integer) request.getAttribute("amt"); 
    out.println(""+money); 
    } 
    %> 
     </body> 
     </html> 

回答

1

设定您想要在payment.jsp如下访问HTML隐藏控制的任何值: -

<form action="payment.jsp" method="POST"> 
    <input type="hidden" name="amt" value="<%= amount%>" /> 
</form> 

请求JSP中的对象只跨越一个HTTP请求。因此,当您将请求转发给第一个JSP文件时,这是一个请求。但是当你提交表单和payment.jsp加载时,请求对象被清除,因为它是一个到服务器的新HTTP请求。

1

您可以使用session而不是request隐式对象。

<html> 
       <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
      </head> 
      <body> 
     <form action="payment.jsp" method="POST"> 
      <h1>Confirmation</h1> 
      <% 
        Integer amount=(Integer)request.getAttribute("amt"); 
        String service=(String)request.getAttribute("service"); 
        String month=(String)request.getAttribute("month"); 
        Integer day=(Integer)request.getAttribute("day"); 
         String time=(String)request.getAttribute("time"); 
         String city=(String)request.getAttribute("city"); 
         out.println("<center>"); 
         out.println("<table><tr>"); 
         out.println("<td><h2>Service:"+service+"</td></tr>"); 
         out.println("<tr><td><h2>Month:"+month+"</td></tr>"); 
         out.println("<tr><td><h2>Date:"+day+"</td></tr>"); 
         out.println("<tr><td><h2>Time:"+time+"</td></tr>"); 
         out.println("<tr><td><h2>City:"+city+"</td></tr>"); 
         out.println("<tr><td><h2>Total Amount:Rs."+amount+"</td></tr>");      
         out.println("</center>"); 
         session.setAttribute("amt",amount);//Changed to session 







      %> 


      <center> 
       <input type="submit" value="Confirm"></input> 
      </center> 

     </form> 
      </body> 
      </html> 

payment.jsp:为了访问您的第一个JSP设置的值

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <h2>Select bank</h2> 
    <%!Integer money;%> 
    <% 
    if(session.getAttribute("amt")!=null)//changed to session 
     { 
    money=(Integer) session.getAttribute("amt");//changed to session 
    out.println(""+money); 
    session.removeAttribute("amt"); 
    } 
    %> 
     </body> 
     </html> 
0

,你必须更好地把以这种方式使用会话的值。 request.getSeession.setAttribute("amount",amount); 然后在第二个JSP访问它像这样

<form> 
<input type="hidden" value="<%=session.getAttribute("amount")%>"/> 
<form> 

我希望它解决您的问题