2012-04-24 19 views
6

Quiero pasar un objeto personalizado de tipo Estudiante de un servlet a JSP. He creado una clase de frijoles para estudiantes. El alumno contiene 2 propiedades firstname y lastName.Pasar objetos personalizados de servlet a JSP

frijol Estudiante:

import java.io.Serializable; 

public class Student implements Serializable { 

    public Student() { 
    } 

    String firstName; 
    String lastName; 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

} 

archivo HTML para la toma nombre y apellido del usuario:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
    <form id="myForm" method="POST" action="MyFormServlet"> 
     FirstName<input type="text" id="firstName" name="FirstName"/><br> 
     LastName<input type="text" id="lastName" name="LastName"/><br> 
     <button type="submit" />Submit</button> 
    </form> 
</body> 
</html> 

código del servlet:

import javax.servlet.RequestDispatcher; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 



    public class MyFormServlet extends HttpServlet { 

     @Override 
     protected void doPost(HttpServletRequest request, 
       HttpServletResponse response) { 

      Student s = new Student(); 
      s.setFirstName(request.getParameter("FirstName")); 
      s.setLastName(request.getParameter("LastName")); 

      HttpSession session =request.getSession(); 
      session.setAttribute("student", s); 

      try { 
       RequestDispatcher rd = getServletContext().getRequestDispatcher("/myJsp.jsp"); 
       rd.forward(request, response); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

    } 

myJsp.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
    <body> 
     <% 
      // I want to do something like this : 
      //Student student =(Student)session.getAttribute("student"); 
      //String fullName=student.firstName + student.lastName; 
     %>  
     <h1><%=fullName%></h1> 
    </body> 
</html> 

Quiero obtener el objeto 'alumno', acceder a sus atributos y almacenarlo en una variable JSP para su posterior procesamiento.

Respuesta

3

Debe pasar atributos para solicitar alcance si no se requiere para usar durante toda la sesión. En servlet,

request.setAttribute("student", s); 

En JSP,

Student student =(Student) request.getAttribute("student"); 
String fullName = "Default"; 
if(student!=null){ 
fullName=student.firstName +" " + student.lastName; 
} 
10

El método setAttribute() en request, servletContextsession y ya se lo pondrá a disposición como una variable JSP/EL por el nombre del atributo.

En su caso particular, con la línea siguiente en el servlet,

session.setAttribute("student", s); 

está disponible en JSP/EL como ${student}. Así que, esto debería hacer:

<body> 
    <h1>${student.firstName} ${student.lastName}</h1> 
</body> 

Si desea almacenarlo como otra variable en JSP de modo que se puede reutilizar varias veces, utilice JSTL<c:set>.

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
... 
<body> 
    <c:set var="fullName" value="${student.firstName} ${student.lastName}" /> 
    <h1>${fullName}</h1> 
</body> 
1

No es imprescindible el uso de request.setAttribute() para enviar datos. puede usar HttpSession también para eso. Primero debes configurarlo como ya lo hiciste.

HttpSession session =request.getSession(); 
session.setAttribute("student", s); 

Ahora se puede obtener de nuevo en JSP utilizando getAttribute()

Student student =(Student) session.getAttribute("student"); 

Ahora puedes jugar con su hijo como desee. (Es posible que desee importar su clase Estudiante de JSP.)

0

que tenía el mismo problema a continuación, después de prueba y error, tengo su solución de la siguiente manera -

<% Student student = (Student)request.getAttribute("student");%><br> 
<table><br> 
    <tr><td>First Name :</td><td><%=student.getFirstName() %></td></tr><br> 
    <tr><td>Last Name :</td><td><%=student.getLastName() %></td></tr><br> 
</table><br> 
Cuestiones relacionadas