我有一個網站,真的很糟糕地實施了虛榮URL模塊和真正的高負載在一定的時間。由於url模塊中存在一些錯誤,系統需要經常重啓。所以,我想重寫一個血腥的模塊,使其更好,更少車...虛榮/花式/重寫URL實現不吸收
是否有一個很好的模式來實現虛榮網址系統?
處理虛榮URL以獲得高性能的最佳方法是什麼?
什麼是最好的圖書館來看看來源?
乾杯。 赤穗
我有一個網站,真的很糟糕地實施了虛榮URL模塊和真正的高負載在一定的時間。由於url模塊中存在一些錯誤,系統需要經常重啓。所以,我想重寫一個血腥的模塊,使其更好,更少車...虛榮/花式/重寫URL實現不吸收
是否有一個很好的模式來實現虛榮網址系統?
處理虛榮URL以獲得高性能的最佳方法是什麼?
什麼是最好的圖書館來看看來源?
乾杯。 赤穗
我不知道你的應用程序的具體實施細則,但作爲一般的素描時,我會寫映射到的利益(也許/*
)URL的空間Filter
。
這種Filter
會檢查URL是否是看上一個,在這種情況下會forward
請求中選取適當的資源(或者是URL調度員或命名的)。您需要保存傳入init(FilterConfig)
的filterConfig.getServletContext()
以創建請求調度程序。如果URL不是很花哨,那麼過濾器將調用chain.doFilter(req, resp)
,然後提供非映射資源。
public class ExceptionFilter implements Filter {
private ServletContext servletContext;
public void destroy() {}
public void doFilter(ServletRequest req,
ServletResponse resp,
FilterChain chain)
throws IOException, ServletException {
String mapping = getMappingFor((HttpServletRequest)req);
if(mapping!=null) servletContext.getRequestDispatcher(mapping).forward(req,resp);
else chain.doFilter(req, resp);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.servletContext = filterConfig.getServletContext();
}
private String getMappingFor(HttpServletRequest req) {...}
如何getMappingFor
實現,取決於具體的應用,但它可能會打開一個數據庫的連接,並要求URL /富/酒吧是否映射,返回映射的URL或null
如果沒有映射。如果映射已知不會更改,則可以緩存已檢索的映射。
您可能會使用更詳細的實現,例如根據給定的URL或來自數據庫的信息設置一些請求屬性,然後將請求轉發給某個知道該怎麼做的servlet。
你在用什麼框架? – Javier 2013-02-23 13:01:37
OSGi兼容,家庭釀造框架 – Peter 2013-02-23 13:02:55
您的意思是裸露的servlets? – Javier 2013-02-23 13:03:15