Difference between sendLocalRedirect() and SendRedirect()
Sites developed on ATG Framework, sometimes send url appended with ?_requestid. This is happening only when we are using sendLocalRedirect() instead of sendRedirect().If a request results in a redirect to a local page through the method HttpServletResponse.sendLocalRedirect(), the ATG platform treats the redirect request as part of the original request, and maintains any request-scoped objects associated with that request. To implement this, the ATG platform adds an additional query parameter named _requestid to the redirected URL.
Differences -
sendLocalRedirect() - using when user need to redirect on the same site with relative or full path. Also when we need to pass session id with the response.
HttpServletResponse.sendLocalRedirect("./sample/test.jsp",HttpServletResquest)
sendRedirect() - using when user need to redirect to different site with full path.
HttpServletResponse.sendRedirect("www.test.com/sample/test.jsp",HttpServletResquest)
Difference between DynamoHttpServletRequst/Response and HttpServletRequest/Response
Servlet pipeline converts Http request/ response to DymanoHttp request/response
Example to create FormHandler and call from dsp page :
For creating a Form Handler, Component should extends one-
- EmptyFormHandler : will provide the basic map data stracture(after/before Set/Get) and holds the form data.
- GenericFormHandler : will provide the basic error checking operations. (commonly used to create FormHandlers)
- TransactionFromHandler : will provide the transaction management capabilities while processing form inputs.
- All of the above FormHandlers implements DropletFromHandlers.
Creating UserInfoFormHandler component :
- UserInfoFromHandler.properties :
$class=com.profile.UserInfoFromHandler
$scope=request
$scope=request
- UserInfoFromHandler.java :
package com.profile
public class UserInfoFromHandler extends atg.droplet.GenericFormHandler {
public boolean handleTestProfile(DynamoHttpRequest request, DynamoHttpResponse response) throws ServletException, IOException{
logDebug(getUserId());
return checkFormRedirect(getSendSuccessURL(), getSendErrorURL(), request, response);
}
private String userId;
public String getUserId(){return userId;}
public void setUserId(String userId) {this.userId = userId;}
private String sendSuccessURL;
public String getSendSuccessURL() {return sendSuccessURL; }
public void setSendSuccessURL(String sendSuccessURL) {this.sendSuccessURL = sendSuccessURL;}
private String sendErrorURL;
public String getSendErrorURL() {return sendErrorURL; }
public void setSendErrorURL(String sendErrorURL) {this.sendErrorURL = sendErrorURL;}
}
public class UserInfoFromHandler extends atg.droplet.GenericFormHandler {
public boolean handleTestProfile(DynamoHttpRequest request, DynamoHttpResponse response) throws ServletException, IOException{
logDebug(getUserId());
return checkFormRedirect(getSendSuccessURL(), getSendErrorURL(), request, response);
}
private String userId;
public String getUserId(){return userId;}
public void setUserId(String userId) {this.userId = userId;}
private String sendSuccessURL;
public String getSendSuccessURL() {return sendSuccessURL; }
public void setSendSuccessURL(String sendSuccessURL) {this.sendSuccessURL = sendSuccessURL;}
private String sendErrorURL;
public String getSendErrorURL() {return sendErrorURL; }
public void setSendErrorURL(String sendErrorURL) {this.sendErrorURL = sendErrorURL;}
}
- DSP Page :
<dsp:page>
<dsp:import bean="/com/profile/UserInfoFromHandler"/>
<dsp:form name="subscriptionForm" action="Success.jsp">
<dsp:form name="subscriptionForm" action="Success.jsp">
Email ID: <dsp:input type="text" id="userId" bean="UserInfoFromHandler.userId" />
<dsp:input type="submit" bean="UserInfoFromHandler.TestProfile" id="submitForm" value=""/>
<dsp:input type="hidden" bean="UserInfoFromHandler.sendSuccessURL" value="success.jsp" />
<dsp:input type="hidden" bean="UserInfoFromHandler.sendErrorURL" value= "${url}" />
</dsp:form>
</dsp:form>
</dsp:page>