`

泛域名解析

 
阅读更多
web.xml配置

<!-- webSite dns 泛域名解析 -->
	 <filter>
		<filter-name>webDnsFilter</filter-name>
		<filter-class>
		net.hlj.schoolWebsite.Filter.WebDnsFilter
		</filter-class>
		<init-param>
			<param-name>error</param-name>
			<param-value>/error.jsp</param-value>
		</init-param>
		<init-param>
			<param-name>ignorePages</param-name>
			<param-value>
				/error.jsp,/include/ajax_action.jsp,/download
			</param-value>
		</init-param>
		<init-param>
			<param-name>ignoreExtensions</param-name>
			<param-value>
				jpeg,gif,css,jpg,js,htm,html,swf,png
			</param-value>
		</init-param>
	 </filter>
	 <filter-mapping>
		<filter-name>webDnsFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- webSite dns -->



实现类:

package net.hlj.schoolWebsite.Filter;

import java.io.IOException;
import java.util.Vector;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import net.hlj.util.*;
/**
 * 备注:对网站域名做泛解析
 * @author:未知
 * @date:2012-01-30
 */
public class WebDnsFilter implements Filter {
	Vector<String> nonfilter = new Vector<String>();

	private static String contextPath = null;

	private static boolean hasContextPath = false;

	private String forwardPage;

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig config) throws ServletException {
		forwardPage = config.getInitParameter("error");
		String[] notFilter = config.getInitParameter("ignorePages").split(",");
		for (int i = 0; i < notFilter.length; i++) {
			nonfilter.add(notFilter[i]);
		}
		String[] notFilterExt = config.getInitParameter("ignoreExtensions").split(",");
		for (int i = 0; i < notFilterExt.length; i++) {
			nonfilter.add(notFilterExt[i]);
		}
		nonfilter.add(forwardPage);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
	 *      javax.servlet.ServletResponse, javax.servlet.FilterChain)
	 */
	public void doFilter(ServletRequest srequest, ServletResponse sresponse,
			FilterChain chain) throws IOException, ServletException {

		HttpServletRequest request = (HttpServletRequest) srequest;
	 
		String uri = request.getRequestURI();
		//System.out.println(uri);
		String dns = "";
		String forwordPage="";
		//String pageName="";
		String ext="";
		String basePath = request.getServerName();
		if (basePath != null) {
			dns = basePath.substring(0, basePath.indexOf("."));
		}
		if (hasContextPath(request))
			uri = uri.substring(uri.indexOf("/", 1));
			//System.out.println(uri);
			ext=uri.substring(uri.lastIndexOf(".")+1);
			//pageName=uri.substring(uri.lastIndexOf(".")+1);
		if (infiltermap(uri)&&infiltermap(ext)) {
			if (dns != null && !dns.equals("www")&&!UtilTool.ipvalid(basePath)) {//ip留测试用
//				if(uri.equals("/showNews.jsp"))
//				{
//					forwordPage="/schoolWebsite/webSite/showNews.jsp";
//				}
//				else if(uri.equals("/showInfo.jsp"))
//				{
//					forwordPage="/schoolWebsite/webSite/showInfo.jsp";
//				}
//				else
//				{
//					forwordPage="/schoolWebsite/webSite/index.jsp";
//				}
				
				RequestDispatcher rd = request
						.getRequestDispatcher(forwordPage);
				rd.forward(srequest, sresponse);
				return;
			}
		}
		chain.doFilter(srequest, sresponse);
	}

	public boolean hasContextPath(HttpServletRequest request) {
		if (contextPath == null) {
			contextPath = request.getContextPath();
			hasContextPath = contextPath.length() > 0;
		}
		return hasContextPath;
	}

	private boolean infiltermap(String uri) {
		return !nonfilter.contains(uri);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {

	}
}
分享到:
评论

相关推荐

    java实现泛域名解析

    Java 实现泛域名解析 泛域名解析是指利用通配符 \* (星号)来做次级域名,以实现所有的次级域名均指向同一 IP 地址。例如支付宝的域名是 www.alipay.com,域名下面有帮助中心 help.alipay.com、abc.alipay.com 等等...

    win2003泛域名解析方法.doc

    Windows Server 2003操作系统内置了DNS(Domain Name System)服务,允许管理员配置和管理各种类型的域名解析,包括泛域名解析。泛域名解析是一种特殊类型,它允许所有以特定前缀结尾的域名都解析到同一IP地址,极大...

    二级域名 泛域名解析

    在互联网世界中,二级域名和泛域名解析是网站建设和管理中的关键概念,它们与网站的可达性和用户体验密切相关。本文将详细解释这两个概念及其在实际应用中的实现方式。 首先,我们来理解什么是二级域名。二级域名是...

    让DNS服务器支持泛域名解析.docx

    **DNS泛域名解析详解** DNS(Domain Name System)是互联网上的关键服务之一,它负责将人类易读的域名转换为网络能识别的IP地址。在企业环境中,由于多个Web站点的需要,通常会使用虚拟主机技术在一个服务器上托管...

    DNS服务器 支持泛域名解析的设置方法 [修正版本]

    然而,维护这些二级域名的工作量非常大,不过我们可以采用泛域名解析技术来解决这个难题,只要稍加设置Windows系统自带的DNS服务器就可以实现对泛域名的支持。 下面分别以Windows Server 2003、Windows 2000的DNS...

    nginx泛域名解析配置教程

    在互联网服务中,泛域名解析是一项重要的技术,它允许一个域名下的多个子域名自动映射到不同的服务器或应用。本教程将详细讲解如何在Nginx中配置泛域名解析,以便更好地管理和分发不同子域名的请求。 首先,我们...

    Linux运维-云计算 基础全栈-173 服务管理-10.1 泛域名解析.mp4

    Linux运维-云计算 基础全栈-173 服务管理-10.1 泛域名解析.mp4

    什么是域名解析.pdf

    泛域名解析的主要用途之一是支持无限的子域名,这对于大型企业或拥有众多子服务的组织非常有用。此外,它还可以防止因用户输入错误而导致的网站访问问题,提高用户体验和网站的可用性。 ### 常见的域名解析记录类型...

    linux apache泛域名解析及dns相关

    Linux Apache泛域名解析及DNS相关 Apache泛域名解析是指在Apache服务器中使用通配符来实现对多个子域名的解析,而DNS(Domain Name System)是将域名解析为IP地址的系统。下面我们将详细介绍Linux Apache泛域名...

    asp.net域名泛解析的代码

    在C#中,实现二级域名解析的关键在于服务器端的处理。通常,这涉及到使用IIS(Internet Information Services)来配置多个站点,每个站点对应不同的主机头,而主机头可能为空,以接收所有二级域名。 3. **IIS绑定*...

    apache+tomcat域名泛解析

    通过上述配置,我们不仅能够实现Apache对于Tomcat应用的泛域名解析,还能进一步优化访问路径和目录结构,使得整个系统的管理变得更加灵活和高效。值得注意的是,在实际操作过程中还需根据具体环境调整配置细节,例如...

    networksolutions域名解析教程

    如果希望所有未明确指向特定子域的请求都转发到某个地址,可以设置泛域名解析,即使用“*”通配符作为子域名。 五、DNS生效时间 请注意,完成上述设置后,DNS更改可能需要一段时间(通常6-24小时)才能在全球范围内...

    九天Win2000泛域名解析解决方案

    解决win2000不支持泛解析的问题。使您可以将您的一台服务器,轻松的变成一台DNS泛解析服务器,给您带来更多的虚拟主机客户。 此产品的出现无疑对互联网...您的客户可以轻松的如同网易、中国频道、万网提供泛域名支持。

    apache虚拟主机中设置泛域名解析的方法

    在Apache中,实现泛域名解析是通过配置文件(通常为httpd.conf或sites-available目录下的vhost文件)中的`ServerName`和`ServerAlias`指令来完成的。这种方法对于拥有多个子域名或者需要提供广泛服务的网站尤其有用...

    Nginx进行域名重写和泛域名解析配置的方法

    在Nginx中,域名重写和泛域名解析是两种常见的配置需求,它们对于网站的多域名管理和动态路由分配至关重要。下面将详细介绍这两种配置方法,并提供相关的示例代码。 ## 1. 域名重写 域名重写是指将用户请求的URL...

    威盾VirtualWall泛域名解析器 v1.0.0.1000.exe

    主要功能: 解析无限个泛域名到不同的网站目录 解析二级域名到指定目录

    CodeIgniter中实现泛域名解析

    在本文中,我们将深入探讨如何在CodeIgniter框架中实现泛域名解析,这对于提升网站的SEO(搜索引擎优化)和提供个性化的用户体验至关重要。CodeIgniter是一个轻量级且强大的PHP MVC框架,虽然其默认的路由功能不直接...

Global site tag (gtag.js) - Google Analytics