In XPages, CGI variables are also available, but you need to write some code to get them via the JSF context.

Here is a complete, functional JavasScript example of how to get and print the remote address of the incoming browser request:

print("Remote Address: " + facesContext.getExternalContext().getRequest().getRemoteAddr());

This server-side JavaScript library makes most useful CGI variables conveniently available in a new "CGIVariables" JavaScript object:

/* 
      This server-side JavaScript library implements a class named "CGIVariables" which allows for easy access 
      to most CGI variables in XPages via JavaScript. 
      For example, to dump the remote users name, IP address and browser string to the server console, use: 

      var cgi = new CGIVariables(); 
      print ("Username: " + cgi.REMOTE_USER); 
      print ("Address : " + cgi.REMOTE_ADDR); 
      print ("Browser : " + cgi.HTTP_USER_AGENT); 
              
      Written July 2008 by Thomas Gumz, IBM. 
*/ 

function CGIVariables() { 

      // setup our object by getting refs to the request and servlet objects         
      try { 
              this.request = facesContext.getExternalContext().getRequest(); 
              this.servlet = facesContext.getExternalContext().getContext(); 
      } catch(e) { 
              print (e.message); 
      } 

      this.prototype.AUTH_TYPE            = this.request.getAuthType(); 
      this.prototype.CONTENT_LENGTH       = this.request.getContentLength(); 
      this.prototype.CONTENT_TYPE         = this.request.getContentType(); 
      this.prototype.CONTEXT_PATH         = this.request.getContextPath(); 
      this.prototype.GATEWATY_INTERFACE   = "CGI/1.1"; 
      this.prototype.HTTPS                = this.request.isSecure() ? "ON" : "OFF"; 
      this.prototype.PATH_INFO            = this.request.getPathInfo(); 
      this.prototype.PATH_TRANSLATED      = this.request.getPathTranslated(); 
      this.prototype.QUERY_STRING         = this.request.getQueryString(); 
      this.prototype.REMOTE_ADDR          = this.request.getRemoteAddr(); 
      this.prototype.REMOTE_HOST          = this.request.getRemoteHost(); 
      this.prototype.REMOTE_USER          = this.request.getRemoteUser(); 
      this.prototype.REQUEST_METHOD       = this.request.getMethod(); 
      this.prototype.REQUEST_SCHEME       = this.request.getScheme(); 
      this.prototype.REQUEST_URI          = this.request.getRequestURI(); 
      this.prototype.SCRIPT_NAME          = this.request.getServletPath(); 
      this.prototype.SERVER_NAME          = this.request.getServerName(); 
      this.prototype.SERVER_PORT          = this.request.getServerPort(); 
      this.prototype.SERVER_PROTOCOL      = this.request.getProtocol(); 
      this.prototype.SERVER_SOFTWARE      = this.servlet.getServerInfo(); 

      // these are not really CGI variables, but useful, so lets just add them for convenience 
      this.prototype.HTTP_ACCEPT          = this.request.getHeader("Accept"); 
      this.prototype.HTTP_ACCEPT_ENCODING = this.request.getHeader("Accept-Encoding"); 
      this.prototype.HTTP_ACCEPT_LANGUAGE = this.request.getHeader("Accept-Language"); 
      this.prototype.HTTP_CONNECTION      = this.request.getHeader("Connection"); 
      this.prototype.HTTP_COOKIE          = this.request.getHeader("Cookie");         
      this.prototype.HTTP_HOST            = this.request.getHeader("Host");         
      this.prototype.HTTP_REFERER         = this.request.getHeader("Referer"); 
      this.prototype.HTTP_USER_AGENT      = this.request.getHeader("User-Agent"); 
}

