request的getAttribute问题,以例子说话:
在一个名为 User 的 java bean 中有如下语句:
private String name;
public String getName() { //注意这里是大写,语句1
return name + "U";
}
public String getname() { //注意这里是小写,语句2
return name + "L";
}
public String getNAME() { //注意这里是大写,语句3
return name + "E”;
}
public void setName(String name) {
this.name = name;
}
在 servlet 中有如下语句:
User user = new User();
user.setName("a");
request.setAttribute("user", user);
request.setAttribute("age", "1");
request.getSession().setAttribute("user", user);
request.getSession().setAttribute("age", "2");
user.setName("b");
request.getRequestDispatcher("/test.jsp").forward(request, response);
user.setName("c");
在 test.jsp 中有如下语句:
${user.name }
${requestScope.user.name }
${sessionScope.user.name }
${age }
${requestScope.age }
${sessionScope.age }
输出如下:(没有写错,下列结果是正确的)
bU bU bU 1 1 2
如果将java bean 中的语句1注释掉,那么结果将如下所示:
bL bL bL 1 1 2
如果将 java bean 中的语句1和语句2都注释掉,将会报错
这个例子中的关注点有:
1、request.getAttribute 对 java bean 的解释机制
2、引用对象
3、request 与 session 的解释顺序