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

标签 jsp session

我想将 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>

关于jsp - 将自定义对象从 servlet 传递到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10296098/

相关文章:

java - 我如何从 jsp 调用 servlet(HTTP 状态 404 – 未找到)

Java:jsp+hibernate 与 eclipse。示例应用程序?

java - 在 URL 中附加特殊字符

php - session /身份验证如何与 nginx/NHPM/PHP-FPM 一起工作?

php - 是否可以在客户端更改 $_SESSION 变量?

node.js - 如何在 socket.io 上访问 session 数据( Node 客户端 session )?

javascript - 是否可以为每个选项卡生成唯一 ID?

java - 在维护期间如何向网络应用程序用户显示 "temporarily out of service"页面?

javascript - 无法通过 Ajax 从文件 PHP 调用检查 session

java - 模型类 bean 没有被填充