繁体   English   中英

从另一个Servlet发送的Servlet中获取数据

[英]fetch data from servlet sent from another servlet

我试图将数据从一个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

}}

您在链接中缺少等号。 您的代码正在生成URL EditServlet?id1 ,因此,当您需要EditServlet?id=1时,发送的参数将是id1 ,没有值,因此您将获得值为1的参数id

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

应该

<a href='EditServlet?id="+e.getId()+"'>edit</a> (请注意,额外的'也已删除)

删除链接也是如此。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM