This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I'm new to Servlet world and below is my requirement:
"Some informational sites want users to access pages in a certain order. They want to prohibit
users from jumping directly to a bookmarked page later in the sequence because the
data on the pages may have changed since the user bookmarked the page.
Create two pages. The first page should be a normal HTML page with a link to the second
page (which should be a servlet). If a user accesses the first page and then follows the link
to the second page, it works normally. But, if the user directly types in the address of the
second page (or follows a link from a page with a different name than the first page), they
should get sent back to the first page automatically."
My question is how do we know if a user is directly accessing servlet?
Smells like a homework question to me :-)
Given that the first page is static html, the solution has to be purely in the target servlet.
The servlet has to find out where the request is coming from, and then react accordingly.
I think the solution here would involve looking at the request information.
Specifically the request header "referer"
Take a look at the HttpServletRequest class and the getHeader method.
Based on this information you can take the appropriate action.
Joined: Nov 09, 2009
Yes it's homework question as I'm newbie. Thanks for resolving it.
OK, so you don't set it in the page, but in the servlet, this is a server side operation.
You get the session with the construct
and then using getAttribute, setAttribute you can figure out whether some attributes are already in the session, or you can set whatever attribute you need.
So you don't care if somebody goes "directly to the servlet", as you actually control the servlet and what will be rendered or not.