<!--配置过滤器--> <filter> <filter-name>MergeFilter</filter-name> <filter-class>com.commons.filter.MergeFilter</filter-class> </filter> <!--映射过滤器--> <filter-mapping> <filter-name>MergeFilter</filter-name> <url-pattern>/selfhelp/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>ERROR</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
?
?
?
?
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class MergeFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(final ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {
@Override
public String getRequestURI() {
String url = ((HttpServletRequest) request).getRequestURI();
if (url.contains("/selfhelp") && !url.contains("/selfhelp/selfhelp")) {
url = url.replace("/selfhelp", "/selfhelp/selfhelp");
}
return url;
}
}, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
?
?
用<jsp:include page="success.jsp"></jsp:include> 就可以过滤了, jsp中include[1]有两种形式,分别是 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 前者是指令元素、后者是行为元素。通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,就可以考虑用include。<%@ include file=” ”%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。) include与jsp:include主要有两个方面的不同; 一:执行时间上: <%@ include file=”relativeURI”%> 是在翻译阶段执行 <jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行. 二:引入内容的不同: <%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起. <jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本. 另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释
?
?
?
?
?
?
?
?
?
原文:http://knight-black-bob.iteye.com/blog/2248026