我在理解 Head First 的 JavaBean 解释方面的问题

问题描述

我正在阅读 Head First Servlets 和 JSP,其中一个 servlet 有代码:

protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException {
    foo.Person p = new foo.Person("Evan");
    req.setAttribute("person",p);

    RequestDispatcher view = req.getRequestDispatcher("/result.jsp");
    view.forward(req,resp);
}

后来,他们展示了如何使用 <jsp:useBean><jsp:useProperty> 来获取人名:

enter image description here

enter image description here

我想我明白了 - 如果 request 范围内没有属性意味着变量 person 将为空,这也意味着 new将使用默认构造函数创建 Person 对象。底线:我不会有我的属性。幸运的是,我之前在请求的范围内存储了 Person 对象,这意味着它会找到它。

所以我想尝试一下并稍微更改一下代码。我输入的不是 <jsp:useBean id="person" class="foo.Person" scope="request"/>,而是 <jsp:useBean id="person" class="foo.Person" scope="application"/>。请记住,我们的属性之前存储在 request 的范围内,而不是 application,这意味着 person 将为空。令我惊讶的是,它很容易找到了属性并打印了 Evan。这是怎么发生的,当书清楚地表明它将在我在范围属性中写的相同范围内搜索属性

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)