Skip to main content
 首页 » 编程设计

jsp之将自定义对象从 servlet 传递到 JSP

2024年02月25日10itcoder

我想将 Student 类型的自定义对象从 servlet 传递到 JSP。 我创建了一个学生 bean 类。 Student 包含 2 个属性firstname 和lastName。

学生 bean :

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 文件:

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

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> 

我想要获取“student”对象,访问其属性并将其存储在 JSP 变量中以供进一步处理。

请您参考如下方法:

setAttribute()方法request , sessionservletContext已经将其作为 JSP 提供。/EL通过属性名称变量。

在您的特定情况下,在 servlet 中使用以下行,

session.setAttribute("student", s); 

它在 JSP/EL 中可用 ${student} 。所以,应该这样做:

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