Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.

Servlet forward to another JSP page

Avatar

Level 5

Hi I can't seem to get the path to forward to another page within my servlet.

I have one page which makes a call to servlet then that servlet redirects to a different page.

The page I want to be redirected to lives under /content/magazine

I tried this but doesn't work:

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/content/Magazine.html");

5 Replies

Avatar

Level 7
        You are in the servlet so you can use something like this: response.sendRedirect()

Avatar

Administrator

Hi 

"sendRedirect("page2.jsp");" should work for you.

Link:- http://stackoverflow.com/questions/16414999/redirect-to-another-jsp-page-after-submitting-a-form

 

Also for your approach, try forwarding as well like:-

    RequestDispatcher dispatcher = request.getRequestDispatcher("demo.jsp");
    dispatcher.forward(request, response);

I hope this helps.

~kautuk



Kautuk Sahni

Avatar

Level 5

Sorry guys this still didn't work.

My second page(The one I want the servlet to forward to) lives on AEM.

It's path is http://localhost:4502/content/Magazine.html

I also tried putting the jsp under the "content" part of my bundle

under src/main/content/jcr_root and still didn't work

My servlet redirect code is this:

                RequestDispatcher requestDispatcher = request.getRequestDispatcher("Magazine.jsp");
                requestDispatcher.forward(request, response)

 

Think I might be doing this wrong, sorry first time doing a multi-page site on AEM.

 

This is the error the servlet spits out:

0 TIMER_START{Request Processing} 0 COMMENT timer_end format is {<elapsed msec>,<timer name>} <optional message> 0 LOG Method=GET, PathInfo=/bin/pubnetSEARCH 0 TIMER_START{ResourceResolution} 0 TIMER_END{0,ResourceResolution} URI=/bin/pubnetSEARCH resolves to Resource=ServletResource, servlet=com.rogers.aem.servlets.PubnetSearch, path=/bin/pubnetSEARCH 0 LOG Resource Path Info: SlingRequestPathInfo: path='/bin/pubnetSEARCH', selectorString='null', extension='null', suffix='null' 0 TIMER_START{ServletResolution} 0 TIMER_START{resolveServlet(ServletResource, servlet=com.rogers.aem.servlets.PubnetSearch, path=/bin/pubnetSEARCH)} 0 TIMER_END{0,resolveServlet(ServletResource, servlet=com.rogers.aem.servlets.PubnetSearch, path=/bin/pubnetSEARCH)} Using servlet com.rogers.aem.servlets.PubnetSearch 0 TIMER_END{0,ServletResolution} URI=/bin/pubnetSEARCH handled by Servlet=com.rogers.aem.servlets.PubnetSearch 0 LOG Applying Requestfilters 0 LOG Calling filter: com.adobe.granite.requests.logging.impl.RequestLoggerImpl 0 LOG Calling filter: com.adobe.cq.social.ugcbase.security.impl.SaferSlingPostServlet 0 LOG Calling filter: org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter 0 LOG Calling filter: com.adobe.granite.httpcache.impl.InnerCacheFilter 0 LOG Calling filter: com.day.cq.wcm.designimporter.CanvasPageDeleteRequestFilter 0 LOG Calling filter: com.adobe.cq.history.impl.HistoryRequestFilter 1 LOG Calling filter: com.day.cq.wcm.core.impl.WCMRequestFilter 1 LOG Calling filter: com.adobe.granite.optout.impl.OptOutFilter 1 LOG Calling filter: com.day.cq.theme.impl.ThemeResolverFilter 1 LOG Calling filter: com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet 1 LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter 1 LOG Calling filter: com.day.cq.analytics.provisioning.impl.UserAuthenticationRequestFilter 1 LOG Calling filter: com.adobe.cq.social.commons.cors.CORSAuthenticationFilter 1 LOG Calling filter: com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter 1 LOG RedirectFilter did not redirect (not redirecting in author mode) 1 LOG Calling filter: com.day.cq.wcm.core.impl.warp.TimeWarpFilter 1 LOG Calling filter: com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl 1 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter 1 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter 1 LOG Calling filter: org.apache.sling.security.impl.ContentDispositionFilter 1 LOG Calling filter: com.adobe.granite.csrf.impl.CSRFFilter 1 LOG Calling filter: com.adobe.cq.dam.s7imaging.impl.auth.MemoryTokenAuthHandler 1 LOG Calling filter: com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl 1 LOG Calling filter: com.day.cq.dam.core.impl.servlet.ActivityRecordHandler 1 LOG Applying Componentfilters 1 LOG Calling filter: com.day.cq.wcm.core.impl.WCMComponentFilter 1 LOG Calling filter: com.day.cq.wcm.core.impl.WCMDebugFilter 1 LOG Calling filter: com.day.cq.personalization.impl.TargetComponentFilter 1 TIMER_START{com.rogers.aem.servlets.PubnetSearch#0} 1 TIMER_START{resolveIncludedResource(/bin/Magazine.jsp)} 1 TIMER_END{0,resolveIncludedResource(/bin/Magazine.jsp)} path=/bin/Magazine.jsp resolves to Resource=NonExistingResource, path=/bin/Magazine.jsp 1 LOG Including resource NonExistingResource, path=/bin/Magazine.jsp (SlingRequestPathInfo: path='/bin/Magazine.jsp', selectorString='null', extension='jsp', suffix='null') 1 TIMER_START{resolveServlet(NonExistingResource, path=/bin/Magazine.jsp)} 2 LOG {0}: no servlet found 2 TIMER_END{1,resolveServlet(NonExistingResource, path=/bin/Magazine.jsp)} Using servlet org.apache.sling.servlets.get.DefaultGetServlet

Avatar

Level 5

Sorry guys I think you're misunderstanding here.

I know how to redirect, just can't get the PATH to my JSP page correct

The jsp page I want to redirect to lives in http://localhost:4502/content/magazine.html

What would be the path to this...currently my getting this exception from my servlet

LOG Including resource NonExistingResource, path=/bin/Magazine.jsp (SlingRequestPathInfo: path='/bin/Magazine.jsp', selectorString='null', extension='jsp', suffix='null')

My servlet path is /bin/MyServlet