|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊cgi|js|servlet|变量|会见
6.1CGI变量概述
假如你是从传统的CGI编程转而进修JavaServlet,也许已习气了“CGI变量”这一观点。CGI变量搜集了各类有关哀求的信息:
部分来自HTTP哀求命令和哀求头,比方Content-Length头;
部分来自Socket自己,比方主机的名字和IP地点;
也有部分与服务器安拆卸置有关,比方URL到实践路径的映照。
6.2尺度CGI变量的Servlet等价暗示
下表假定request对象是供应给doGet和doPost办法的HttpServletRequest范例对象。CGI变量寄义从doGet或doPost会见
AUTH_TYPE假如供应了Authorization头,这里指定了详细的形式(basic大概digest)。request.getAuthType()
CONTENT_LENGTH只用于POST哀求,暗示所发送数据的字节数。严厉地讲,等价的表达体例应当是String.valueOf(request.getContentLength())(前往一个字符串)。但更罕见的是用request.getContentLength()前往寄义不异的整数。
CONTENT_TYPE假如指定的话,暗示前面所跟数据的范例。request.getContentType()
DOCUMENT_ROOT与http://host/对应的路径。getServletContext().getRealPath("/")
注重低版本Servlet标准中的等价表达体例是request.getRealPath("/")。
HTTP_XXX_YYY会见恣意HTTP头。request.getHeader("Xxx-Yyy")
PATH_INFOURL中的附加路径信息,即URL中Servlet路径以后、查询字符串之前的那部分。request.getPathInfo()
PATH_TRANSLATED映照到服务器实践路径以后的路径信息。request.getPathTranslated()
QUERY_STRING这是字符串情势的附加到URL前面的查询字符串,数据仍然是URL编码的。在Servlet中很少必要用到未经解码的数据,一样平常利用getParameter会见各个参数。request.getQueryString()
REMOTE_ADDR收回哀求的客户机的IP地点。request.getRemoteAddr()
REMOTE_HOST收回哀求的客户机的完全的域名,如java.sun.com。假如不克不及断定该域名,则前往IP地点。request.getRemoteHost()
REMOTE_USER假如供应了Authorization头,则代表其用户部分。它代表收回哀求的用户的名字。request.getRemoteUser()
REQUEST_METHOD哀求范例。一般是GET大概POST。但偶然也会呈现HEAD,PUT,DELETE,OPTIONS,大概TRACE.request.getMethod()
SCRIPT_NAMEURL中挪用Servlet的那一部分,不包括附加路径信息和查询字符串。request.getServletPath()
SERVER_NAMEWeb服务器名字。request.getServerName()
SERVER_PORT服务器监听的端口。严厉地说,等价表达应当是前往字符串的String.valueOf(request.getServerPort())。但常常利用前往整数值的request.getServerPort()。
SERVER_PROTOCOL哀求命令中的协定名字和版本(即HTTP/1.0或HTTP/1.1)。request.getProtocol()
SERVER_SOFTWAREServlet引擎的名字和版本。getServletContext().getServerInfo()
6.3实例:读取CGI变量
上面这个Servlet创立一个表格,显现除HTTP_XXX_YYY以外的一切CGI变量。HTTP_XXX_YYY是HTTP哀求头信息,请拜见上一节先容。
ShowCGIVariables.java
packagehall;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.util.*;
publicclassShowCGIVariablesextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();
String[][]variables=
{{"AUTH_TYPE",request.getAuthType()},
{"CONTENT_LENGTH",String.valueOf(request.getContentLength())},
{"CONTENT_TYPE",request.getContentType()},
{"DOCUMENT_ROOT",getServletContext().getRealPath("/")},
{"PATH_INFO",request.getPathInfo()},
{"PATH_TRANSLATED",request.getPathTranslated()},
{"QUERY_STRING",request.getQueryString()},
{"REMOTE_ADDR",request.getRemoteAddr()},
{"REMOTE_HOST",request.getRemoteHost()},
{"REMOTE_USER",request.getRemoteUser()},
{"REQUEST_METHOD",request.getMethod()},
{"SCRIPT_NAME",request.getServletPath()},
{"SERVER_NAME",request.getServerName()},
{"SERVER_PORT",String.valueOf(request.getServerPort())},
{"SERVER_PROTOCOL",request.getProtocol()},
{"SERVER_SOFTWARE",getServletContext().getServerInfo()}
};
Stringtitle="显现CGI变量";
out.println(ServletUtilities.headWithTitle(title)+
"<BODYBGCOLOR=\"#FDF5E6\">\n"+
"<H1ALIGN=CENTER>"+title+"</H1>\n"+
"<TABLEBORDER=1ALIGN=CENTER>\n"+
"<TRBGCOLOR=\"#FFAD00\">\n"+
"<TH>CGIVariableName<TH>Value");
for(inti=0;i<variables.length;i++){
StringvarName=variables[0];
StringvarValue=variables[1];
if(varValue==null)
varValue="<I>Notspecified</I>";
out.println("<TR><TD>"+varName+"<TD>"+varValue);
}
out.println("</TABLE></BODY></HTML>");
}
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点 |
|