2012-04-24 3 views
6

서블릿에서 JSP로 Student 유형의 맞춤 객체를 전달하려고합니다. 학생용 빈 클래스를 만들었습니다. 학생은 firstname과 lastName이라는 2 개의 속성을 포함합니다.서블릿에서 JSP로 사용자 정의 객체 전달

학생 콩 :

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

서블릿 코드 :

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> 
사용자로부터 이름 및 성을내어

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

} 

HTML 파일

'student'객체를 가져 와서 속성에 액세스하고 추가 처리를 위해 JSP 변수에 저장하려고합니다.

답변

3

세션 전체에서 사용하지 않아도되는 경우 요청 범위에 특성을 전달해야합니다. request, sessionservletContextsetAttribute() 방법은 이미 속성 이름으로 JSP/EL 변수로 사용할 수 있도록합니다

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

서블릿에서 , JSP에서

request.setAttribute("student", s); 

. 서블릿에서 다음 줄을 특정 경우

,

session.setAttribute("student", s); 

${student}로 JSP/EL에서 사용할 수 있습니다. 그래서, 바로이 수행해야합니다

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

을 당신이 그것을 여러 번 재사용 할 수 있도록, JSP의 또 다른 변수로 저장 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

이 데이터를 전송()request.setAttribute를 사용할 필요는 없다. HttpSession도 사용할 수 있습니다. 먼저 이미 설정 한대로 설정해야합니다.

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

지금 당신은 당신이 원하는대로

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

지금 당신이 당신의 학생 재생할 수 있습니다()의 getAttribute를 사용하여 JSP에서 그것을 다시 얻을 수 있습니다. (당신은 JSP로 학생 클래스를 가져올 수 있습니다.)

0

그때 흔적과 오류가 발생한 후 같은 문제가 없었다, 나는 다음과 같이 자사의 솔루션을 가지고 -

<% 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> 
관련 문제