java - 如何借助Session从Servlet通过Bean向JSP页面传递参数?

标签 java jsp session servlets javabeans

如下所述,我对代码进行了更改,如下例所示,但它在 JSP 中不显示名字和姓氏:

Servlet 代码:

//....
HttpSession session = request.getSession();
Person person = (Person) session.getAttribute("person");
if (person == null) {
    person = new Person();                      
}
person.setNewId(newId);
person.setFirstName(firstName);
person.setLastName(lastName);
session.setAttribute("person", person);

RequestDispatcher rd = request.getRequestDispatcher("jsp Address");
rd.forward(request, response);

个人 Bean 代码:

private int newId;
private String firstName;
private String lastName;

// Default Constructor
public Person() {}

public Person(int newId, String firstName, String lastName) {
    setNewId(newId);
    setFirstName(firstName);
    setLastName(lastName);
}

//Getter and Setter Methods
public int getNewId() {return newId;}
public void setNewId(int newID) {this.newId = newID;}
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;}

在 JSP 代码中:

<jsp:useBean id="person" type="app.models.Person" scope="session">
    <jsp:getProperty name="person" property="firstName" />
    <jsp:getProperty name="person" property="lastName" />
</jsp:useBean>

此 JSP 页面的输出:无

预期输出:名字姓氏

问题:

1. How can i pass parameters from Servlets to JSP via Bean with help of Session? 
2. Is there a better way to do this code? I am using MVC architecture.

最佳答案

去掉 <jsp:useBean> .使用 type 时属性而不是 class ,它不会检查范围内是否已经有一个实例,它会简单地覆盖 Person您在 servlet 中使用新的、空白的、默认构造的实例创建的实例。

使用“MVC 架构”时,<jsp:useBean>标签没用。删除它并使用通常的 EL访问它:

${person.firstName} ${person.lastName}

或者更好,防止XSS attacks , 使用 JSTL <c:out> .

<c:out value="${person.firstName} ${person.lastName}" />

关于java - 如何借助Session从Servlet通过Bean向JSP页面传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798057/

相关文章:

javascript - 使用ajax发送参数

mysql - 从jsp页面备份数据库

asp.net - 使用 ASP.NET 和 mySQL 解决方案的用户 + session 处理

php - 在 PHP 中使用 Perl CGI session

java - 尝试获取具有包名称的包片段时,IPackage 片段未打开

java - 使用运行时类执行 'adb logcat' 命令

java - Hibernate 过滤器关联

java - #Hibernate 是否有必要在保存包含它的对象之前保存属于复合键的每个对象?

java - Struts 2.s :property. 如何获取名称作为参数传递给jsp的变量的值?

php - session 在 PHP 中突然被销毁