该Filter主要功能就是将http://example.com通过301重定向至http://www.example.com
UrlRedirect.java代码:
public class UrlRedirect implements Filter{
/**
* 功能:将http://example.com重定向至http://www.example.com
* */
private static final String DOMAIN = "example.com";
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
// 获取域名
String serverName = request.getServerName();
// 获取请求路径
String path = httpServletRequest.getRequestURI();
String queryString = (httpServletRequest.getQueryString() == null ? "" : "?"+httpServletRequest.getQueryString()); // 获取路径中的参数
int end = serverName.indexOf(DOMAIN);
if (end == -1 || end == 0) { // 判断是否是example.com
httpServletResponse.setStatus(301);
httpServletResponse.setHeader( "Location", "http://www."+DOMAIN+path+queryString);
httpServletResponse.setHeader( "Connection", "close" );
return;
}
chain.doFilter(request, response);
}
}
web.xml中配置filter:
<filter>
<filter-name>UrlRedirect</filter-name>
<filter-class>**.***.UrlRedirect</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRedirect</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
部署在tomcat中就可以测试了。
如果本地测试域名需要在系统hosts中加
127.0.0.1 www.example.com
127.0.0.1 example.com
另外在tomcat中server.xml作相应的配置。