2016-09-25 160 views
0

我想將數據從一個servlet傳遞到另一個servlet,但是當我從另一個servlet中獲取數據時,它將返回null。從另一個servlet發送的Servlet中獲取數據

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 

}}

+0

測試這個時你打的網址是什麼? – Ivan

+0

@Ivan http:// localhost:8082/CRUDServelt/EditServlet?id2 –

+0

request.getParameter(「id」)中的參數名稱應該與在URL中傳遞的參數名稱相同 – Jabir

回答

0

你錯過了在鏈接等號。你的代碼生成的URL EditServlet?id1,所以發出的參數將是id1沒有價值,當你想EditServlet?id=1所以你會得到一個參數id與值1

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

應該

<a href='EditServlet?id="+e.getId()+"'>edit</a>(注意:額外'也被刪除)

同樣的情況也適用於刪除鏈接。

找到像這樣的參數問題的最簡單方法是使用瀏覽器的開發人員工具來查看瀏覽器實際發送和接收的內容。或者,如果服務器是從IDE啓動的,則應該有方法查看每個請求的詳細信息(例如NetBeans中的HTTP Server Monitor)。

+0

Thanx很多。它解決了我的問題 –

相關問題