2012-04-24 1 views
6

Chcę przekazać niestandardowy obiekt typu Student z serwletu do strony JSP. Utworzono klasę bean Student. Student zawiera 2 właściwości firstname i lastName.Przekazywanie niestandardowych obiektów z serwletu do JSP

fasoli Student:

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; 
    } 

} 

plik HTML do robienia FirstName i nazwisko od użytkownika:

<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> 

Kodeksu 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> 

Chcę uzyskać obiekt "studencki", uzyskać dostęp do jego atrybutów i zapisać go w zmiennej JSP do dalszego przetwarzania.

Odpowiedz

3

Należy przekazywać atrybuty, aby wywołać zasięg, jeśli nie są wymagane do użycia podczas sesji. W Servlet,

request.setAttribute("student", s); 

W JSP,

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

Sposób setAttribute() na request, session i servletContext będzie już udostępnić go jako JSP/EL zmiennej o nazwie atrybutu.

W danym przypadku, o następującej linii w serwletu,

session.setAttribute("student", s); 

jest ona dostępna w JSP/EL jako ${student}. Tak, właśnie to powinien zrobić:

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

Jeśli chcesz przechowywać go jako kolejną zmienną w JSP, dzięki czemu można używać go wielokrotnie używać 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

To nie jest niezbędne do korzystania request.setAttribute() wysłać dane. można również użyć do tego celu HttpSession. Najpierw musisz ustawić to tak, jak już zrobiłeś.

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

Teraz można je dostać z powrotem w JSP przy użyciu getAttribute()

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

Teraz możesz grać ze swoim uczniem, jak chcesz. (Możesz zaimportować klasę studentowi JSP).

0

miałem ten sam problem, a następnie po szlaku i błędów, mam swoje rozwiązanie jak poniżej -

<% 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>