search
Login

Categories


C Books Guide and List
C++ Books Guide and List
Best Java Books

3.8k questions

4k answers

117 comments

10.7k users

0 votes
34 views
Hi i have a problem i want to send all my request to one spring servlet

<servlet>      
  <servlet-name>home</servlet-name>        
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>     
</servlet>  
<servlet-mapping>      
  <servlet-name>home</servlet-name>        
  <url-pattern>/*</url-pattern>     
</servlet-mapping>
but this mapping stops the access to static files like images etc i have put them all in /res/....... folder

please help me how can i make this work i am using this on google app engine.
asked Guru 27.1k points 31 50 97

1 Answer

0 votes

 

 
Map the controller servlet on a more specific url-pattern like /pages/*, put the static content in a specific folder like /static and create a Filter listening on /* which transparently continues the chain for any static content and dispatches requests to the controller servlet for other content.
 
In a nutshell:
 
<filter>
    <filter-name>filter</filter-name>
    <filter-class>com.example.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
 
<servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>com.example.Controller</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>/pages/*</url-pattern>
</servlet-mapping>
with the following in filter's doFilter():
 
HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length());
 
if (path.startsWith("/static")) {
    chain.doFilter(request, response); // Goes to default servlet.
} else {
    request.getRequestDispatcher("/pages" + uri).forward(request, response);
}
No, this does not end up with /pages in browser address bar. It's fully transparent. You can if necessary make "/static" and/or "/pages" an init-param of the filter.
 
answered Expert 13.2k points 27 40 59

Related questions

0 votes
2 answers 25 views
25 views
asked john Guru 27.1k points 31 50 97
0 votes
1 answer 8 views
8 views
asked keem Expert 13.2k points 27 40 59
0 votes
1 answer 14 views
14 views
asked sara Guru 24.6k points 29 52 81
0 votes
1 answer 34 views
34 views
asked sara Guru 24.6k points 29 52 81
0 votes
1 answer 30 views
30 views
asked john Guru 27.1k points 31 50 97
...