从另一个servlet

时间:2016-09-25 08:34:37

标签: java jsp servlets

我正在尝试将数据从一个servlet传递到另一个servlet但是当我从另一个servlet获取它时它返回null。

ViewServlet.java

 @WebServlet("/ViewServlet")
public class ViewServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    out.println("<a href='index.html'>Add New Employee</a>");
    out.println("<h1>All Employees</h1>");
    List<Employee> emp=EmpDao.getAllEmployees();
    out.print("<table width='50' border='1'>");
    out.print("<tr><th>Id</th><th>Username</th><th>email</th><th>country</th><th>Edit</th><th>Delete</th></tr>");
    for(Employee e:emp){
        System.out.println("in view "+e.getId());
    out.print("<tr><td>"+e.getId()+"</td><td>"+e.getUsername()+"</td><td>"+e.getPassword()+"</td><td>"+e.getEmail()+"</td><td>"+e.getCountry()+"</td><td><a href='EditServlet?id"+e.getId()+"''>edit</a></td><td><a href='DeleteServlet?id"+e.getId()+"'>Delete</a></td></tr>");
    }
    out.println("</table>");
}

在这个类中,我正在尝试将id发送到另一个servlet EditServlet。在for循环中,它打印所有的id,甚至在html中。 但是在EditServlet中它返回null。

EditServlet.java

@WebServlet("/EditServlet")
public class EditServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    String id2=request.getParameter("id");
    System.out.println("id is"+request.getParameter("id"));//Null is getting printed
    int id=Integer.parseInt(id2);
    System.out.println("Inside doGet id is"+id);//NumberFormatException

}}

1 个答案:

答案 0 :(得分:0)

您在链接中错过了一个等号。您的代码正在生成网址EditServlet?id1,因此当您需要id1时,所发送的参数将为EditServlet?id=1而没有任何值,因此您将获得参数id值1。

<a href='EditServlet?id"+e.getId()+"''>edit</a>

应该是

<a href='EditServlet?id="+e.getId()+"'>edit</a> (注意额外&#39;也已删除)

同样适用于删除链接。

查找此类参数问题的最简单方法是使用浏览器的开发人员工具查看浏览器实际发送和接收的内容。或者,如果服务器是从IDE启动的,则应该有一种方法可以查看每个请求的详细信息(例如,NetBeans中的HTTP Server Monitor)。