⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 38.html

📁 写给JSP初级程序员的书
💻 HTML
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
        applet, applets, directory, news, jdbc, applications, 
        Java applications, Java developer, Java development, developer, 
        classes, Jars.com, Jars, intranet, Java applet, Javabeans, 
        Java products, JDK, Java development kit, java development environment, JIT,
        JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources, 
        SUN, CGI, Perl, database, network, html,
        xml, dhtml, rating, ratings, review, jars, cgi, programming,
        software review, software rating">
<title>csdn_六、访问CGI变量</title>
<style>
.news {   BACKGROUND: #007cd3;  font-family: "宋体"; font-size: 9pt }
.t {  font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3;  font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>

<body
<center>




  <tr>
    <td WIDTH="100%" VALIGN="TOP">
      <tr>
        <td WIDTH="100%" CLASS="white"></td>
      </tr>
    
      <tr>
        <td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>六、访问CGI变量</td>
       <p> <td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>作者:仙人掌工作室</td></p>
      </tr>
      <tr>        <td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
              <br>   
六、访问CGI变量<br>

<br>
<br>
   6.1 CGI变量概述 <br>
<br>
   如果你是从传统的CGI编程转而学习Java Servlet,或许已经习惯了“CGI变量”这一概念。CGI变量汇集了各种有关请求的信息: <br>
<br>
部分来自HTTP请求命令和请求头,例如Content-Length头; <br>
部分来自Socket本身,例如主机的名字和IP地址; <br>
也有部分与服务器安装配置有关,例如URL到实际路径的映射。 <br>
   6.2 标准CGI变量的Servlet等价表示 <br>
<br>
   下表假定request对象是提供给doGet和doPost方法的HttpServletRequest类型对象。 CGI变量&nbsp;&nbsp;含义&nbsp;&nbsp;从doGet或doPost访问&nbsp;&nbsp;<br>
AUTH_TYPE&nbsp;&nbsp;如果提供了Authorization头,这里指定了具体的模式(basic或者digest)。&nbsp;&nbsp;request.getAuthType()&nbsp;&nbsp;<br>
CONTENT_LENGTH&nbsp;&nbsp;只用于POST请求,表示所发送数据的字节数。&nbsp;&nbsp;严格地讲,等价的表达方式应该是String.valueOf(request.getContentLength())(返回一个字符串)。但更常见的是用request.getContentLength()返回含义相同的整数。&nbsp;&nbsp;<br>
CONTENT_TYPE&nbsp;&nbsp;如果指定的话,表示后面所跟数据的类型。&nbsp;&nbsp;request.getContentType()&nbsp;&nbsp;<br>
DOCUMENT_ROOT&nbsp;&nbsp;与http://host/对应的路径。&nbsp;&nbsp;getServletContext().getRealPath(&quot;/&quot;) <br>
注意低版本Servlet规范中的等价表达方式是request.getRealPath(&quot;/&quot;)。 <br>
<br>
HTTP_XXX_YYY&nbsp;&nbsp;访问任意HTTP头。&nbsp;&nbsp;request.getHeader(&quot;Xxx-Yyy&quot;)&nbsp;&nbsp;<br>
PATH_INFO&nbsp;&nbsp;URL中的附加路径信息,即URL中Servlet路径之后、查询字符串之前的那部分。&nbsp;&nbsp;request.getPathInfo()&nbsp;&nbsp;<br>
PATH_TRANSLATED&nbsp;&nbsp;映射到服务器实际路径之后的路径信息。&nbsp;&nbsp;request.getPathTranslated()&nbsp;&nbsp;<br>
QUERY_STRING&nbsp;&nbsp;这是字符串形式的附加到URL后面的查询字符串,数据仍旧是URL编码的。在Servlet中很少需要用到未经解码的数据,一般使用getParameter访问各个参数。&nbsp;&nbsp;request.getQueryString()&nbsp;&nbsp;<br>
REMOTE_ADDR&nbsp;&nbsp;发出请求的客户机的IP地址。&nbsp;&nbsp;request.getRemoteAddr()&nbsp;&nbsp;<br>
REMOTE_HOST&nbsp;&nbsp;发出请求的客户机的完整的域名,如java.sun.com。如果不能确定该域名,则返回IP地址。&nbsp;&nbsp;request.getRemoteHost()&nbsp;&nbsp;<br>
REMOTE_USER&nbsp;&nbsp;如果提供了Authorization头,则代表其用户部分。它代表发出请求的用户的名字。&nbsp;&nbsp;request.getRemoteUser()&nbsp;&nbsp;<br>
REQUEST_METHOD&nbsp;&nbsp;请求类型。通常是GET或者POST。但偶尔也会出现HEAD,PUT, DELETE,OPTIONS,或者 TRACE.&nbsp;&nbsp;request.getMethod()&nbsp;&nbsp;<br>
SCRIPT_NAME&nbsp;&nbsp;URL中调用Servlet的那一部分,不包含附加路径信息和查询字符串。&nbsp;&nbsp;request.getServletPath()&nbsp;&nbsp;<br>
SERVER_NAME&nbsp;&nbsp;Web服务器名字。&nbsp;&nbsp;request.getServerName()&nbsp;&nbsp;<br>
SERVER_PORT&nbsp;&nbsp;服务器监听的端口。&nbsp;&nbsp;严格地说,等价表达应该是返回字符串的String.valueOf(request.getServerPort())。但经常使用返回整数值的request.getServerPort()。&nbsp;&nbsp;<br>
SERVER_PROTOCOL&nbsp;&nbsp;请求命令中的协议名字和版本(即HTTP/1.0或HTTP/1.1)。&nbsp;&nbsp;request.getProtocol()&nbsp;&nbsp;<br>
SERVER_SOFTWARE&nbsp;&nbsp;Servlet引擎的名字和版本。&nbsp;&nbsp;getServletContext().getServerInfo()&nbsp;&nbsp;<br>
<br>
<br>
   6.3 实例:读取CGI变量 <br>
<br>
   下面这个Servlet创建一个表格,显示除了HTTP_XXX_YYY之外的所有CGI变量。HTTP_XXX_YYY是HTTP请求头信息,请参见上一节介绍。 <br>
<br>
   ShowCGIVariables.java <br>
package hall;<br>
<br>
import java.io.*;<br>
import javax.servlet.*;<br>
import javax.servlet.http.*;<br>
import java.util.*;<br>
<br>
public class ShowCGIVariables extends HttpServlet {<br>
&nbsp;&nbsp;public void doGet(HttpServletRequest request,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws ServletException, IOException {<br>
&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(&quot;text/html&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter out = response.getWriter();<br>
&nbsp;&nbsp;&nbsp;&nbsp;String[][] variables =<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ { &quot;AUTH_TYPE&quot;, request.getAuthType() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;CONTENT_LENGTH&quot;, String.valueOf(request.getContentLength()) },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;CONTENT_TYPE&quot;, request.getContentType() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;DOCUMENT_ROOT&quot;, getServletContext().getRealPath(&quot;/&quot;) },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;PATH_INFO&quot;, request.getPathInfo() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;PATH_TRANSLATED&quot;, request.getPathTranslated() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;QUERY_STRING&quot;, request.getQueryString() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;REMOTE_ADDR&quot;, request.getRemoteAddr() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;REMOTE_HOST&quot;, request.getRemoteHost() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;REMOTE_USER&quot;, request.getRemoteUser() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;REQUEST_METHOD&quot;, request.getMethod() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;SCRIPT_NAME&quot;, request.getServletPath() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;SERVER_NAME&quot;, request.getServerName() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;SERVER_PORT&quot;, String.valueOf(request.getServerPort()) },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;SERVER_PROTOCOL&quot;, request.getProtocol() },<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &quot;SERVER_SOFTWARE&quot;, getServletContext().getServerInfo() }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>
&nbsp;&nbsp;&nbsp;&nbsp;String title = &quot;显示CGI变量&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;out.println(ServletUtilities.headWithTitle(title) +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<BODY BGCOLOR=\&quot;#FDF5E6\&quot;>\n&quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<H1 ALIGN=CENTER>&quot; + title + &quot;</H1>\n&quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<TABLE BORDER=1 ALIGN=CENTER>\n&quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<TR BGCOLOR=\&quot;#FFAD00\&quot;>\n&quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<TH>CGI Variable Name<TH>Value&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0; i<variables.length; i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String varName = variables[i][0];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String varValue = variables[i][1];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (varValue == null)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varValue = &quot;<I>Not specified</I>&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;<TR><TD>&quot; + varName + &quot;<TD>&quot; + varValue);<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;</TABLE></BODY></HTML>&quot;);<br>
&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;public void doPost(HttpServletRequest request,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws ServletException, IOException {<br>
&nbsp;&nbsp;&nbsp;&nbsp;doGet(request, response);<br>
&nbsp;&nbsp;}<br>
}      <br>   
      <br>   
        </td>
      </tr>
      <tr><td colspan=2 align=right class=t> <a href="http://www.chinajavaworld.com/doc/servlet-jsp/32.html" ></a>  <a href="37.html" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/37.html" ></a> <a href="39.html" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/39.html" ></a>       </td></tr>
    </td>
  </tr>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -