--- AbstractHttpServlet.java	2012-02-15 11:50:36.937437369 -0500
+++ AbstractHttpServlet.java	2012-02-15 12:25:00.626189968 -0500
@@ -20,6 +20,8 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.regex.Matcher;
@@ -167,6 +169,14 @@
      */
     public URLConnection getResourceConnection(String name) throws ResourceException {
         String basePath = servletContext.getRealPath("/");
+        
+        try {
+            URI nameUri = new URI(name);
+            name = nameUri.getPath();
+        } catch (URISyntaxException ex) {
+            // ignore and use existing name
+        }
+
         if (name.startsWith(basePath)) name = name.substring(basePath.length());
 
         name = name.replaceAll("\\\\", "/");
@@ -187,12 +197,15 @@
             if (url == null) {
                 throw new ResourceException("Resource \"" + name + "\" not found!");
             } else {
-                url = new URL("file", "", servletContext.getRealPath(tryScriptName));
+                URI realPath = new URI("file", "", servletContext.getRealPath(tryScriptName), null);
+                url = realPath.toURL();
             }
             return url.openConnection();
         } catch (IOException e) {
             throw new ResourceException("Problems getting resource named \"" + name + "\"!", e);
-        }
+        } catch (URISyntaxException e) {
+            throw new ResourceException("Problems getting resource named \"" + name + "\"!", e);
+	}
     }
 
     private boolean isFile(URL ret) {
