Supongamos que se han creado algunos datos en el lado del servidor y ahora para pasar esa información en una página JSP, se necesita el método request.getAttribute() . Esto, de hecho, diferencia los métodos getAttribute() y getParameter() . Este último se utiliza para pasar datos del lado del cliente a un JSP.
Implementación
1) Primero cree datos en el lado del servidor y páselos a un JSP. Aquí se creará una lista de objetos de estudiante en un servlet y se la pasará a un JSP usando setAttribute().
2) A continuación, el JSP recuperará los datos enviados mediante getAttribute().
3) Finalmente, el JSP mostrará los datos recuperados, en forma tabular.
Servlet para crear datos y enviarlos a un JSP: StudentServlet.java
package saagnik; import java.io.*; import java.util.ArrayList; import javax.servlet.*; import javax.servlet.http.*; public class StudentServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet StudentServlet</title>"); out.println("</head>"); out.println("<body>"); // List to hold Student objects ArrayList<Student> std = new ArrayList<Student>(); // Adding members to the list. Here we are // using the parameterized constructor of // class "Student.java" std.add(new Student("Roxy Willard", 22, "B.D.S")); std.add(new Student("Todd Lanz", 22, "B.Tech")); std.add(new Student("Varlene Lade", 21, "B.B.A")); std.add(new Student("Julio Fairley", 22, "B.Tech")); std.add(new Student("Helena Carlow", 24, "M.B.B.S")); // Setting the attribute of the request object // which will be later fetched by a JSP page request.setAttribute("data", std); // Creating a RequestDispatcher object to dispatch // the request the request to another resource RequestDispatcher rd = request.getRequestDispatcher("stdlist.jsp"); // The request will be forwarded to the resource // specified, here the resource is a JSP named, // "stdlist.jsp" rd.forward(request, response); out.println("</body>"); out.println("</html>"); } } /** Following methods are used to handle requests coming from the Http protocol request. Inspects method of HttpMethod type and if the request is a POST, the doPost() method will be called or if it is a GET, the doGet() method will be called. **/ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override public String getServletInfo() { return "Short description"; } }
JSP para recuperar los datos enviados por el servlet «StudentServlet.java» y mostrarlos: stdlist.jsp
<%@page import="saagnik.Student"%> <%@page import="java.util.ArrayList"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Student List</title> </head> <body> <h1>Displaying Student List</h1> <table border ="1" width="500" align="center"> <tr bgcolor="00FF7F"> <th><b>Student Name</b></th> <th><b>Student Age</b></th> <th><b>Course Undertaken</b></th> </tr> <%-- Fetching the attributes of the request object which was previously set by the servlet "StudentServlet.java" --%> <%ArrayList<Student> std = (ArrayList<Student>)request.getAttribute("data"); for(Student s:std){%> <%-- Arranging data in tabular form --%> <tr> <td><%=s.getName()%></td> <td><%=s.getAge()%></td> <td><%=s.getCrs()%></td> </tr> <%}%> </table> <hr/> </body> </html>
La clase Student.java
package saagnik; public class Student { private int age; private String name; private String crs; // Parameterized Constructor to set Student // name, age, course enrolled in. public Student(String n, int a, String c) { this.name = n; this.age = a; this.crs = c; } // Setter Methods to set table data to be // displayed public String getName() { return name; } public int getAge() { return age; } public String getCrs() { return crs; } }
Ejecución de la aplicación
1) Ejecute el servlet “StudentServlet.java”, que pasará los datos de los estudiantes a la página JSP “stdlist.jsp”.
2) La página JSP «stdlist.jsp» recupera los datos y los muestra en forma tabular.
Nota: toda la aplicación ha sido desarrollada y probada en NetBeans IDE 8.1
Salida
que muestra los datos del estudiante: stdlist.jsp
Publicación traducida automáticamente
Artículo escrito por SaagnikAdhikary y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA