This week's book giveaway is in the Agile forum.
We're giving away four copies of The Software Craftsman and have Sandro Mancuso on-line!
See this thread for details.
The moose likes Web Component Certification (SCWCD/OCPJWCD) and the fly likes getSession(false) at first request Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of The Software Craftsman this week in the Agile forum!
JavaRanch » Java Forums » Certification » Web Component Certification (SCWCD/OCPJWCD)
Bookmark "getSession(false) at first request" Watch "getSession(false) at first request" New topic

getSession(false) at first request

Sundar Murthi
Ranch Hand

Joined: Mar 05, 2004
Posts: 209

this qn is from enthuwhere sample mock i am little bit confused with the answer given them what will be the answer for this qn?

Consider the following JSP code (See exhibit).

What will it print for the very first request to this page as well as the web application that contains this page?



Select 1 correct option.

1) It will print Hello!

2) It will print Hello and will set the count attribute in the session.

3) It will throw a NullPointerException at request time.

4) It will not compile.

the answer given is option 2
Pabak Nanda

Joined: Nov 04, 2004
Posts: 24
I think the second getSession method should take "tru" as the argument. Otherwise this will throw NullPointerException.

The code could be like

<% Integer count = (Integer) request.getSession(false).getAttribute("count");
if(count != null )
request.getSession(true).setAttribute("count", new Integer(1));%>

Gabriel Forro
Ranch Hand

Joined: Apr 16, 2004
Posts: 59

the option 2 is correct.
The explanation is as follows:

1. It is a JSP file

2. If there is no <%@ page session="false" %> explicitly, then session is set to true by default. It means, that the session object is created before the very first line of the JSP page (in the jsp's servlet class definition).

Ritu varada
Ranch Hand

Joined: Sep 08, 2004
Posts: 117
This question befuddles me too...I tried it out in tomcat and it printed Hello the first time. So, I then printed the session attribute count. So, it prints Hello 1 ! everytime. Does it mean that
1. there already is a session existing since request.getSession(false) doesn't create a session if there isn't one already ?
2. ok, assuming there is a session already, the value of getAttribute would be null becuase otherwise, it would come to the out.println statement. But its going to the setting the attribute else.
But aren't we typecasting a null value to an Integer. How is that not throwing an exception ?

Hopefully, I have made my doubts clear...Could someone help us out ? Thanks.

saager mhatre
Ranch Hand

Joined: Dec 20, 2000
Posts: 61
Assertion (1) is right; since the 'session' attribute of the 'page' directive defaults to 'true', the implicit variable session was initialized with a new ly created session.

WRT the NullPointerException, if you're talking about the following statement...

... that's an assignment, not a downcast.
Nitish Bahadur
Ranch Hand

Joined: Aug 25, 2003
Posts: 118
Saager, It is very much a cast.(Yes there is assignment too) I think Ritu meant ClassCastException.

Ritu, casts are allowed from null to any class, interface, or array type. Basically, the verifier checks if myInt can be assigned 'null'. Sure, all objects can. Hence there is no ClassCastException.
subject: getSession(false) at first request