通过url将值从javascript传递到servlet

时间:2014-04-17 09:14:43

标签: javascript servlets

我使用提交按钮使用Javascript为行获取唯一的“ID”,后者应该稍后将此id值传递给名为EditRecord的servlet。当我在表单中包含提交按钮时,按钮值(行的唯一ID)没有被传送到servlet,并且URL中没有值,但是当我在表单外面提交按钮时,我可以看到按钮值但是页面被重定向到空白页面。不知道问题出在哪里。

提前致谢。

这是javascript的代码

<script type="text/javascript">
    function editRecord(id)
    {
        url="EditRecord";
        window.location.href="http://localhost:8080/DbCon/"+url+"?id="+id;
        user_id="?id="+id;

    }
    </script> 

从表中获取记录的代码如下:

<TABLE align="Center" border="1px" width="80%">
    <%Iterator itr;%>
    <%List data=(List) request.getAttribute("UserData");
    for(itr=data.iterator();itr.hasNext();)
    {%>
        <tr>
            <% String s= (String) itr.next(); %>
            <td><%=s %></td>
            <td><%=itr.next() %></td>
            <td><%=itr.next() %></td>
            <td><%=itr.next() %></td>

            <form action="EditRecord" method="post">
            <td><input type="submit" value="Edit" name="edit"  onclick="editRecord(<%=s %>);"> </td>
            </form>

            <td><input type="submit" value="Delete" name="delete" onclick="deleteRecord(<%=s %>);"></td>

    <%} %>
    </tr>

我的servlet代码如下所示

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Connection conn;
    Statement stmt;
    ResultSet res = null;
    String id = null  ;
    String query;
    DatabaseConnection dbconn;


//  protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    try{

        id=request.getParameter(id);
        System.out.println(id);
        dbconn=new DatabaseConnection();
        conn=dbconn.setConnection();
        System.out.println(conn);
        stmt=conn.createStatement();
        System.out.println(stmt);
        query="select * from user_details where User_id="+id;
        res=dbconn.getResultSet(query, conn);
        System.out.println(res);

    }catch (Exception e)
    {

    }finally{
        request.setAttribute("EditData", res);
        RequestDispatcher rd=request.getRequestDispatcher("/editdata.jsp");
        rd.forward(request, response);
        out.close();
    }

1 个答案:

答案 0 :(得分:0)

您应该将包含参数名称的字符串传递给getParameter,并传递id变量,该变量定义为String id = null

您需要"id",而不是id


旁白

你有一个try / catch块,但是你没有对捕获做任何事情。如果您查看了生成的异常,您会发现调试代码要容易得多!

您正在将用户输入直接插入到某些SQL中。这使您容易受sql injection attacks攻击,并且您需要自己protect