问题描述
我正在阅读 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>
来获取人名:
我想我明白了 - 如果 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 (将#修改为@)