rest - <url-pattern> in <servlet-mapping> -


case 1

  <servlet-mapping>     <servlet-name>myapp</servlet-name>     <url-pattern>/</url-pattern>   </servlet-mapping> 

case 2

  <servlet-mapping>     <servlet-name>myapp</servlet-name>     <url-pattern>*.do</url-pattern>   </servlet-mapping> 

if use case 1 dont of pages styled <link rel="stylesheet" type="text/css" href="${contextpath}/assets/styles.css" />, if use case 2 gets styled.

could me understand why?

also, tell me pattern should used don't have worry extensions? should using /*? thing if use /* when i've been using *.do while developing application, seems breaking, not styles don't pictures rendered, no jcaptcha , has links.

and if try send request rest client http://localhost:8080/myapp/user/1 doesn't work , need add .do @ end , send same request http://localhost:8080/myapp/user/1.do.

thanks.

browsers sends separate http requests on linked resources such css files, js files , images. urls of requests match url pattern of /. myapp servlet called on requests. however, myapp servlet doesn't seem process them properly, requests returns entirely different. try requesting resources separately learn servlet returning webbrowser:

http://localhost:8080/myapp/assets/styles.css

in case, want let myapp servlet ignore requests on resources. best way create filter that. assuming of resources in folder called /assets, can achieve mapping servlet on more specific url pattern, such example /myapp/* , creating filter listening on /* transparently continues request/response chain requests on /assets , dispatches other requests /myapp.

so, configuration

<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>/myapp/*</url-pattern> </servlet-mapping> 

in combination following in filter's dofilter():

string uri = ((httpservletrequest) request).getrequesturi(); if (uri.startswith("/assets")) {     chain.dofilter(request, response); // goes container's default servlet. } else {     request.getrequestdispatcher("/myapp" + uri).forward(request, response); } 

should work you.


Comments

Popular posts from this blog

c++ - Is it possible to compile a VST on linux? -

java - Output of Eclipse is rubbish -

jquery - Confused with JSON data and normal data in Django ajax request -