Touch�.
I don't know why I had not thought of filters for this...
Oh, yes, now I know:
My initial intention was to return the JSP file contents as if it were a .txt
file, and though ServletContext.getResourceAsStream could be used, it involved
having to implement the same behaviour as the default servlet does (last
modified checks, etc.). So after all I wanted the default servlet to serve the
request, and the filter would have needed the same behaviour as the forwarding
servlet I had implemented.
Therefore, my question now becomes: If I needed the default servlet (or the jsp
servlet, as it seems to have the same problems) to serve all requests inside a
subdirectory, or perhaps just some files with a pattern under a subdir, how
should I proceed?
In other words: What's wrong with doing (don't consider code quality, it's just
to show the procedure)
----
RequestDispatcher defaultDispatcher =
getServletContext().getNamedDispatcher("default");
defaultDispatcher.forward(request, response);
----
? Why doesn't it work (and "jsp" doesn't, either), while any other servlet name
just seems to work fine?
Or, otherwise, in the app's web.xml,
----
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/foo/bar/*</url-pattern>
</servlet-mapping>
----
? Amazingly,
----
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/foo/bar/file.jsp</url-pattern>
</servlet-mapping>
----
does seem to work, while not the "/foo/bar/*" mapping (and this mapping works
with any other servlet name defined in the same web.xml file).
Is it that today it's a Friday? Am I misunderstanding something very basic? Is
this a common behaviour, or just happens in Tomcat (4.1.something)?
Thanks,
Albert.
----- Original Message -----
From: "Mark R. Diggory" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[EMAIL PROTECTED]>
Sent: Friday, December 12, 2003 4:24 PM
Subject: Re: Disabling JSP execution under certain dirs
> Yes, Unfortunately, I bounced off this as well, it would have behooved
> the Servlet API developers to allow URL Rewrites to be a little more
> powerful from a REGEXP standpoint. Look at the j2sdk1.4 api, we now have
> regexp's available there default. One would suspect that the Servlet API
> could easily start allowing more complex regexp into these entries.
>
> I would recommend writing a Filter that gets run prior to all jsp's and
> applying your own regexp/forwarding to the jsp's when you deem it
> appropriate. This requires j2sdk 1.4 and is pseudo code.
>
>
> public final class BlockJspFilter implements Filter {
>
> String regexp = "*.(/foo/bar.jsp|/bim/bam.jsp).*";
>
> public void doFilter(ServletRequest request,
> ServletResponse response, FilterChain chain)
> throws IOException, ServletException {
>
> if(request.getRequestURL().matches(regexp)){
> /*send an error response*/
> else{
> chain.doFilter(request, wrapper);
> }
> ...
> }
> }
>
> <filter>
> <filter-name>BlockJspFilter</filter-name>
> <filter-class>BlockJspFilter</filter-class>
> </filter>
> <filter-mapping>
> <filter-name>BlockJspFilter</filter-name>
> <url-pattern>*.jsp</url-pattern>
> </filter-mapping>
>
> One could even go as far as to use the FilterConfig to pass in the
> regexps which could then be dynamically adjusted in the web.xml
>
> http://java.sun.com/products/servlet/Filters.html
>
> -Mark Diggory
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]