如何通过servlet传递get请求

How to pass get request through servlet

如果我在编辑时创建一个按钮表单,它会给我空指针。另一方面,如果我使用超链接,则完全没有问题。但是我怎样才能正确传递值呢?我要传递的是 action=edit

public class WaterController extends HttpServlet {
...
    private static final String LIST_PIPES="WEB-INF/jsp/listPipess.jsp";
    private static final String INSERT_EDIT = "WEB-INF/jsp/pipe.jsp";
    private static final String EDIT_MODIFY = "WEB-INF/jsp/edit.jsp";
    private static final String DELETE = "WEB-INF/jsp/delete.jsp";
    private PipeD pipeD;
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String forward = null;
String action=request.getParameter("action");
if(action.equals("list")){
request.setAttribute("pipes", pipeD.getAllPipes());
forward = LIST_PIPES;
} else if(action.equals("insert")) {
forward=INSERT_EDIT;
} else if(action.equals("edit")) {
request.setAttribute("pipeId", request.getParameter("pipeId"));
request.setAttribute("pipeSerial", request.getParameter("pipeSerial"));
request.setAttribute("pipeType", request.getParameter("pipeType"));
request.setAttribute("pipePrice", request.getParameter("pipePrice"));
request.setAttribute("dateOrdered", request.getParameter("dateOrdered"));
forward=EDIT_MODIFY; 
} else if(action.equals("delete")) {...}
RequestDispatcher rd = request.getRequestDispatcher(forward);
rd.forward(request, response);
}

-------------------------------- 在JSP(edit.jsp) ----------------

...
<form action="BookController?action=edit&id=${p.pipeId}&price=${p.pipePrice}" method="post">
<br/> Pipe Id: [READ]<input type="text" name="pipeId"  value='<c:out value="${p.pipeId}"/>' readonly="readonly"/><c:out value="${p.pipeId}"/>
<br/> Pipe Serial: [READ]<input type="text" name="pipeSerial"  value='<c:out value="${p.pipeSerial}"/>' readonly="readonly"/><c:out value="${p.pipeSerial}"/> 
<br/> Pipe Type: [READ]<input type="text" name="pipeType"  value='<c:out value="${p.pipetype}"/>' readonly="readonly"/><c:out value="${p.bookAuthor}"/>
<br/> Pipe Type: <input type="text" name="pipeType"  value='<c:out value="${p.pipeType}"/>' />
<br/> Date Ordered (mm/dd/yyyy) [READ]: <input type="text" name="dateOrdered"  value='<fmt:formatDate value="${p.dateOrdered}" pattern="MM/dd/yyyy"/>'readonly="readonly"/>
<br/><input type="submit" value="update"/><fmt:formatDate value="${p.dateOrdered}" pattern="MM/dd/yyyy"/>
</form>
...

--------------------listPipe.jsp------

<td><form action="BookController?action=edit"><input type="submit" value="Edit"></form></td>  

这一行是我要重定向到编辑 url 的地方。 (单击时立即为空指针)

我得到的错误是 java.lang.NullPointerException 在 "if(action.equals("list")){"

表单提交时如果method是GET类型,则请求参数可能不会传递到服务器端。

将方法类型更改为 POST 或使用 form 标记内的隐藏字段,如下所示将参数传递给服务器端

<form action="BookController">
<input type="hidden" name="action" value="edit">
<input type="submit" value="Edit">
</form>