我有一个网站,真的很糟糕地实施了虚荣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