----- Original Message ----- From: "Steve Raeburn" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Saturday, June 28, 2003 4:17 PM Subject: RE: Sending a Redirect Directly from an Action Class
> > > > -----Original Message----- > > From: Jing Zhou [mailto:[EMAIL PROTECTED] > > Sent: June 28, 2003 10:28 AM > > To: Struts Users Mailing List > > Subject: Re: Sending a Redirect Directly from an Action Class > > > > > > I have the following concerns whenever the redirect is used: > > > > * The statement response.sendRedirect("/somePage.jsp") > > will bind the codes statically to the underlying file system > > structures. So if someone moves the somePage.jsp to > > a different location, the codes are broken. > > Yes, there's nothing gained by hard coding the redirect in the action class > and it's easier and more flexible to use redirect=true on an ActionForward. > > > > > * The JSP page somePage.jsp could not be protected > > by the standard security constraints. So it is recommended > > to use response.sendRedirect("/someAction.do") or > > a Filter, either way that provides security checking. > > Improper use of the redirect could make the security > > constraints over complicated as in an early discussion on > > how we redirect to restricted pages. > > > > This is not true. When you redirect the client issues a new request which is > subject to container managed security. (You can set up a rule to protect > /somePage.jsp as easily as you can /someAction.do. When you *forward* > a request, this happens within the container and does not trigger security > rules. If you means the new redirected request to the page /somePage.jsp is subject to container managed security because a custom action in the page perform the security checking, that is not called container manager security. It is the old Model 1 things. > > > * Use the redirect only when it is really needed. It needs > > extra CPU time and network resources than just forward. > > > > Technically true, because it does create an extra round-trip between client > and server. But the overall effect is negligible. About as much as your user > clicking on a link to go to another page and I think most servers should be > able to handle that ;-) > > > Regarding to the last concern, I have a question: what > > business requirements that need the redirect within > > a web application? Using the redirect across web > > applications or web sites is reasonable as well as when > > we dynamically build hyper links. > > > > A delay at client side? Any more ideas? > > When you forward request the client URL does not change. This can cause > situations where the URL displayed in the browser is inconsistent with > what's displayed on the screen. It's useful to do a redirect at the end of > some requests in order to reconcile the URL with the page that's displayed. > > For example, if my login form submits to /processLogin.do and then forwards > to my home page, the browser URL will still display /processLogin.do. What I > really want is for the browser to display the URL of my home page (say > /index.do). So I issue a redirect, rather than forward to achieve this. > > So what? Well, for one thing, different URLs for the same page can confuse > the user. Secondly, if the action was a long running one or updates the > database and the user refereshes the screen after a forward it could cause > the action to be re-run. I know, you can use tokens to prevent this, but > then you get a situation where the user just wants to refresh the home page > and ends up getting an error message that a form was submitted out of > sequence! It is a good example. I did heard some customers mentioned it somewhere. But displaying *right* URL on the address bar is a more client issue. Has any body tried to use Java scripts to change the URL to a desired string? For me, I just turn off the address bar. Of course, it is not a general solution to it. Any other examples? > > So, sometimes a redirect is the right thing to do, but for maximum > flexibility it should be done using an ActionFoward with redirect set to > true. > > Steve > > > > > Jing > > Netspread Carrier > > http://www.netspread.com > > > > ----- Original Message ----- > > From: "Mike Duffy" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Saturday, June 28, 2003 11:27 AM > > Subject: Sending a Redirect Directly from an Action Class > > > > > > > What are your thoughts on sending a redirect directly from an Action > > > class: > > > > > > response.sendRedirect("/somePage.jsp?"); > > > return null; > > > > > > There is a setRedirect(boolean redirect) in the ActionForward class > > > that could be used for the same purpose (with a few extra lines of > > > code and an entry in the strutsconfig.xml). > > > > > > Thanks. > > > > > > Mike > > > > > > > > > __________________________________ > > > Do you Yahoo!? > > > SBC Yahoo! DSL - Now only $29.95 per month! > > > http://sbc.yahoo.com > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]