bobbit31
asked on
sendRedirect and querystring
currently i'm doing the following:
res.sendRedirect(ServletUt ilities.ur lServlet + "AdminTopicsRequired?updat edTopic=" + whichTopic);
but when it redirects it obviously has the querystring in the location textbox of the browser. I am calling a servlet to update my database and the servlet sends us back to the submit page. the querystring verifies that the transaction took place and the javascript in the page alerts that it in fact did. The problem is that if the user refreshes, that alert will show up even though it didn't do anything.
my question is:
how do i tell the submit page that the transaction was ok without using querystring.
thanks in advance
res.sendRedirect(ServletUt
but when it redirects it obviously has the querystring in the location textbox of the browser. I am calling a servlet to update my database and the servlet sends us back to the submit page. the querystring verifies that the transaction took place and the javascript in the page alerts that it in fact did. The problem is that if the user refreshes, that alert will show up even though it didn't do anything.
my question is:
how do i tell the submit page that the transaction was ok without using querystring.
thanks in advance
ASKER
ok, but i still have the same problem... now i get this in the location text box:
http://localhost/servlet/UpdateTopicsRequired?selTopic=3&selCampus=1&selDept=3&selEmployee=3&cmdAdd=Add+Requirement%28s%29
http://localhost/servlet/UpdateTopicsRequired?selTopic=3&selCampus=1&selDept=3&selEmployee=3&cmdAdd=Add+Requirement%28s%29
ASKER
This is just an idea. Try using cookies. Set the cookie when the User submitsa the page.
When you redirect it back to the SubmitPage check for the cookie. If the cookie is present
display the alert. After doing this remove the cookie. After thet if user refreshes the page also
your code won't find the cookie and it won't disply the alert.
When you redirect it back to the SubmitPage check for the cookie. If the cookie is present
display the alert. After doing this remove the cookie. After thet if user refreshes the page also
your code won't find the cookie and it won't disply the alert.
put all your vars in
selTopic, selCampus, selDept, selEmployee, cmdAdd etc
in a form if you haven't done so and change form method to POST.
It looks like you are using Method=GET
or Method not specified(thenbrowser defaults it to GET)
Then it wan't show query string in Address field.
selTopic, selCampus, selDept, selEmployee, cmdAdd etc
in a form if you haven't done so and change form method to POST.
It looks like you are using Method=GET
or Method not specified(thenbrowser defaults it to GET)
Then it wan't show query string in Address field.
And remember to handle client requests in your servlet's
doPost method.
doPost method.
ASKER
nimiag: sorry, can't be sure everyone will have cookies enabled.
bagi: getting closer!
now i get http://localhost/servlet/UpdateTopicsRequired
which is the servlet that handles the database update
but i want http://localhost/servlet/AdminTopicsRequired
which is the servlet that generates the submit page
in the location box
bagi: getting closer!
now i get http://localhost/servlet/UpdateTopicsRequired
which is the servlet that handles the database update
but i want http://localhost/servlet/AdminTopicsRequired
which is the servlet that generates the submit page
in the location box
ASKER
increasing points since i might as well use the ee-kpro points before i get refilled
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
i have it exactly as you state but in AdminTopicsRequired:
String whichTopic is always null...
String whichTopic is always null...
try to use
this.getServletContext().g etRequestD ispatcher( "AdminTopi csRequired ").forward (request, response);
instead of
res.sendRedirect(ServletUt ilities.ur lServlet + "AdminTopicsRequired");
Or alternativley,
public void doPost(HttpServletRequest request, HttpServletResponse res){
....
String whihTopic = "This Topic";
// attach topic info to request:
res.setAttribute("updatedT opic", whihTopic);
..
// redirect from servlet to AdminTopicsRequired:
res.sendRedirect(ServletUt ilities.ur lServlet + "AdminTopicsRequired");
And, in your AdminTopicsRequired:
...
...
String whichTopic = (String)res.getAttribute(" updatedTop ic");
NOTE:
I attached "updatedTopic" to response this time.
When we use
res.sendRedirect(ServletUt ilities.ur lServlet + "AdminTopicsRequired");
request object is not forwarded to AdminTopicsRequired.
cheers,
this.getServletContext().g
instead of
res.sendRedirect(ServletUt
Or alternativley,
public void doPost(HttpServletRequest request, HttpServletResponse res){
....
String whihTopic = "This Topic";
// attach topic info to request:
res.setAttribute("updatedT
..
// redirect from servlet to AdminTopicsRequired:
res.sendRedirect(ServletUt
And, in your AdminTopicsRequired:
...
...
String whichTopic = (String)res.getAttribute("
NOTE:
I attached "updatedTopic" to response this time.
When we use
res.sendRedirect(ServletUt
request object is not forwarded to AdminTopicsRequired.
cheers,
ASKER
HttpServletResponse does not have the setAttribute method.
i'm gonna go about this another way using session variables.
you get the points anyway, thanks for your help!
i'm gonna go about this another way using session variables.
you get the points anyway, thanks for your help!
thanks for points but,
did you try my first suggestion:
this.getServletContext().g etRequestD ispatcher( "AdminTopi csRequired ").forward (request, response);
?
did you try my first suggestion:
this.getServletContext().g
?
ASKER
yes...
basically the goal i wanted was:
if they do an update, do it, send them back to the submit page and display a message. If they refresh the submit page DO NOT show the message again.
even if i were to do it your way, the refresh would still show the message since the attribute would still be set.
basically the goal i wanted was:
if they do an update, do it, send them back to the submit page and display a message. If they refresh the submit page DO NOT show the message again.
even if i were to do it your way, the refresh would still show the message since the attribute would still be set.
Basically you use request.setAttribute(strBe
So, in your servlet:
public void doPost(HttpServletRequest request, HttpServletResponse response){
....
// create a Bean:
MyBean myBean = new MyBean();
// set properties to be read on JSP page:
myBean.setName("Bob");
...
// attach bean object to request:
request.setAttribute("aBea
..
// redirect from servlet to jsp page called 'myJsp':
this.getServletContext().g
}
And, in you jsp:
...
<jsp:useBean id="aBean" class="MyBean" scope="request" />
...
<td>Client Name: </td>
<td><jsp:getProperty name="aBean" property="name"/>
</td>...
or, altenatively on JSP:
...
<% MyBean myBean = (MyBean)request.getAttribu
...
<td>Client Name: </td>
<td><%=myBean.getName()%>
</td>
...
Code for MyBean class:
class MyBean {
private String name;
public String getName(){
return name;
}
public void setName(String str){
name= str;
}
}
TIP: If you use
public String getName(){
return (name==null)?"":name;
}
method, then it won't print 'null' on browser, when name attribute is null.