`
zengshaotao
  • 浏览: 787560 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

判断服务器类型

 
阅读更多

开发时一般用tomcat,然后在测试环境发布时使用的是weblogic。

对于页面提交,使用了JQuery的form的submit,出现了weblogic通过request获得方式显示正常而tomcat出现乱码的情况。所以需要对不同服务器进行不同处理。

对于JQuery的ajax的方式,需要在前端拼接带有中文的参数地址时使用encodeURL两次,然后在后端使用URLDecode(Stri,“utf-8”)的方式进行解码

 

以下是网络提供的判断服务器的代码,还是比较方便的

package com.roger.query.util;

import org.apache.log4j.Logger;

/**

 * @  服务器类型探测

 * @Date  2011/04/13

 * **/

public class ServerUtil {

 public static final String GERONIMO_CLASS = "/org/apache/geronimo/system/main/Daemon.class";

 public static final String JBOSS_CLASS = "/org/jboss/Main.class";

 public static final String JETTY_CLASS = "/org/mortbay/jetty/Server.class";

 public static final String JONAS_CLASS = "/org/objectweb/jonas/server/Server.class";

 public static final String OC4J_CLASS = "/oracle/jsp/oc4jutil/Oc4jUtil.class";

 public static final String ORION_CLASS = "/com/evermind/server/ApplicationServer.class";

 public static final String PRAMATI_CLASS = "/com/pramati/Server.class";

 public static final String RESIN_CLASS = "/com/caucho/server/resin/Resin.class";

 public static final String REXIP_CLASS = "/com/tcc/Main.class";

 public static final String SUN7_CLASS = "/com/iplanet/ias/tools/cli/IasAdminMain.class";

 public static final String SUN8_CLASS = "/com/sun/enterprise/cli/framework/CLIMain.class";

 public static final String TOMCAT_CLASS = "/org/apache/catalina/startup/Bootstrap.class";

 public static final String WEBLOGIC_CLASS = "/weblogic/Server.class";

 public static final String WEBSPHERE_CLASS = "/com/ibm/websphere/product/VersionInfo.class";

 public static String getServerId() {

  ServerUtil sd = _instance;

  if (sd._serverId == null) {

   if (ServerUtil.isGeronimo()) {

    sd._serverId = "geronimo";

   } else if (ServerUtil.isJBoss()) {

    sd._serverId = "jboss";

   } else if (ServerUtil.isJOnAS()) {

    sd._serverId = "jonas";

   } else if (ServerUtil.isOC4J()) {

    sd._serverId = "oc4j";

   } else if (ServerUtil.isOrion()) {

    sd._serverId = "orion";

   } else if (ServerUtil.isResin()) {

    sd._serverId = "resin";

   } else if (ServerUtil.isWebLogic()) {

    sd._serverId = "weblogic";

   } else if (ServerUtil.isWebSphere()) {

    sd._serverId = "websphere";

   }

   if (ServerUtil.isJetty()) {

    if (sd._serverId == null) {

     sd._serverId = "jetty";

    } else {

     sd._serverId += "-jetty";

    }

   } else if (ServerUtil.isTomcat()) {

    if (sd._serverId == null) {

     sd._serverId = "tomcat";

    } else {

     sd._serverId += "-tomcat";

    }

   }

   if (_log.isInfoEnabled()) {

    _log.info("Detected server " + sd._serverId);

   }

   if (sd._serverId == null) {

    throw new RuntimeException("Server is not supported");

   }

  }

  return sd._serverId;

 }

 public static boolean isGeronimo() {

  ServerUtil sd = _instance;

  if (sd._geronimo == null) {

   Class c = sd.getClass();

   if (c.getResource(GERONIMO_CLASS) != null) {

    sd._geronimo = Boolean.TRUE;

   } else {

    sd._geronimo = Boolean.FALSE;

   }

  }

  return sd._geronimo.booleanValue();

 }

 public static boolean isJBoss() {

  ServerUtil sd = _instance;

  if (sd._jBoss == null) {

   Class c = sd.getClass();

   if (c.getResource(JBOSS_CLASS) != null) {

    sd._jBoss = Boolean.TRUE;

   } else {

    sd._jBoss = Boolean.FALSE;

   }

  }

  return sd._jBoss.booleanValue();

 }

 public static boolean isJetty() {

  ServerUtil sd = _instance;

  if (sd._jetty == null) {

   Class c = sd.getClass();

   if (c.getResource(JETTY_CLASS) != null) {

    sd._jetty = Boolean.TRUE;

   } else {

    sd._jetty = Boolean.FALSE;

   }

  }

  return sd._jetty.booleanValue();

 }

 public static boolean isJOnAS() {

  ServerUtil sd = _instance;

  if (sd._jonas == null) {

   Class c = sd.getClass();

   if (c.getResource(JONAS_CLASS) != null) {

    sd._jonas = Boolean.TRUE;

   } else {

    sd._jonas = Boolean.FALSE;

   }

  }

  return sd._jonas.booleanValue();

 }

 public static boolean isOC4J() {

  ServerUtil sd = _instance;

  if (sd._oc4j == null) {

   Class c = sd.getClass();

   if (c.getResource(OC4J_CLASS) != null) {

    sd._oc4j = Boolean.TRUE;

   } else {

    sd._oc4j = Boolean.FALSE;

   }

  }

  return sd._oc4j.booleanValue();

 }

 public static boolean isOrion() {

  ServerUtil sd = _instance;

  if (sd._orion == null) {

   Class c = sd.getClass();

   if (c.getResource(ORION_CLASS) != null) {

    sd._orion = Boolean.TRUE;

   } else {

    sd._orion = Boolean.FALSE;

   }

  }

  return sd._orion.booleanValue();

 }

 public static boolean isPramati() {

  ServerUtil sd = _instance;

  if (sd._pramati == null) {

   Class c = sd.getClass();

   if (c.getResource(PRAMATI_CLASS) != null) {

    sd._pramati = Boolean.TRUE;

   } else {

    sd._pramati = Boolean.FALSE;

   }

  }

  return sd._pramati.booleanValue();

 }

 public static boolean isResin() {

  ServerUtil sd = _instance;

  if (sd._resin == null) {

   Class c = sd.getClass();

   if (c.getResource(RESIN_CLASS) != null) {

    sd._resin = Boolean.TRUE;

   } else {

    sd._resin = Boolean.FALSE;

   }

  }

  return sd._resin.booleanValue();

 }

 public static boolean isRexIP() {

  ServerUtil sd = _instance;

  if (sd._rexIP == null) {

   Class c = sd.getClass();

   if (c.getResource(REXIP_CLASS) != null) {

    sd._rexIP = Boolean.TRUE;

   } else {

    sd._rexIP = Boolean.FALSE;

   }

  }

  return sd._rexIP.booleanValue();

 }

 public static boolean isSun() {

  if (isSun7() || isSun8()) {

   return true;

  } else {

   return false;

  }

 }

 public static boolean isSun7() {

  ServerUtil sd = _instance;

  if (sd._sun7 == null) {

   Class c = sd.getClass();

   if (c.getResource(SUN7_CLASS) != null) {

    sd._sun7 = Boolean.TRUE;

   } else {

    sd._sun7 = Boolean.FALSE;

   }

  }

  return sd._sun7.booleanValue();

 }

 public static boolean isSun8() {

  ServerUtil sd = _instance;

  if (sd._sun8 == null) {

   Class c = sd.getClass();

   if (c.getResource(SUN8_CLASS) != null) {

    sd._sun8 = Boolean.TRUE;

   } else {

    sd._sun8 = Boolean.FALSE;

   }

  }

  return sd._sun8.booleanValue();

 }

 public static boolean isTomcat() {

  ServerUtil sd = _instance;

  if (sd._tomcat == null) {

   Class c = sd.getClass();

   if (c.getResource(TOMCAT_CLASS) != null) {

    sd._tomcat = Boolean.TRUE;

   } else {

    sd._tomcat = Boolean.FALSE;

   }

  }

  return sd._tomcat.booleanValue();

 }

 public static boolean isWebLogic() {

  ServerUtil sd = _instance;

  if (sd._webLogic == null) {

   Class c = sd.getClass();

   if (c.getResource(WEBLOGIC_CLASS) != null) {

    sd._webLogic = Boolean.TRUE;

   } else {

    sd._webLogic = Boolean.FALSE;

   }

  }

  return sd._webLogic.booleanValue();

 }

 public static boolean isWebSphere() {

  ServerUtil sd = _instance;

  if (sd._webSphere == null) {

   Class c = sd.getClass();

   if (c.getResource(WEBSPHERE_CLASS) != null) {

    sd._webSphere = Boolean.TRUE;

   } else {

    sd._webSphere = Boolean.FALSE;

   }

  }

  return sd._webSphere.booleanValue();

 }

 private ServerUtil() {

 }

 private static Logger _log = Logger.getLogger(ServerUtil.class);

 private static ServerUtil _instance = new ServerUtil();

 private String _serverId;

 private Boolean _geronimo;

 private Boolean _jBoss;

 private Boolean _jetty;

 private Boolean _jonas;

 private Boolean _oc4j;

 private Boolean _orion;

 private Boolean _pramati;

 private Boolean _resin;

 private Boolean _rexIP;

 private Boolean _sun7;

 private Boolean _sun8;

 private Boolean _tomcat;

 private Boolean _webLogic;

 private Boolean _webSphere;   

 

}

分享到:
评论

相关推荐

    渗透测试面试题2019版.docx

    本文总结了渗透测试面试题,包括信息收集、服务器指纹识别、漏洞扫描、提权、日志清理和报告、CMS识别、目录扫描、服务器容器、mysql注入点、手工判断服务器类型等内容,希望能够帮助读者更好地了解渗透测试的技术和...

    判断中间件的类型(tomcat或was等)

    判断中间件的类型,比如判断服务器是否是tomcat或was 等

    asp.net 判断控件类型源码

    在ASP.NET开发中,了解如何判断控件类型是至关重要的,因为这有助于我们根据不同的控件执行特定的操作或实现特定的功能。VB.NET是ASP.NET中常用的一种编程语言,本资源提供了一个关于判断控件类型的源码示例。下面将...

    通过mysql的入侵全过程.pdf

    2. **端口识别**:通过telnet连接到80端口并发送GET请求,获取服务器返回的信息,从而判断服务器类型。在例子中,通过返回的HTML头部信息确定服务器为Apache (Win32)。 3. **Web服务器与数据库的组合**:根据返回的...

    JavaScript判断浏览器类型及版本

    ### JavaScript 判断浏览器类型及版本的方法 在网页开发过程中,有时候我们需要根据用户的浏览器类型和版本来执行特定的代码逻辑或调整界面布局。这是因为不同的浏览器在处理某些特性时可能存在差异,例如对新标准...

    渗透测试面试题2019版.pdf

    快速判断服务器类型** - 利用大小写敏感性差异快速判断服务器的操作系统类型。 **12. 端口问题排查** - 针对3389端口无法连接的情况进行了分析,包括端口未开放、端口号被更改、防护拦截等问题。 **13. 字符注入...

    c#判断上传文件的类型和大小

    为了确保安全性和性能,开发者通常需要验证文件的类型和大小,防止恶意大文件耗尽服务器资源,或者非法文件类型引入安全隐患。下面我们将详细探讨如何在C#中实现这一功能。 首先,我们要知道,文件的类型不完全取决...

    Web安全面试题及答案

    通过尝试访问不同大小写的URL路径,可以根据返回的状态码判断服务器类型。 #### 十、为何一个MySQL数据库的站,只有一个80端口开放? 1. **端口更改**: 数据库端口可能已经被更改为其他端口。 2. **站库分离**: ...

    服务器上文件判断

    上述内容涵盖了获取文件路径、判断文件类型、列举文件列表以及使用文件过滤器等关键知识点。掌握了这些技能后,开发者就能够更加灵活地处理服务器上的文件问题。希望本篇内容能够帮助您更好地理解和运用服务器文件...

    服务器常规维修与判断方法

    还要记录POST期间的异常信息、指示灯状态、报警声、NOS事件记录和Events Log文件,以便于准确判断故障类型和现象,如开机无显示、POST阶段故障、操作系统加载失败等。 在硬件故障处理中,案例分析非常重要。例如,...

    JS判断上传文件的大小类型等限制

    ### JS判断上传文件的大小类型等限制 在Web开发中,文件上传是一个常见的功能需求。为了确保用户体验并防止服务器资源被滥用,前端通常需要对上传的文件进行一系列的验证,如文件大小、文件类型等。本文将详细介绍...

    服务器交接单

    - **开机是否正常运行**:检查服务器开机后能否正常启动并运行,这是判断服务器是否处于良好状态的基础。 #### 3. 配件名称及其详细规格 - **CPU**:中央处理器是服务器的核心部件之一,需要记录其型号、频率等参数...

    服务器端判断Ajax请求

    判断一个请求是否由Ajax发起对于服务器端来说非常重要,尤其是在设计RESTful API或者需要根据请求类型做出不同响应的情况下。通过分析HTTP请求头,特别是`X-Requested-With`标头,我们可以轻松地识别出Ajax请求。...

    php 判断服务器操作系统的类型

    本文将深入探讨如何使用PHP来判断服务器的操作系统类型,并提供相关的函数和预定义变量。 首先,PHP提供了几个内建的系统预定义变量和函数,用于获取关于服务器操作系统的信息: 1. **`php_uname()`** 函数:此...

    上传文件的服务器的解析工具

    在这个例子中,`addBinaryBody`方法用于添加文件到实体中,"file"是服务器端识别的参数名,`new File("path_to_your_file")`是你想要上传的文件,`ContentType.DEFAULT_BINARY`指定文件内容类型为二进制,"filename...

    ASP检测服务器变量情况

    `ServerVariables`集合包含了一系列服务器端的环境变量,这些变量提供了关于客户端请求、服务器配置和系统状态等信息。例如,你可以通过`ServerVariables("REMOTE_ADDR")`获取到访问者的真实IP地址,`...

    服务器维修报告.doc

    总结来说,本报告反映了服务器运维中常见的硬件故障类型和应对策略,强调了及时诊断和修复的重要性,以及冗余硬件配置在保障服务器稳定运行中的作用。同时,报告还展示了在资源有限的情况下如何通过合理调配和替换...

    文件类型判断java

    在IT行业中,文件类型的判断是常见的操作,尤其是在服务器与客户端之间传输文件时。Java作为一种广泛应用于服务器端开发的语言,提供了多种方法来识别文件的真实类型,尤其是当文件后缀名不可靠或者缺失时。本篇文章...

    js判断浏览器类型

    在JavaScript编程中,判断浏览器类型是一项常见的需求,这有助于开发者为不同浏览器提供特定的优化或者兼容性处理。本文将深入探讨如何使用JavaScript来识别用户所使用的浏览器类型。 首先,JavaScript提供了一个...

Global site tag (gtag.js) - Google Analytics