domaindispatcher.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 120 行
JAVA
120 行
package com.cloudwebsoft.framework.web;import java.io.*;import java.util.*;import java.util.regex.*;import javax.servlet.*;import javax.servlet.http.*;import cn.js.fan.util.*;public class DomainDispatcher { public static boolean isSubDomainSupported = false; public static String baseDomain = null; public DomainDispatcher() { } public static String matchSubDomain(String serverName, DomainUnit ru) { String subDomain = ru.getSubDomain() + "." + baseDomain; if (!ru.isRegexMatch()) { if (subDomain.equals(serverName)) return ru.getSubDomain(); else return ""; } else { String sub = ""; subDomain = subDomain.replaceAll("\\.", "\\\\."); subDomain = subDomain.replaceAll("\\?", "\\\\?"); String patString = subDomain.replaceAll("\\*", "(.*?)"); Pattern pat = Pattern.compile( patString, Pattern.DOTALL | Pattern.CASE_INSENSITIVE); Matcher m = pat.matcher(serverName); if (m.find()) { sub = m.group(1); String[] excludeSubDomains = ru.getExcludeSubDomains(); if (excludeSubDomains != null) { int len = excludeSubDomains.length; for (int i = 0; i < len; i++) { if (sub.equals(excludeSubDomains[i])) return ""; } } } return sub; } } public static int dispatch(HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException { if (request.getRequestURI().equals("/index.jsp")) { String serverName = request.getServerName(); if (baseDomain == null) { String[] domainParts = StrUtil.split(serverName, "\\."); int len = domainParts.length; if (len == 1 || StrUtil.isNumeric(domainParts[len - 1])) { baseDomain = serverName; } else { baseDomain = domainParts[len - 2] + "." + domainParts[len - 1]; } } DomainMgr rm = new DomainMgr(); Vector v = rm.getAllDomainUnit(); Iterator ir = v.iterator(); while (ir.hasNext()) { DomainUnit ru = (DomainUnit) ir.next(); if (ru.isUsed()) { String domainField = matchSubDomain(serverName, ru); if (!domainField.equals("")) { String url = ru.getUrl(); if (!url.equals("")) { if (ru.isRegexMatch()) { url = StrUtil.format(url, new String[] {domainField}); } } else if (!ru.getClassName().equals("")) { url = ru.getIDomainDispatcher().getUrl(request, domainField, ru); } if (!url.equals("")) { RequestDispatcher rd = request. getRequestDispatcher(url); if (ru.isRedirect()) res.sendRedirect(url); else rd.forward(request, res); return 1; } } } } } return 0; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?