Por poco q sepamos de internet y sus lenguajes, quién más
quién menos ha abierto una página en su navegador habitual y ha
elegido la opción de ver el código fuente. Si echamos un
vistazo a ese código, observamos q no sólo hay código html,
sino q tambien hay trozos en otro lenguaje de sintaxis parecida
a la de C/Java1. Ese lenguaje se llama
JavaScript2 y lo NetScape Communications en 1995 con
el objetivo de dar dinamismo3 a las páginas
estáticas creadas con html.
Si profundizamos un poco más en el tema aprendemos q hay otro
importante lenguajes de script, llamado VisualBasic Script, y
creado por MicroSoft.
Ambos se denominan así debido a q se ejecutan sin necesidad
de compilación -se interpretan-, y como apoyo a otros
lenguajes.
En un principio estos lenguajes sólo tenían utilidad en la
parte cliente, pero con el paso del tiempo se empezaron a
utilizar en la parte servidor para procesar formularios, y
posteriormente para acceder a archivos del servidor, Bases de
datos, etc...
ASP( active server pages) es simplemente un lenguaje de
script q se escribe del lado del servidor.
Para escribirlo podemos usar tanto VBS como JS4,
con la increible mejora de q ahora sí q podemos acceder a los
recursos de nuestra máquina/servidor (en la del cliente estamos
muy restringidos por el problema de la seguridad).
Mucha gente se preguntará "Pues yo antes tambien veía q
se procesaban elementos en el servidor, y no existía asp".
Sí, efectivamente, tanto en el pasado (aplicaciones CGI con
PERL) como ahora (JSP, PHP, etc..) se utilizan otros medios
para realizar estas operaciones; sin embargo ASP está tomando
ventaja debido a su sencillez y flexibilidad; me explico: ASP
"no requiere" prácticamente proceso de aprendizaje, pues la
mayoría de los q acceden a este lenguaje ya conocen el
funcionamiento de los lenguajes de script en la parte cliente;
tan sólo tendrán q añadir conocimientos a los q ya poseen.
Por otra parte, es un lenguaje flexible, pues te permite
seguir con tu editor html (ASP se incrusta dentro del html),
insertando sólo las sentencias q creas oportunas para llevar a
cabo la operación adecuada.
Práctica
Yo creo q lo mejor para aprender en esta vida es practicar y
sacar conclusiones a partir de ello comparando con la
teoría5.
Para incluir sentencias dentro de una página ASP debes
incluirlas entre los tags <% y %>; Únicamente con saber
esto ya puedes empezar a trabajar; veamos un ejemplo:
1. Pru.asp
<%@languaje="JScript"%>
<!-- Esta sentencia indica el lenguaje de script a manejar;
no es obligatoria -incluso la puedes configurar en al IIS
dentro del correspondiente directorio virtual- pero es muy
importante a nivel informativo -y necesaria si usas Jscript y
no lo configuras en el IIS
-->
<html>
<head>
<title>Prueba en asp - Javieryjorge.com</title>
</head>
<body>
<%
Response.write("Hola desde
asp");
%>
</body>
</html>
NOTAS:
-Los tags <% %> se pueden situar en cualquier lugar del
documento.
-El response.write() significa lo siguiente:
Response es un objeto q sólo existe en el servidor, y q se usa
para enviarle respuestas al cliente. El método write
funciona de forma similar al método write del objeto document
en JavaScript.
Este método es tan utilizado q se ha inventado una forma de
abreviarlo: <%=
Así <%="Hola%> es como escribir
<%Response.write("Hola")%>
-Mucha gente se preguntará si este archivo asp se podría
escribirse en html; la respuesta es q sí, ya q este script
realmente no aporta nada. Ej:
<html>
<head>
<title>Prueba en asp </title>
</head>
<body>
Hola desde asp
</body>
</html>
Si ejecutas estas lineas en tu navegador obtendrás el mismo
resultado q con las primeras.
¿Y entonces?
Pues si quieres hacer cosas "sencillas" no tienes xq usar asp;
te basta con enviar una pág q combine html y JavaScript. Pero
si quieres procesar información y generar una página a partir
de esa información recibida, asp es tu mejor solución.
EJ: Imagina q un usuario tiene privilegios sobre los demás;
¿como puedes darle sólo a él accesos a determinada
información?
Pues le obligas a q ponga su nombre en un campo de formulario y
lo enviás al servidor; este comprueba ese nombre en un archivo,
base de datos o incluso comparandolo con una cte de txt q haya
dentro del propio archivo; si el nombre es el adecuado, le
mandas la info pedida; si no lo es, le mandas un mensajito: "Lo
siento, pero vd no tiene los privilegios suficientes para
acceder a la información solicitada".
Este script utiliza un formulario con dos casillas, una para
el nombre del usuario y otra para q indique su comida
favorita.
Está formada por 2 archivos; formulario.htm (q es htm xq sólo
visualiza info, por lo q no es necesario usar asp) y
paginaPrivada.asp (pág q queremos proteger)
2.a
Formulario.htm
<html>
<body>
<form method="POST" action="pag.asp">
Usuario:
<input type="text" name="usuario" size="10"><br>
Teclea el nombre de tu mascota ó comida favorita:
<input type="password" name="password"
size="10"><br>
<input type="submit" value="Enviar" name="enviar">
</p>
</form>
El formulario envia los datos ingresados a paginaprivada.asp
para su proceso.
2.b
paginaPrivada.asp
<%@languaje="VBScript"%> <%
' Recojemos los datos del formulario
usu = Request.Form("usuario")
pass = Request.Form("password")
' Comparamos a ver si son
correctos
if usu = "Juanito" AND pass="lentejas" then
valido="si"
else
valido="no"
end if
%>
<html>
<head>
<title>Pagina de Juanito -
Javieryjorge.com</title>
</head>
<body> <% if valido="si" then 'A
continuaci�n meto todo el contenido de la pagina
privada%>
<p>BIENVENIDO,<%=usu%></p>
<br>Aquí tienes el listado de tu BDD:
<%else%>
<p>Lo siento, pero vd no tiene los privilegios
suficientes para acceder a la información
solicitada</p>
<% end if%>
</body>
</html>
NOTAS:
-Como observarás este ej es ya un poquito más
complejo.(Respecto al 1er archivo no digo nada, pues
es puro html.)
-Lo primero q hay q hacer siempre en este tipo de archivos
es recoger los datos del formulario en variables, ya q si no,
cada vez q queramos usar los datos tendremos q poner el tocho
de Request.form(...), además d q este objeto no lo podeis
modificar ad Hoc.
-Request es el objeto q trae toda la info q nos proporcione la
máquina cliente (datos del formulario en métodos get y post,
cookies y certificados).
-form() es el método q recoge los datos enviados por el método
Post y querystring() el q recoge los datos enviados por el
método Get.
-Usuario y password son los nombres de los campos del
formulario enviado; dentro de los métodos de los objetos del
servidor(Response, Request, ...) siempre van entre comillas.
-Los comentarios se ponen como en VBScript (con la
comilla)
-El resto de la sintaxis(if y asignación), como veis , es
exactamente igual q si trabajaseis con VBScript.
-Aunq la mayoría de los archivos asp usan VBScript, yo
prefiero Jscript; usar uno u otro normalmente es totalmente
indiferente; de hecho el arch anterior podría ser así:
<%@languaje="JScript"%> <%
// Recojemos los datos del formulario
usu = Request.Form("usuario")
pass = Request.Form("password")
// Comparamos a ver si son
correctos
if (usu == "Juanito" && pass=="lentejas")
valido="si";
else
valido="no";
%>
<html>
<head>
<title>Pagina de Juanito -
Javieryjorge.com</title>
</head>
<body> <% if (valido=="si"){ //A
continuaci�n meto todo el contenido de la pagina
privada%>
<p>BIENVENIDO,<%=usu%></p>
<br>Aquí tienes el listado de tu BDD:
<%}else{%>
<p>Lo siento, pero vd no tiene los privilegios
suficientes para acceder a la información
solicitada</p>
<%}//else%>
</body>
</html>
Como veis prácticamente no hay cambios (sólo la sintaxis del
if y de los comentarios)
Notas numéricas:
1. La mayoría de las páginas de hoy en día llevan algún
JavaScript
2. VBscript se usa muchísimo menos desde el punto de vista del
cliente
3. Las páginas html, una vez q se cargan en cliente, son
inútiles, ya q haga lo q haga el cliente no pasará nada; con
JS/VBS el código pasa de estático a dinámico, cambiando (si se
quiere, claro) el contenido de la misma a partir de diversas
actuaciones del usuario.
4. en realidad es Microsoft Jscript en lugar de JavaScript lo q
nos permiten, pero como JScript es una copia casi exacta de
JavaScript hecha por Microsoft...
5. La referencia sobre los objetos del servidor, sus
propiedades métodos, etc... la puedes sacar de la referencia de
MS (x ej):http://msdn.microsoft.com/