Solved

Servlet argument passing

Posted on 2003-11-12
10
613 Views
Last Modified: 2013-11-24
Hi all. How can I pass arguments between servlets? I read arguments from HTML forms, but I can't find any resources on passing between servlets. E.g. via the url string with the '?' part...

0
Comment
Question by:piou
  • 4
  • 4
  • 2
10 Comments
 
LVL 1

Accepted Solution

by:
arunec earned 75 total points
ID: 9730081
Hi,
You can use :

In your servlet1 :

session.setAttribute("Test1", Test1 );
session.setAttribute("Test2", Test2 );

In your servlet2 :

String l1 = (String)session.getAttribute("Test1");
String l2= (String)session.getAttribute("Test2");

or u can use RequestDispatcher

request.setAttribute("test1", test1);    
   
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher();
dispatcher.forward(request, response);

Regards,
arunec
0
 

Author Comment

by:piou
ID: 9730364
Thanks arunec. I was looking for something more simple, related to the getQueryString() method. Is there any automation implemented? Or should I just build *manually* the URLs so that the contain a tail after the '?', and then process that with a StringTokenizer...?

0
 

Author Comment

by:piou
ID: 9730479
Ok, I think I'm closer. There are these methods:

getQueryString()
getParameterNames()
getParameterValues()

But the API docs are not very clear on their usage. I think the answer lies around these methods, but I cannot find proper resources.

0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 7

Expert Comment

by:grim_toaster
ID: 9730531
If you can avoid it, it is best to leave sessions out of the picture (unless there is one there already).

I would suggest looking into the ServletRequest interface methods setAttribute, getAttribute and getParameter, depending on your needs.  It would also be best to avoid writing your own code to deal with the query string, as there is already code availabel.

After you've set the value required to the request object, you can dispatch to the other servlet as stated by arunec.
0
 

Author Comment

by:piou
ID: 9730708
It doesn't seem to work. Shouldn't I set the ServletResponse instead? But only the request has a setAttribute() method. Doesn't make sense...
0
 
LVL 7

Expert Comment

by:grim_toaster
ID: 9731071
You should be setting the attribute to the ServletRequest.  Ah, one slight problem with Arumec's code, when acquiring the request dispatcher you will need to specify the path of the resource you are trying to access:

request.setAttribute("name", "value");
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/relative/path/servlet");
dispatcher.forward(request, response);

Then in the servlet you dispatch the call to, do:
String value = request.getAttribute("name");
0
 
LVL 1

Expert Comment

by:arunec
ID: 9737128
yaa, i missed the path in RequestDispatcher,thanx grim
0
 
LVL 7

Expert Comment

by:grim_toaster
ID: 9737781
No problem!  Oops, I also missed something in my code!  The request.getAttribute("name"); call returns an Object, this will need to be cast to a String.
0
 

Author Comment

by:piou
ID: 9737895
Thank you guys. I hope grim has no problem for arunec to take the points, being first...
0
 
LVL 7

Expert Comment

by:grim_toaster
ID: 9746392
Nope, none whatsoever!  Sorry it's taken a while to reply!  I lost the link!
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
HTTPSessionBindingListernter not configured in deployment descriptor 2 53
servlet  URL Rewriting 1 36
couple of eclipse 5 36
Java exception bubble up 2 18
An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question