You can also find this server-side JavaScript library in the Domino 8.5 "discussion8.ntf" template as "xpCGIVariables..jss". 
Below is a sample XPage which uses the script library to print some CGI variables to the server console:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" 
      xmlns:xc="http://www.ibm.com/xsp/custom" createForm="false"> 
      <xp:this.resources> 
              <xp:script src="/xpCGIVariables.jss" clientSide="false"></xp:script> 
      </xp:this.resources> 
      <xp:this.beforePageLoad><![CDATA[#{javascript:var cgi = new CGIVariables(); 
print ("Username: " + cgi.REMOTE_USER); 
print ("Address : " + cgi.REMOTE_ADDR); 
print ("Browser : " + cgi.HTTP_USER_AGENT); 
}]]></xp:this.beforePageLoad> 
</xp:view>



Note: For performance reasons, it is recommended to cache CGI variables (for example, in the sessionScope) once you retrieved the

XPAGES 中CGI变量的获取的更多相关文章

  1. dos中定义变量与获取常见的引用变量以及四则运算、备份文件(set用法)

    在dos中使用set定义变量: set  a=8              (注意等号两边没有空格) 引用变量如: echo  %a%        将打印a的值 (%a%是获取变量a的值) dos中 ...

  2. smarty获取php中的变量

    {$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量.例如,直接在模板中访问页面请求变量.获取访问模板时的时间邮戳.直接访问PHP ...

  3. C#中在内容页获取其模板页中的变量,或者值

    在CSDN的博文中看到了 muziduoxi 的文章:http://blog.csdn.net/muziduoxi/article/details/5386543 虽然里面提到的方法没有解决我的难题, ...

  4. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  5. docker-compose 布署应用nginx中的create-react-app应用获取环境变量

    文章来源:https://www.freecodecamp.org/news/how-to-implement-runtime-environment-variables-with-create-re ...

  6. PHP中环境变量的操作

    在 PHP 中,我们可以通过 phpinfo() 查看到当前系统中的环境变量信息(Environment).在代码中,我们也可以通过两个函数,查看和修改相应的环境变量信息. getenv() 获取环境 ...

  7. Linux中环境变量文件及配置

    Linux中环境变量文件及配置   一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...

  8. 浅谈JavaScript中的变量、参数、作用域和作用域链

    基本类型和引用类型 在JavaScript中有两种数据类型值.基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是可能由多个值构成的对象.在JavaScript中有5种基本数据类型 ...

  9. Linux中环境变量文件及配置(转载)

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...

随机推荐

  1. Java(C#)基础差异-语法

    1.long类型 Java long类型,若赋值大于int型的最大值,或小于int型的最小值,则需要在数字后加L或者l,表示该数值为长整数,如long num=2147483650L. 举例如下: p ...

  2. 伯努利分布、二项分布、Beta分布、多项分布和Dirichlet分布与他们之间的关系,以及在LDA中的应用

    在看LDA的时候,遇到的数学公式分布有些多,因此在这里总结一下思路. 一.伯努利试验.伯努利过程与伯努利分布 先说一下什么是伯努利试验: 维基百科伯努利试验中: 伯努利试验(Bernoulli tri ...

  3. YAML文件简介

    编程免不了要写配置文件,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 本文介绍 YAML 的语法,以 JS-YAML 的实现为例.你可以去 ...

  4. sulime代理设置、插件管理

    使用command palette或者package control,可以管理插件:安装.更新.启动.关闭插件.卸载插件等 配置Package Control 配置举例: { "bootst ...

  5. Unicode和UTF-8之间的关系

    作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步 ...

  6. 分析器错误消息: 未能找到 CodeDom 提供程序类型

    ylbtech-Error-WebForm:分析器错误消息: 未能找到 CodeDom 提供程序类型“Microsoft.CodeDom.Providers.DotNetCompilerPlatfor ...

  7. Add Binary Leetcode java

    题目: Given two binary strings, return their sum (also a binary string). For example, a = "11&quo ...

  8. Visitor 访问者模式 MD

    访问者模式 简介 访问者模式是设计模式中相对比较复杂的一个,项目中可能见得非常少. 定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下,定义作用于这些元素的新的操作. 表示 ...

  9. linux命令大全网站

    一. linux命令大全网站 http://man.linuxde.net/watch

  10. Mongoose的分页功能

    来自: https://github.com/edwardhotchkiss/mongoose-paginate   拷贝如下: Note: This plugin will only work wi ...