//页面A
<jsp:useBean id="mybean" scope="request" class="mybeantest.NameHandler"/>
<jsp:setProperty name="mybean" property="username" value = "<%=request.getParameter("username")%>"/>
<%
if(request.getParameter("username")!=null)
{System.out.println(mybean.getUsername());
request.getRequestDispatcher("responseuser.jsp").forward(request,response);
}
%>
//页面B
<jsp:useBean id="mybean" scope="session" class="mybeantest.NameHandler"/><% System.out.println(mybean.getUsername());%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>hello,<%=mybean.getUsername()%></title>
</head>
<h1>Hello,<jsp:getProperty name = "mybean" property = "username" /></h1>
请注意A页面的scope是request,B页面的scope是session。
先地址栏中输入A页面的地址登陆并通过..?USER=SKA传参,A页面能在控制台打印输出SKA,B页面控制台打印输出为NULL,但是页面跳转到B页面后可以显示SKA。很疑惑,在不同的scope中B页面居然能够得到传来的mybean对象,但是B页面调用 System.out.println(mybean.getUsername(mybean.getUsername()),为什么输出是null,而下面的语句<jsp:getProperty name = "mybean" property = "username" />却能显示出A页面通过地址栏传的参数,B页面中都是相同的mybean对象,为什么控制台打印没结果而页面能显示结果?
此外,当A页面的SCOPE设置为request,b页面设置为session时,一切都能正常显示,但是反过来设置(A页面session,B页面request)A页面打印正常,跳转页面为null,B页面的打印为null