ãµã¼ãã¬ããã®web.xmlã§éçãã¡ã¤ã«ãé¤å¤ããæ¹æ³
ãã¨ãã°çãµã¼ãã¬ããã§ä½ã£ããªã¬ãªã¬ãã¬ã¼ã ã¯ã¼ã¯ã§ãæ²ç¤ºæ¿ã®ã²ã¨ã¤ãä½ããã¨æã£ãã¨ããã
ãªã¬ãªã¬ãã¬ã¼ã ã¯ã¼ã¯ã¯ããã¹ã¦ã®ãªã¯ã¨ã¹ããã²ã¨ã¤ã®ãµã¼ãã¬ããã§åãä»ãããã®å
ã¯ç¬èªã®ãªã¬ãªã¬ã«ã¼ã¿ãã«ã¼ãã£ã³ã°ãã¦ãå種å¦çãè¡ã£ã¦ãHTMLãè¿ããã¨ãããã¨ãããããã¨ããã
ãã®å ´åããã¹ã¦ã®ãªã¯ã¨ã¹ããOreOreFrameworkServletã«æ¸¡ãã°ãããã ãªãã¨ãããã¨ã§web.xmlã«ä»¥ä¸ã®ããã«æ¸ãã¨ã
<servlet> <servlet-name>OreOreFramework</servlet-name> <servlet-class>com.kmaebashi.framework.OreOreFrameworkServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>OreOreFramework</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
cssã¨ãã¢ã¤ã³ã³ç»åã¨ãã®éçãã¡ã¤ã«ã¸ã®ãªã¯ã¨ã¹ãã¾ã§OreOreFrameworkServletã«æµãã¦ãã¾ããããã¯å°ãã
ãã¨ãã°æ¡å¼µåã§å¤å®ãã¦ã*.cssã ãé¤å¤ãããã¨ãã£ãæ¸ãæ¹ã¯ãweb.xmlã®
ã"web.xml" "url-pattern"ãã§Googleæ¤ç´¢ãããã¨ãããããé¤å¤ãã£ã¦ãµã¸ã§ã¹ããåºããããã§ãæ®éã«éè¦ã¯ãããããªã®ã ãã©ã
ã§ãããããæ¤ç´¢ããã¨ãStack overflowã®ãã¼ã¸ãããã¤ãè¦ã¤ãã£ã¦ããµã¼ãã¬ãããã£ã«ã¿ã使ãã°è¡ãããããâ¦â¦ã®ã ãã
https://stackoverflow.com/questions/8658949/in-a-web-xml-url-pattern-matcher-is-there-a-way-to-exclude-urlsstackoverflow.com
https://stackoverflow.com/questions/50056316/how-to-exclude-specific-path-from-web-xmlstackoverflow.com
ãµã¼ãã¬ãããã£ã«ã¿ã§ãæ¡å¼µåãªããã£ã¬ã¯ããªãªãã§éçãã¡ã¤ã«ãå¤å®ããå¾ã©ãããã°ããããæ¸ãã¦ãªããä¸ã®ãµãã¤ã®è³ªåã®è§£çã¯ã©ã¡ããèå¿ã®ã¨ãããã// do somethingãã¨ãã//do something elseãã«ãªã£ã¦ããããããã®ãµãã¤ã®è§£çã¯ãifæã®æ¡ä»¶å¤å®ãããããéã«ãªã£ã¦ããããªãã ãããã
å©ç¨è
ããè¦ãããã¹ã«å½±é¿ãä¸ãã¦ããã®ãªãããã¨ãã°æ²ç¤ºæ¿ã®ã¢ããªã±ã¼ã·ã§ã³åãbbsã¨ãã¦ãä¸è¦§è¡¨ç¤ºã®URLãæ¬æ¥ã¯ãããããã¨ããã
https://<ãã¹ã>/bbs/list
ãµããã£ã¬ã¯ããªãæãã§
https://<ãã¹ã>/bbs/app/list
ã¨ããæ¡å¼µå.doãä»ãã¦
https://<ãã¹ã>/bbs/list.do
ã¨ãã«å¤ããã°ãurl-patternã«"/app/*"ã"*.do"ãæ¸ãã¦ãããããªã¯ã¨ã¹ãã ããOreOreFrameworkServletã«æ¸¡ãã°ããã
ãã®ä¸ã§ãwebapps/bbsç´ä¸ã«bbs.cssãç½®ãã°ãhttps://<ãã¹ã>/bbs/bbs.cssã§CSSã¯åå¾ã§ããã
ã§ããå©ç¨è
ããè¦ããã¨ãããªã®ã§ãã£ã±ãé¿ãããã/appã¨ãå
¥ããã¨CSSã¨ãã¨ã®ç¸å¯¾ãã¹ãçããã.doãªãã¦æããã®Strutsã¢ããªã¿ããã ã
ãµã¼ãã¬ãããã£ã«ã¿ã¯ããµã¼ãã¬ããã¨ãJSPã¨ãã®æåã«æã¾ãããµã¼ãã¬ããã³ã³ãã(Tomcatã¨ã)ãæåã®ãµã¼ãã¬ãããã£ã«ã¿ã®doFilter()ãå¼ã³åºãã®ã§ã次ã®ãã£ã«ã¿ã¨ããµã¼ãã¬ããã¨ãã«å¦çã渡ããªããå¼æ°ã¨ãã¦ä¸ããããchainã®doFilter()ãå¼ã¹ã°ãããã§ã¯doFilter()ãå¼ã°ãªãã£ããã©ããªããã¨è¨ãã¨ãããã§ãã®ãªã¯ã¨ã¹ãã«å¯¾ããå¦çã¯çµãã£ã¦ãã¾ããæ¡å¼µåã.cssã§ãªããã°doFilter()ãå¼ãã§(OreOreFrameworkServletã«å¦çã渡ãã¦)ã.cssã ã£ããä½ãããªããã¨ãããã£ã«ã¿ã«ããã¨ãCSSã¯åå¾ã§ããªããæ»ãå¤ãä½ãã§ããã®url-patternã«ãããããªãã£ããã¨ã«ãããã¨ããæå®ãã§ããã°ããã®ã ããããã«ããããªæ©è½ã¯ãªãããdoFilter()ã®æ»ãå¤ã¯voidã ãéçãã¡ã¤ã«ã ã¨å¤å®ããããèªåã§ãã®ãã¡ã¤ã«ãéãã¦ãæ¡å¼µåããContent-Typeãæå®ãã¦ãã¡ã¤ã«ã®ä¸èº«ãã¬ã¹ãã³ã¹ã«æµãè¾¼ãã°ããã®ã ãããããããã«ããã¾ã§ããã®ãå«ã ã
ããã«ããããæ¢ãã¦è¦ã¤ãããã¼ã¸ããã¡ãã
https://stackoverflow.com/questions/13521946/how-to-prevent-static-resources-from-being-handled-by-front-controller-servlet-wstackoverflow.com
ãããããªã³ã¯ããã¦ãããã¼ã¸ãå
容ã¯åºæ¬çã«ä¸è¨ã¨åãã
https://stackoverflow.com/questions/870150/how-to-access-static-resources-when-mapping-a-global-front-controller-servlet-on/3593513#3593513stackoverflow.com
çµå±ãCSSãªããè¿ãããã¨æã£ããããã£ã«ã¿ã§ã¯doFilter()ãå¼ã¹ã°ããã¦ãéã«ãµã¼ãã¬ããã«æ¸¡ãããå ´åã¯/app/ãªã.doãªãããã£ã¤ãã¦ãã©ã¯ã¼ããã¦ãweb.xmlã®url-patternã«ã¯ããããã£ã¤ããã®ãæ¸ãã¦ãããã¨ããæ¹æ³ã§ã©ãããã§ãããä¸ã®ä¾ã§ã¯ããµã¼ãã¬ããã«.doããã£ã¤ãã¦ããããããã¯å©ç¨è ã«ã¯è¦ããªã(OreOreFrameworkServletã«ã¯æ¸¡ã£ã¦ãã¾ãããã¾ãææ ¢ãã)ã
web.xml
<filter> <filter-name>staticresourcefilter</filter-name> <filter-class>com.kmaebashi.framework.StaticResourceFilter</filter-class> </filter> <filter-mapping> <filter-name>staticresourcefilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>OreOreFramework</servlet-name> <servlet-class>com.kmaebashi.framework.OreOreFrameworkServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>OreOreFramework</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
StaticResourceFilter.java
import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; public class StaticResourceFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; String path = req.getRequestURI().substring(req.getContextPath().length()); if (path.endsWith(".css") || path.endsWith(".html")) { chain.doFilter(request, response); } else { request.getRequestDispatcher(path + ".do").forward(request, response); } } }
ãµã¼ãã¬ãããªãã¦20年以ä¸åãããããã®ã ããã«ããurl-patternã«é¤å¤ã®ã«ã¼ã«ãæ¸ãããããã®æ©è½ãæ¨æºã§ä»ãã¦ããã¦ã»ããããªãã