Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Web.xml Question - Map Servlet

 
Jason Stortz
Ranch Hand
Posts: 68
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would like to map a name the user can type into the address bar to take a specific action.
For instance, I have the following servlet tag:
<servlet>
<servlet-name>controller</servlet-name>
<servletclass>
com.qs.pro.controller.ControllerServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
So, when the user types in:
http://mysite/mycontext/controller
it executes the specified controller. Now, is there any way to make ANOTHER mapping that will let the user type in:
http://mysite/mycontext
and have it execute like this:
http://mysite/mycontext/controller?key=value
A.k.a., I want my landing page to be my servlet, but I want it automatically called with a parameter.
Any mapping guru's out there got any tricks for me?
Jason
 
Jason Stortz
Ranch Hand
Posts: 68
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
A simpler way to say this is I want type
http://mysite/mycontext
and see the result of
http://mysite/mycontext/myservlet?someKey=someVal
Thanks guys and gals,
-Jason
 
Jignesh Malavia
Author
Ranch Hand
Posts: 81
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
One of the simplest ways is to create a Filter and map it to <url-pattern>/</url-pattern>. This filter will be invoked when you use http://mysite/mycontext. Within the filter you can
either use a Query String as getRequestDispatcher(/servlet/myServlet?someKey=someValue)
or use an HttpServletRequestWrapper that returns someValue for someKey
and then forward the request to myservlet.
As a bonus, you dont have to hardcode the values someKey=someValue in the filter code. You can pass as many of them as required as init-parameters in web.xml
HTH
-j
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic