創建包含基本屬性的過濾器,例如對於/src/java/company/project/web/filter/BaseFilter.java
:
import java.io.IOException;
import javax.servlet.*;
/**
* Make sane JSP, instead of:
* <pre><a href="<c:url value='/my/path/${id}.html'/>">Title</a></pre>
* allow to use:
* <pre><a href="${ctx}/my/path/${id}.html">Title</a></pre>
*/
public class BaseFilter implements Filter {
private String min;
@Override
public void init(FilterConfig fc) {
min = fc.getServletContext().getInitParameter("min");
if (min == null)
min = fc.getInitParameter("min");
if (min == null)
min = "min";
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setAttribute("base", request.getServletContext().getContextPath());
request.setAttribute("min", min);
chain.doFilter(request, response);
}
@Override
public void destroy() { }
}
並註冊該過濾器在web.xml
:
<filter>
<filter-name>BaseFilter</filter-name>
<filter-class>company.project.web.filter.BaseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>BaseFilter</filter-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.json</url-pattern>
</filter-mapping>
,並使用乾淨的語法:
<script src="${base}/js/jquery.${min}.js"></script>
<link href="${base}/css/bootstrap.${min}.css" rel="stylesheet" type="text/css">
<a href="${base}/index.html">Home</a>
注我設置在該過濾器的附加屬性,例如以發展和精縮之間切換版本的CSS/JS我使用min
屬性,它可以在上下文部署描述符中的WAR文件外部設置(請參閱Java EE容器文檔)。
另請參閱我的回答:https://stackoverflow.com/a/13993570/173149
您使用的是jsp嗎?如果是這樣,那麼使用'' –
sourcedelica
2012-03-05 05:32:33