HTML Tutorials |
|
XML Tutorials |
|
Browser Scripting |
|
Server Scripting |
|
.NET (dotnet) |
|
Multimedia |
|
Web Building |
|
Java Tutorials |
|
Programming Langauges |
|
Soft Skills |
|
Database Tutorials |
|
Operating System |
|
Software Testing |
|
SAP Module |
|
Networking Programming |
|
Microsoft Office |
|
Accounting |
|
|
Accès des variables standard de cgi |
Pour établir l'application réussie de Web, vous devez souvent connaître beaucoup l'environnement dans lequel elle fonctionne. Vous pouvez devoir découvrir au sujet du serveur qui exécute vos servlets ou les détails du client qui envoie des demandes. Et n'importe ce que le genre d'environnement l'application fonctionne dedans, vous avez besoin le plus certainement des informations sur les demandes que l'application manipule.
|
Avantages d'employer Servlets au-dessus de cgi
|
- Un type plus fort vérification. En d'autres termes, plus aide de compilateur dans des erreurs contagieuses. Un programme de cgi emploie une fonction pour rechercher sa variable d'environnement. Beaucoup d'erreurs ne peuvent pas être trouvées jusqu'à ce qu'elles posent le problème d'exécution. Regardons comment un programme et les servlets de cgi trouvent le port sur lequel son serveur fonctionne.
Un manuscrit de cgi écrit dans l'appel de Perl : $port = $ENV {« SERVER_PORT »} ; le port est une variable non classée. Un programme de cgi écrit dans l'appel de C : La probabilité pour des erreurs accidentelles est également grande. Le nom de variable d'environnement pourrait être mal épelé ou le type de données ne pourrait pas match ce que la variable d'environnement renvoie.
Un servlet, d'une part, appel :
port interne = req.getServerPort ()
Ceci élimine beaucoup des erreurs accidentelles parce que le compilateur peut garantir qu'il n'y a aucune faute d'orthographe et chaque type de retour est pendant qu'il devrait être.
Calcul retardé. Quand le serveur lance un programme de cgi, la valeur pour chaque variable d'environnement doit être pré-calculée et passée, que le programme de cgi l'emploie ou pas. Un serveur lançant les servlets a l'option pour améliorer l'exécution en retardant ces calculs et en les exécutant sur demande comme nécessaire. Plus d'interaction avec le serveur. Une fois que le programme de cgi commence l'exécution, il est untethered de son serveur. Le seul chemin de communication disponible au programme est son rendement standard. Un servlet, cependant, peut également fonctionner avec le serveur. Comme discuté dans le dernier chapitre, un servlet fonctionne dans le serveur (si possible) ou en tant que de processus relié en dehors du serveur (si nécessaire). En utilisant cette connectivité, un servlet peut faire des demandes ad hoc de a calculé les informations que seulement le serveur peut fournir. Par exemple, un servlet peut avoir son serveur font la traduction arbitraire de chemin, prenant en compte les noms d'emprunt et les chemins virtuels du serveur.
|
Variables d'environnement de cgi et les méthodes correspondantes de Servlet
|
CGI Environment Variable |
HTTP Servlet Method |
SERVER_NAME |
req.getServerName() |
SERVER_SOFTWARE |
getServletContext().getServerInfo() |
SERVER_PROTOCOL |
req.getProtocol() |
SERVER_PORT |
req.getServerPort() |
REQUEST_METHOD |
req.getMethod() |
PATH_INFO |
req.getPathInfo() |
PATH_TRANSLATED |
req.getPathTranslated() |
SCRIPT_NAME |
req.getServletPath() |
DOCUMENT_ROOT |
req.getRealPath("/") |
QUERY_STRING |
req.getQueryString() |
REMOTE_HOST |
req.getRemoteHost() |
REMOTE_ADDR |
req.getRemoteAddr() |
AUTH_TYPE |
req.getAuthType() |
REMOTE_USER |
req.getRemoteUser() |
CONTENT_TYPE |
req.getContentType() |
CONTENT_LENGTH |
req.getContentLength() |
HTTP_ACCEPT |
req.getHeader("Accept") |
HTTP_USER_AGENT |
req.getHeader("User-Agent") |
HTTP_REFERER |
req.getHeader("Referer") |
|
L'exemple suivant lisant toutes variables de cgi
|
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
/** Creates a table showing the values of all the CGI variables.
*
* Part of tutorial on servlets and JSP that appears at
* 1999 Marty Hall; may be freely used or adapted.
*/
public class ShowCGIVariables extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = 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() }
};
String title = "Servlet Example: Showing CGI Variables";
out.println(ServletUtilities.headWithTitle(title) +
"<body bgcolor=\"#FDF5E6\">\n" +
"<h1 align="center"> + title + "</h1>\n" +
"<table boder=1 align="center"\n" +
"<tr bgcolor=\"#FFAD00\">\n" +
"<th>CGI Variable Name<h1>Value");
for(int i=0; i
{
String varName = variables[i][0];
String varValue = variables[i][1];
if (varValue == null)
varValue = "Not specified";
out.println("<tr><td>" + varName + "<td>" + varValue);
}
out.println("</table></body></html>");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
|
|
|
|
Keywords:
cgi tutorial,servlets tutorial,php variables,perl variables,cgi scripts,java servlets,mysql variables,cgi forms
|
|
HTML Quizes |
|
XML Quizes |
|
Browser Scripting Quizes |
|
Server Scripting Quizes |
|
.NET (dotnet) Quizes |
|
Multimedia Quizes |
|
Web Building Quizes |
|
Java Quizes |
|
Programming Langauges Quizes |
|
Soft Skills Quizes |
|
Database Quizes |
|
Operating System Quizes |
|
Software Testing Quizes |
|
SAP Module Quizes |
|
Networking Programming Quizes |
|
Microsoft Office Quizes |
|
Accounting Quizes |
|
|