/** * Processes an action result by dispatching the configured servlet. * * @param \AppserverIo\Psr\Servlet\ServletRequestInterface $servletRequest The request instance * @param \AppserverIo\Psr\Servlet\ServletResponseInterface $servletResponse The response sent back to the client * * @return void */ public function process(ServletRequestInterface $servletRequest, ServletResponseInterface $servletResponse) { // load result and session-ID extract(parse_url($this->getResult())); // initialize the request URI if (isset($path)) { $servletRequest->setRequestUri($path); } // initialize the query string if (isset($query)) { $servletRequest->setQueryString($query); } // prepare the request with the new data $servletRequest->prepare(); // load the servlet path and session-ID $servletPath = $servletRequest->getServletPath(); $sessionId = $servletRequest->getProposedSessionId(); // load and process the servlet $servlet = $this->getServletContext()->lookup($servletPath, $sessionId); $servlet->service($servletRequest, $servletResponse); }
/** * Processes the DHTML file specified as servlet name. * * @param \AppserverIo\Psr\Servlet\ServletRequestInterface $servletRequest The request instance * @param \AppserverIo\Psr\Servlet\ServletResponseInterface $servletResponse The response sent back to the client * * @return void * * @throws \AppserverIo\Psr\Servlet\ServletException If no action has been found for the requested path */ public function service(ServletRequestInterface $servletRequest, ServletResponseInterface $servletResponse) { // pre-initialize the X-POWERED-BY header $poweredBy = $this->getPoweredBy(); // append an existing X-POWERED-BY header if available if ($servletResponse->hasHeader(HttpProtocol::HEADER_X_POWERED_BY)) { $poweredBy = $servletResponse->getHeader(HttpProtocol::HEADER_X_POWERED_BY) . ', ' . $poweredBy; } // set the X-POWERED-BY header $servletResponse->addHeader(HttpProtocol::HEADER_X_POWERED_BY, $poweredBy); // servlet path === relative path to the template name $template = $servletRequest->getServletPath(); // check if the template is available if (file_exists($pathToTemplate = $this->getWebappPath() . $template) === false) { throw new ServletException(sprintf('Requested template \'%s\' is not available', $template)); } // process the template ob_start(); require $pathToTemplate; // add the servlet name to the response $servletResponse->appendBodyStream(ob_get_clean()); }