Url servlet doGet() 的参数
Url parameter to servlet doGet()
我正在开发我的第一个网络应用程序。我正在发送带有 url 的电子邮件:
http://localhost:8080/HotelP/requeteSuccesO.jsp?hotelId=hampton&city=Montreal
单击 link 时,requeteSuccesO.jsp 显示 hotelId 和城市参数:
out.println("<b>Hotel:</b> "+request.getParameter("hotelId")+"</br>");
out.println("<b>City:</b> "+request.getParameter("city")+"</br>");
然后用户可以通过点击一个按钮来接受:
<form method="get" action="acceptOffer">
<input type="submit" value="Accept" class="sanslabel">
acceptOffer 映射到一个 servlet DecisionPage.java,通过单击该按钮,它会调用 doGet() 方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("in do get DecisionPage, hotelId is "+request.getParameter("hotelId"));
this.getServletContext().getRequestDispatcher( VUE_PAIEMENT ).forward( request, response );
}
doGet 函数接收的参数 hotelId 为空,但我希望它是在 url 中找到的值(在我们的例子中,"hampton")
谁能告诉我为什么我得到的是 null 而不是 "hampton"?
您必须在表单本身中包含这些参数,因为参数的范围是请求范围。像这样
<form method="get" action="acceptOffer">
<input type="text" name="hotelId" value=assign the value from request here/>
<input type="submit" value="Accept" class="sanslabel">
</form>
当您制作表单并将该表单提交给某个操作时,它只会为您在表单中定义的 fields
创建请求参数。
因此,当您 运行 提到 URL 的应用程序时,它将包含这些参数并且对您的 jsp
可用,但如果您不将它们包含在您的当您提交表单时,servlet
将无法使用该表单。
因此,您需要将这些参数包含到某些 hidden
字段中,否则不会向用户显示它们。
示例:
<form method="get" action="acceptOffer">
<input type="hidden" name="hotelId" value="<%= request.getParameter(\"hotelId\")" %> /> <---- this field will create a new parameter with name as hotelId
<input type="hidden" name="city" value="<%= request.getParameter(\"city\") %>" />
<input type="submit" value="Accept" class="sanslabel">
</form>
所以,现在我们创建了一个新字段 hotelId
和 city
,它们将被发送到您的 servlet acceptOffer
,然后您就可以使用请求参数访问它们如下:
request.getParameter("hotelId")
我正在开发我的第一个网络应用程序。我正在发送带有 url 的电子邮件:
http://localhost:8080/HotelP/requeteSuccesO.jsp?hotelId=hampton&city=Montreal
单击 link 时,requeteSuccesO.jsp 显示 hotelId 和城市参数:
out.println("<b>Hotel:</b> "+request.getParameter("hotelId")+"</br>");
out.println("<b>City:</b> "+request.getParameter("city")+"</br>");
然后用户可以通过点击一个按钮来接受:
<form method="get" action="acceptOffer">
<input type="submit" value="Accept" class="sanslabel">
acceptOffer 映射到一个 servlet DecisionPage.java,通过单击该按钮,它会调用 doGet() 方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("in do get DecisionPage, hotelId is "+request.getParameter("hotelId"));
this.getServletContext().getRequestDispatcher( VUE_PAIEMENT ).forward( request, response );
}
doGet 函数接收的参数 hotelId 为空,但我希望它是在 url 中找到的值(在我们的例子中,"hampton")
谁能告诉我为什么我得到的是 null 而不是 "hampton"?
您必须在表单本身中包含这些参数,因为参数的范围是请求范围。像这样
<form method="get" action="acceptOffer">
<input type="text" name="hotelId" value=assign the value from request here/>
<input type="submit" value="Accept" class="sanslabel">
</form>
当您制作表单并将该表单提交给某个操作时,它只会为您在表单中定义的 fields
创建请求参数。
因此,当您 运行 提到 URL 的应用程序时,它将包含这些参数并且对您的 jsp
可用,但如果您不将它们包含在您的当您提交表单时,servlet
将无法使用该表单。
因此,您需要将这些参数包含到某些 hidden
字段中,否则不会向用户显示它们。
示例:
<form method="get" action="acceptOffer">
<input type="hidden" name="hotelId" value="<%= request.getParameter(\"hotelId\")" %> /> <---- this field will create a new parameter with name as hotelId
<input type="hidden" name="city" value="<%= request.getParameter(\"city\") %>" />
<input type="submit" value="Accept" class="sanslabel">
</form>
所以,现在我们创建了一个新字段 hotelId
和 city
,它们将被发送到您的 servlet acceptOffer
,然后您就可以使用请求参数访问它们如下:
request.getParameter("hotelId")