O'Reilly logo

Head First Servlets and JSP, 2nd Edition by Bert Bates, Bryan Basham, Kathy Sierra

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Scope implicit objects can save you

If all you need is to print the name of a person, and you really don’t care what scope the person is in (or, you do care, but you know there’s only one person out of all four scopes), you just use:

${person.name}
image with no caption

Or, if you’re worried about a potential naming conflict, you can be explicit about which person you want:

${requestScope.person.name}

But is there another reason you might have to preface the attribute with the implicit scope object? Other than to control...scoping?

Think about this scenario: if you have a name that’s not in quotes in brackets [ ], that means it MUST adhere to Java naming rules, right? Here, we’re OK, because person is a perfectly legal Java variable name. But that’s because somewhere, someone said,

request.setAttribute("person", p);

But an attribute name is a String!

Strings don’t follow Java variable name rules!

That means someone could say:

request.setAttribute("foo.person", p);

And then you’d be in trouble, because THIS won’t work:

image with no caption

But you’ll be so thankful for scope objects, because using a scope object lets you switch to the [ ] operator, that can take String names that don’t conform to Java naming rules.

image with no caption

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required