Servlet输出2个向量,使用JSTL在JSP上显示两个选项。

时间:2015-11-10 14:14:56

标签: jsp vector jstl

我试图使用JSTL在jsp中显示来自servlet的两个向量。它提供了一个错误“服务于/”nameofmyfile“。不知道哪个错误。

我是这样编码的。我的servlet:

    Vector<Mascotas> masco;
Usuario nomu=(Usuario)request.getSession().getAttribute("usuario");

String nomusu=nomu.getUsuario();

try {
    masco=GestorBD.getInstance().cargarAni(nomusu);

    request.setAttribute("losanimales", masco);
    RequestDispatcher rd=request.getRequestDispatcher("pedircita.jsp");
    rd.forward(request, response);

} catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}



Vector<Veterinario> vet;

try {
    vet=GestorBD.getInstance().cargarVet();
    request.getSession().setAttribute("los veterinarios",vet);
    //response.sendRedirect("pedircita.jsp");
    RequestDispatcher rd=request.getRequestDispatcher("pedircita.jsp");
    rd.forward(request, response);
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}



}

}

这是我的GestorBD - 数据库

    //To charge beans Veterinarios and Mascotas

public Vector<Veterinario> cargarVet() throws SQLException, ClassNotFoundException {

    Vector<Veterinario> vector= new Vector<Veterinario>();
    Veterinario v=null;

    establecerConexion();

    String sql="SELECT id_vete,nombre_vet,apellidos_vet from veterinarios";
    PreparedStatement pst=conn.prepareStatement(sql);
    ResultSet rs=pst.executeQuery();

    if(rs.next()){

     v=new Veterinario();

     v.setId_vete(rs.getInt("id_vete"));
     v.setNombre_vet(rs.getString("nombre_vet"));
     v.setApellidos_vet(rs.getString("apellidos_vet"));

    vector.add(v);

    }

    cerrarConexion();
    return vector;
}


public Vector<Mascotas> cargarAni(String nomusu) throws SQLException, ClassNotFoundException {

    Vector<Mascotas> vector=new Vector<Mascotas>();
    Mascotas a=new Mascotas();

    establecerConexion();

    String sql="SELECT id_ani,nombre_ani FROM mascotas WHERE nombre_prop=?";

    PreparedStatement pst=conn.prepareStatement(sql);
    ResultSet rs=pst.executeQuery();

    if(rs.next()){

        a= new Mascotas();
        a.setId_animal(rs.getInt("id_ani"));
        a.setNombre_ani(rs.getString("nombre_ani"));

        vector.add(a);


    }
        cerrarConexion();
        return vector;
    }

最后我的“pedircita.jsp”:

    <article>

                <h2>FORMULARIO DE PETICION DE CITAS</h2>


            <form name="formupedircita" id="formupedircita" action="ServletPedirCita" method="post">
    <label>Nombre_propietario :</label><input type="text" name="prop" placeholder="Nombre_propietario" required><br/>
    <label>Nombre_mascota  :</label><select multiple="multiple" name="ani">
                            <c:forEach var="element" items="${losanimales}">
                            <option value="${ element.id_animal}">${element.nombre_ani}</option>
                            </c:forEach>
                            </select>


    <label>Introduzca la fecha de la cita  que desea :*</label><input type="text" name="fecha_cita" value="00-00-2015" required><br/>
    <label>Introduzca hora y minutos:</label><br/>
    Horas
    <select name="hora">

        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
    </select>

    Minutos
    <select name="minutos">
        <option value="1">00:00</option>
        <option value="2">00:30</option>

    </select>


    Introduzca su veterinario:
    <select multiple="multiple" name="veterinario">
        <c:forEach var="element" items="${losveterinarios}">
        <option value="${element.id_vete }">${element.nombre_vet }${element.apellidos.vet }</option>
        </c:forEach>
    </select>

    <input type="submit" name="boton"  class="boton" value="Enviar">

</form>
<a class="boton"id="salir" href="ServletSalir">SALIR</a>
</article>


Could you please give me any suggestion about this matter? Thanks a million

1 个答案:

答案 0 :(得分:0)

Servlet不能有两个RequestDispatcher,所以如果servlet以这种方式编码:

 Vector<Mascotas> masco;
 Vector<Veterinarios> vete;
 Usuario nomu=(Usuario)request.getSession().getAttribute("usuario");

 String nomusu=nomu.getUsuario();

try {
    masco=GestorBD.getInstance().cargarAni(nomusu);
    vete=GestorBD.getInstance().cargarVet();
request.setAttribute("losanimales", masco);
request.setAttribute("losveterinarios",vete);
RequestDispatcher rd=request.getRequestDispatcher("pedircita.jsp");
rd.forward(request, response);

} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

这两个属性(“losanimales”,“losveterinarios”)可以通过de jsp从请求中获得,它们将显示在选择上。

希望对别人有所帮助。