在servlet url中放入一个参数

时间:2013-02-04 10:57:06

标签: java jsp servlets parameter-passing

我有这种代码的和平:

<%
ArrayList<Utente> lista=null;
try{
    lista= (ArrayList<Utente>)request.getAttribute("lista");
}catch(Exception e){
    e.printStackTrace();
}
    if(lista!=null){                    
for(int i=0;i<lista.size();i++){                                                                                        out.print("<tr>");
                        out.print("<td>"+lista.get(i).getNome()+"</td>");
                        out.print("<td>"+lista.get(i).getCognome()+"</td>");
                        out.print("<td>"+lista.get(i).getPosizione()+"</td>");
                        out.print("<td>"+lista.get(i).getTelefono()+"</td>");
                        out.print("<td><img src='imm/view.png'>&nbsp"+
                                "<a href='' id='"+lista.get(i).getIdUtente()+"' class='view'>Vedi</a>&nbsp &nbsp" 
                                +"<img src='imm/mod.png'>&nbsp"+
                                "<a href='InfoUtente&id="+lista.get(i).getIdUtente()+"' id='"+lista.get(i).getIdUtente()+"' class='mod'>Modifica   </a>&nbsp &nbsp"+
                                 "<img src='imm/del.png'>&nbsp"+
                                "<a href='' id='"+lista.get(i).getIdUtente()+"' class='del' name='"+lista.get(i).getNome()+" "+lista.get(i).getCognome()+"'>Elimina   </a></td>");
                         }

                }
                        %>

我现在要做的是当我点击特定索引上的链接Modifica时调用servlet InfoUtente。所以我想将index参数传递给servlet。 我该怎么办?

3 个答案:

答案 0 :(得分:1)

就像您一样,除了查询字符串必须以?而不是&开头:

<a href='InfoUtente?id="+lista.get(i).getIdUtente()
                   ^-- here

&用于分隔查询字符串中的参数。它必须是HTML转义的。因此,如果您要传递第二个参数,则需要生成以下URL:

<a href='InfoUtente?id=" + theId + "&amp;foo=bar"

请注意,从Java代码生成HTML不是一个好习惯。它导致难以阅读,无法维护的代码。应避免使用Scriptlet。您应该使用JSTL标记和JSP EL:

<c:forEach var="utente" items="${lista}">
    <tr>
        <td><c:out value="${utente.nome}"/></td>
        <td><c:out value="${utente.cognome}"/></td>
        <td><c:out value="${utente.posizione}"/></td>
        <td><c:out value="${utente.telefono}"/></td>
        <td>
           <img src="imm/view.png"/>&nbsp;
           <a href="" id="${utente.idUtente}" class="view">Vedi</a>
           &nbsp;&nbsp;
           <img src="imm/mod.png"/>&nbsp;
           <a href="<c:url value="InfoUtente">
                        <c:param name="id" value="${utente.idUtente}"/>
                    </c:url>" class="mod">Modifica</a>
           &nbsp;&nbsp;
           <img src="imm/del.png"/>&nbsp;
           <a href="" class="del" name="<c:out value="${utente.nome} ${utente.cognome}"/>">Elimina</a>
        </td>
    </tr>
</c:forEach>

请注意结构的可读性。另请注意

  • 它是&nbsp;而不是&nbsp
  • 您不能拥有多个具有相同ID的元素。这是无效的。
  • <c:out>允许转义特殊字符。因此,如果任何属性包含<>&,则不会导致无效的HTML(或更糟糕的是:导致XSS攻击)
  • 使用<c:url>允许使用绝对路径而不是相对路径而不对上下文路径进行硬编码,并对参数进行URL编码。

答案 1 :(得分:0)

编写一个java脚本函数并调用特定字段更改的onClick(或onSubmit等)函数。在该函数内部构建一个类似“page.html?param = value”的字符串。并将页面重定向到那里。

答案 2 :(得分:0)

我建议你用jsp执行此操作,如下所示,并提到你必须提出的问题?开始查询字符串而不是&amp;

检查以下代码

<%
ArrayList<Utente> lista=null;
try{
lista= (ArrayList<Utente>)request.getAttribute("lista");
}catch(Exception e){
e.printStackTrace();
}
if(lista!=null){                    
for(Utente utente : lista){%>                                                                                               
<tr>
    <td><%=utente.getName()%></td>
    <td><%=utente.getCognome()%></td>
    <td><%=utente.getPosizione()%></td>
    <td><%=utente.getTelefono()%></td>
    <td>
          <img src='imm/view.png'>&nbsp
          <a href='' id='<%=utente.getIdUtente()%>' class='view'>Vedi</a>&nbsp &nbsp
           <img src='imm/mod.png'>&nbsp</a>
           <a href='InfoUtente?id=<%=utente.getIdUtente()%>' id='<%=utente.getIdUtente()%>' class='mod'>Modifica </a>&nbsp &nbsp
        <img src='imm/del.png'>&nbsp</a>  <!-- Here you have to put ? instead of & -->
         <a href='' id='<%=utente.getIdUtente()%>' class='del' name='<%=utente.getName()%>'>Elimina</a></td>
</tr>
<%}
}%>