如何在servlet

时间:2015-10-02 17:53:31

标签: java jsp servlets

我的Jsp页面是ProductList.jsp

        <table id="table">
        <tr id="firstrow"><th>Product Name</th><th>Quantity</th>          <th>Price/unit</th><th>Vendor's Name</th><th>actions</th></tr>
        <tr>
        <c:forEach var="current" items="${sessionScope.productname}" >
        <td><c:out value="${current.productName}"/></td>
        <td><c:out value="${current.quantity}"/></td>
        <td><c:out value="${current.price}"/></td>
        <td><c:out value="${current.vname}"/></td>
        <td><form action="./editdetails" method="post"><input type="submit"    value="Edit">
        <input type="submit" value="Delete"></td>
        </form>
        </tr>
        </c:forEach>

我想从中访问productName,数量,价格和vname。我试图在我的EditProductDetails.java servlet页面中获取这些表数据值。因为我需要在其他jsp页面中获取此值以进一步编辑。 这是我的代码。

 protected void doPost(HttpServletRequest request, HttpServletResponse    response) throws ServletException, IOException {

    //doGet(request, response);
    String productName=request.getParameter("productName");
    int qnty =Integer.parseInt(request.getParameter("quantity"));
    Float prce=Float.parseFloat(request.getParameter("price"));
    String vendorName=request.getParameter("vname");
    String action=request.getParameter("./editdetails");
    if(ShowProducDetailsForEdit.showProductDetails(productName,qnty,prce,vendorName)){
        request.getSession().setAttribute("productname", productName);
        request.getSession().setAttribute("quantity", qnty);
        request.getSession().setAttribute("price",prce);
        request.getSession().setAttribute("vendorName", vendorName);
        RequestDispatcher rd=request.getRequestDispatcher("Edit.jsp");    
        rd.include(request,response);
    }

}

但是我收到了java.lang.NumberFormatException:它显示了

 java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
com.pms.servlets.EditProductDetails.doPost(EditProductDetails.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

: 在beloow行中,request.getParameter(“”)无法识别这些值。

    String productName=request.getParameter("productName");
    int qnty =Integer.parseInt(request.getParameter("quantity"));
    Float prce=Float.parseFloat(request.getParameter("price"));

我的问题是 - 我应该在request.getParameter(“”)中写什么?这样我的错误就不会再发生了。我是Jsp Servlet的初学者。所以我需要帮助来解决这个问题。

我的web.xml文件是

 <servlet>
<servlet-name>mygenser4</servlet-name>
<servlet-class>com.pms.servlets.EditProductDetails</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mygenser4</servlet-name>
<url-pattern>/editdetails</url-pattern>
</servlet-mapping>

1 个答案:

答案 0 :(得分:1)

由于您的<form>只是(注意错位的</td>):

<td><form action="./editdetails" method="post">
  <input type="submit"    value="Edit">
  <input type="submit" value="Delete"></td>
</form>

没有发布参数,这意味着request.getParameter()将为任何和所有名称返回null。

要实际发布值,您需要一些内置<input>属性<button><select><textarea>name=元素 <form>

在您的情况下,那将是<input type="hidden">个元素(错位</td>移动):

<td><form action="editdetails" method="post">
  <input type="submit" name="action" value="Edit">
  <input type="submit" name="action" value="Delete">
  <input type="hidden" name="productName" value="<c:out value="${current.productName}"/>">
  <input type="hidden" name="quantity" value="<c:out value="${current.quantity}"/>">
  <input type="hidden" name="price" value="<c:out value="${current.price}"/>">
  <input type="hidden" name="vname" value="<c:out value="${current.vname}"/>">
</form></td>

另请注意,提交按钮已被命名,因此doPost可以检查"action"参数以查看是否编辑或删除。