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 |
|
|
Accesso a delle variabili standard del cgi |
Per sviluppare l'applicazione riuscita di fotoricettore, dovete spesso conoscere mólto circa l'ambiente in cui sta funzionando. Potete avere bisogno di di scoprire circa l'assistente che sta eseguendo i vostri servlets o gli specifics del cliente che sta trasmettendo le richieste. E qualunque cosa il genere di ambiente l'applicazione stia funzionando dentro, il più certamente avete bisogno delle informazioni sulle richieste che l'applicazione sta maneggiando.
|
Vantaggi di usando Servlets sopra il cgi
|
- Tipo più forte controllare. Cioè più aiuto dal compilatore negli errori catching. Un programma del cgi usa una funzione per richiamare la relativa variabile di ambiente. Molti errori non possono essere trovati fino a che non causino il problema runtime. Guardiamo come sia un programma che i servlets del cgi trovano l'orificio su cui il relativo assistente sta funzionando.
Uno scritto del cgi scritto nella chiamata del Perl: $port = $ENV {“SERVER_PORT„}; l'orificio è una variabile non archiviata. Un programma del cgi scritto nella chiamata di C: La probabilità per gli errori accidentali è inoltre alta. Il nome di variabile di ambiente potrebbe essere sbagliato l'ortografia di o il tipo di dati non potrebbe abbinare che cosa la variabile di ambiente restituisce.
Un servlet, d'altra parte, chiamata:
int port = req.getServerPort ()
Ciò elimina gli errori accidentali molto perché il compilatore può garantire che non ci sono errori d'ortografia ed ogni tipo di ritorno è mentre dovrebbe essere.
Calcolo in ritardo. Quando l'assistente lancia un programma del cgi, il valore per ogni variabile di ambiente deve essere precalcolato e passato, se il programma del cgi la usa oppure no. Un assistente che lancia i servlets ha l'opzione per migliorare le prestazioni da delaying questi calcoli ed effettuarle su richiesta come stato necessario. Più interazione con l'assistente. Una volta che il programma del cgi comincia l'esecuzione, è untethered dal relativo assistente. L'unico percorso di comunicazione disponibile al programma è la relativa uscita standard. Un servlet, tuttavia, può anche funzionare con l'assistente. Come discusso nell'ultimo capitolo, un servlet funziona all'interno dell'assistente (una volta possibile) o come trattato collegato fuori dell'assistente (se necessario). Usando questa connettività, un servlet può fare le richieste ad-hoc per ha calcolato le informazioni che soltanto l'assistente può fornire. Per esempio, un servlet può avere relativo assistente fa la traduzione arbitraria del percorso, prendente in considerazione gli pseudonimi ed i percorsi virtuali dell'assistente.
|
Variabili di ambiente del cgi ed i metodi corrispondenti di 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") |
|
Il seguente esempio che legge tutte le variabili del 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 |
|
|