"Williams, Stephen" wrote:
>
> Jim Preston wrote:
> > Jason's example shows adding an alias for "*.html" that maps
> > to the file handler and then a Deblink servlet (an example
> > servlet that just looks for "<blink>" tags and removes them).
> > It doesn't look to me like there is any reason that you can't
> > add a "/foo/*.jsp" and a "/bar/*.jsp" where one maps to the
> > standard JSP handler and the other maps to that plus a
> > servlet of your choice.
>
> The trick I'm not sure of is how to get an alias to map to my servlet *plus*
> the standard JSP handler.  I know that some servlet engines allow servlets
> to be chained together, which might do the trick.  Or, my servlet could call
> the servlet engine's standard JSP handler (as long as that is a servlet).
> Anyone think that would work?

You have to do something like this (assuming a Servlet 2.2 web application
structure). You store your JSP pages in a structure like this:

  myapp/foo.jsp
  myapp/bar.jsp
  myapp/other/fee.jsp
  myapp/other/baz.jsp

If you want requests for the JSP pages in the /other directory to be processed
first by a servlet and then by the standard JSP container, you can do this.
First define a URI mapping for the servlet in WEB-INF/web.xml:

  <web-app>
    <servlet>
      <servlet-name>controller</servlet-name>
      <servlet-class>ControllerServlet</servlet-class>
    </servlet>
    ...
    <servlet-mapping>
      <servlet-name>controller</servlet-name>
      <url-pattern>/controller/*</url-pattern>
    </servlet-mapping>
    ...
  </web-app>

Then you request the JSP pages with URIs like:

  /myapp/controller/other/fee.jsp

This URI maps to the controller servlet, so it will be invoked. It can get
the context-relative URI for the JSP page like this:

  String uri = request.getPathInfo();

When it's ready to let the JSP container process the JSP page, it gets
a RequestDispatcher and includes or forwards to the JSP page:

  RequestDispatcher rd = getServletContext().getRequestDispatcher(uri);
  rd.include(request, response);

Note that nothing prevents a user from requesting the JSP page directly,
with a URI like /other/fee.jsp. Depending on which container you use,
you may be able to use security constraints to restrict access to URIs
like this though.

Hans
--
Hans Bergsten           [EMAIL PROTECTED]
Gefion Software         http://www.gefionsoftware.com

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
Some relevant FAQs on JSP/Servlets can be found at:

 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.html
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets

Reply via email to