Sisinf 7.2 + --> Páginas dinámicas

Páginas dinámicas HTML

Sisinf 7.2 +

Bajar documento en formato MS-WORD (.DOC) Instructivo para Windows XP
Índice
1. Introducción. 5. URL en los HTML.
2. Estructura del programa de Sisinf. 6. Otra manera de leer información.
3. Inicio de sesión. 7. Parámetros del servidor.
4. Otras opciones. 8. Recomendaciones.




1. Introducción.

El presente instructivo sirve para explicar la nueva opción de SISINF de páginas dinámicas de HTML.

Desde la versión 7.0 de SISINF se puede ejecutar cualquier programa desde Internet en dos formas, una mediante la instalación del Emulador Sisinf y así mediante un icono accesar la aplicación, otra mediante un buscador. Esta última quizá un poco lenta para consultas pequeñas y ocasionales, dado que se tenían que cargar los archivos JAR.

Así se inicia la opción de páginas dinámicas que consiste en generar HTML con la información del banco de datos de Sisinf, pensando en aquellos usuarios ocasionales y de consultas pequeñas.

Importante recalcar que esta opción NO sustituye al emulador ya que su uso es en las condiciones señaladas y que además, el consumo de recursos es mayor.

Para que Usted pueda hacer uso de esta opción necesita:

Existen varios productos en el mercado, algunos de ellos sin costo como son Apache y Tomcat que sirven como servidores de paginas estáticas y dinámicas.

El funcionamiento general de la opción partiendo de que Usted tiene una o varias páginas estáticas; es poner en una de ellas una liga (URL) especial, con la cual se pide la ejecución de un programa hecho con la tecnología de JAVA Servlet, dicho programa es el que se encarga de procesar las páginas dinámicas de Sisinf.

Al ejecutarse este programa pide a su vez la ejecución de un programa de Sisinf en el módulo ELSI. Este programa será el encargado de generar las páginas, así como de leer la información que se considere adecuada.

Un ejemplo sencillo puede ser aquel en que el programa de Sisinf forma una página para pedir ciertos datos y la envía al usuario, una vez que el usuario da la información, el programa la lee y mediante una consulta al Banco de Datos genera una nueva página con el resultado de su consulta.

En este proceso cada "cliente" es independiente y cada uno tiene un ELSI para ejecutar su programa de Sisinf.

Se asume lo siguiente para este instructivo:





2. Estructura del programa de Sisinf.

Los programas de Sisinf para esta opción deben de cumplir con ciertos requisitos o se dará un error en la ejecución de los mismos.

En forma general la estructura que se repite dentro de los mismos es:

  1. Generar la página HTML y enviarla.

  2. Leer información del usuario.

  3. Buscar en el banco de datos de Sisinf la información deseada.

  4. Volver a formar otra página.

Un caso especial es omitir los puntos 2 y 3, en cuyo caso se genera una página HTML y cuando se ejecute una liga de regreso se genera otra.

También el punto 3 se puede omitir si la página generada es un menú.

Las instrucciones de SISINF para generar una página y enviarla son:

ESCRIBIR TERMINAL 'Inicio-HTML'
OPCION TEMPORAL 10 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO
ESCRIBIR TEMPORAL 10 ''
.....
OPCION TEMPORAL 10

La explicación es la siguiente:

En el programa PSINA0 se puede observar que se repite esta estructura.

La forma de leer información va relacionada con la página generada, la cual tiene que tener FORMAS. Así en el programa PSINA0 la primera página desplegada pide el número y la clave para con eso saber quien es el usuario. La forma se genera como:

<FORM ACTION="&Sisinf-URL" METHOD=POST><CENTER>
Teclee su número <INPUT TYPE="TEXT" NAME="numero"<<BR><BR>
Teclee su clave <INPUT TYPE="PASSWORD" NAME="clave"<<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Entrap">
</FORM>

Para leer la información se puso en el programa:

LEER TERMINAL EJECUTA 15 'numero' NUM-CVE
LEER TERMINAL EJECUTA 15 'clave' CVE-CVE

Los siguientes comentarios son aplicables:

La lógica completa del programa seria:

IND-ERROR = 0
10     ESCRIBIR TERMINAL 'Inicio-HTML'
OPCION TEMPORAL 10 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO
ESCRIBIR TEMPORAL 10 '<HTML>'
ESCRIBIR TEMPORAL 10 '<HEAD><TITLE> Prueba de internet </TITLE></HEAD>'
ESCRIBIR TEMPORAL 10 '<BODY BGCOLOR="#FDF5E6">'
ESCRIBIR TEMPORAL 10 '<H1 ALIGN="CENTER">Registro en el sistema </H1>'
ESCRIBIR TEMPORAL 10 '<FORM ACTION="&Sisinf-URL" METHOD=POST>'
ESCRIBIR TEMPORAL 10 '<CENTER>'
ESCRIBIR TEMPORAL 10 'Teclee su número'
ESCRIBIR TEMPORAL 10 '<INPUT TYPE="TEXT" NAME="numero"><BR><BR>'
ESCRIBIR TEMPORAL 10 'Teclee su clave'
ESCRIBIR TEMPORAL 10 '<INPUT TYPE="PASSWORD" NAME="clave"><BR><BR>'
ESCRIBIR TEMPORAL 10 '<INPUT TYPE="SUBMIT" VALUE="Entrar">'
ESCRIBIR TEMPORAL 10 '</FORM>'
SI IND-ERROR = 1 $
ESCRIBIR TEMPORAL 10 '<P> Numero o clave inválidos </P>'
ESCRIBIR TEMPORAL 10 '</BODY>'
ESCRIBIR TEMPORAL 10 '</HTML>'
OPCION TEMPORAL 10
*
*Leer número y clave
*
LEER TERMINAL EJECUTA 15 'numero' NUM-CVE
LEER TERMINAL EJECUTA 15 'clave' CVE-CVE
BUSCAR DISCO CONT EJECUTA 15 PRIN-G1 NUM-CVE
IGUAL CONT CVE-CVE CVE-CVE-D
LEER DISCO CONT NOM-CVE CVE-CVE-D
SI CVE-CVE = CVE-CVE-D EJECUTA 20
15IND-ERROR = 1
EJECUTA 10

Note la lógica, formar HTML, leer información, accesar banco de datos, si hay error volver a formar HTML, ....



3. Inicio de sesión.

Una vez identificado el usuario se inicia la sesión de forma que el control lo tiene el programa de Sisinf en cuanto a cual es la siguiente página HTML a desplegar En forma general se pudiera desplegarse algo más de información del usuario y terminar, o un menú para que el usuario decida que hacer a continuación, también pudiera ser una secuencia de páginas, etc. Para el caso del ejemplo se pasa a un menú.

Continuando con PSINA0 la parte que despliega un menú y lee la opción del mismo sería:

*
*Menu
*
20     ESCRIBIR TERMINAL 'Inicio-HTML'
22OPCION TEMPORAL 15 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO
ESCRIBIR TEMPORAL 15 '<HTML>'
ESCRIBIR TEMPORAL 15 '<HEAD><TITLE> Menú del sistema$
      $</TITLE></HEAD>'
ESCRIBIR TEMPORAL 15 '<BODY BGCOLOR="#FDF5E6">'
*
MOVER '<H1 ALIGN="CENTER">Bienvenido' A X80
MOVER NOM-CVE A X80 /AGREGAR
MOVER '</H1>' A X80 /AGREGAR
ESCRIBIR TEMPORAL 15 X80
*
ESCRIBIR TEMPORAL 15 '<FORM ACTION="&Sisinf-URL" METHOD=POST>'
ESCRIBIR TEMPORAL 15 '<CENTER>'
ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$
      $VALUE="cgi"> Variables CGI '
ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$
      $VALUE="vck"> Ver cookies '
ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$
      $VALUE="pck"> Poner cookies '
ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$
      $VALUE="est"> Ver estática '
ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$
      $VALUE="fin"> Terminar <BR>'
ESCRIBIR TEMPORAL 15 '<INPUT TYPE="SUBMIT" VALUE="Entrar">'
ESCRIBIR TEMPORAL 15 '</FORM>'
ESCRIBIR TEMPORAL 15 '</BODY>'
ESCRIBIR TEMPORAL 15 '</HTML>'
OPCION TEMPORAL 15
LEER TERMINAL EJECUTA 20 'botón' OP-M
SI OP-M = 'cgi' EJECUTA 30
SI OP-M = 'pck' EJECUTA 40
SI OP-M = 'vck' EJECUTA 60
SI OP-M = 'est' EJECUTA 80
SI OP-M = 'fin' EJECUTA 90
EJECUTA 20

Los siguientes comentarios son aplicables:





4. Otras opciones.

Como resumen se puede establecer que entre las instrucciones de ESCRIBIR TERMINAL y la de OPCION TEMPORAL para cerrar, se debe formar el HTML.
También dentro de este rango se puede leer o escribir otros archivos temporales de esta opción, que se explican a continuación.

Existen en el servidor unas variables donde se almacena cierta información como sería la versión del HTML, el nombre del servidor, ... dichas variables se les da el nombre de "Variables CGI" y se pueden conocer leyendo un archivo temporal.

Continuando con el ejemplo de PSINA0 una opción del menú es desplegar las variables CGI. La lógica para hacerlo es:

*
*listar variables CGI
*
30     ESCRIBIR TERMINAL 'Inicio-HTML'
OPCION TEMPORAL 20 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO
ESCRIBIR TEMPORAL 20 '<HTML>'
ESCRIBIR TEMPORAL 20 '<HEAD><TITLE> Variables CGI$
      $</TITLE></HEAD>'
ESCRIBIR TEMPORAL 20 '<BODY BGCOLOR="#FDF5E6">'
ESCRIBIR TEMPORAL 20 '<TABLE BORDER=1 ALIGN="CENTER">'
ESCRIBIR TEMPORAL 20 '<TR BGCOLOR="#FFAD00">'
ESCRIBIR TEMPORAL 20 '<TH>Variable CGI <TH>Valor'
*
OPCION TEMPORAL 25 /INTERNET /DISCO 'CGI' /LECTURA /ASCII
32LEER TEMPORAL 25 EJECUTA 34 NOM-CGI VAL-CGI
MOVER '<TR><TD>' A X80
MOVER NOM-CGI A X80 /AGREGAR
ESCRIBIR TEMPORAL 20 X80
MOVER '<TD>' A X80
MOVER VAL-CGI A X80 /AGREGAR
ESCRIBIR TEMPORAL 20 X80
EJECUTA 32
34OPCION TEMPORAL 25
*
ESCRIBIR TEMPORAL 20 '</TABLE>'
ESCRIBIR TEMPORAL 20 '<A HREF="&Sisinf-URL"> Regresar </A>'
ESCRIBIR TEMPORAL 20 '</BODY></HTML>'
OPCION TEMPORAL 20
EJECUTA 20

Los siguientes comentarios son aplicables:

De la misma forma que se leen las variables CGI se pueden leer los "cookie" que tenga almacenados el buscador. En este caso el /DISCO debe ser 'COOKIE' y la longitud de las variables para el nombre y el valor deben ser X 40. La lógica en PSINA0 sería:

*
*Leer cookie
*
60     ESCRIBIR TERMINAL 'Inicio-HTML'
OPCION TEMPORAL 20 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO
ESCRIBIR TEMPORAL 20 '<HTML>'
ESCRIBIR TEMPORAL 20 '<HEAD><TITLE> Cookies$
      $</TITLE></HEAD>'
ESCRIBIR TEMPORAL 20 '<BODY BGCOLOR="#FDF5E6">'
ESCRIBIR TEMPORAL 20 '<TABLE BORDER=1 ALIGN="CENTER">'
ESCRIBIR TEMPORAL 20 '<TR BGCOLOR="#FFAD00">'
ESCRIBIR TEMPORAL 20 '<TH>Nombre <TH>Valor'
*
OPCION TEMPORAL 35 /INTERNET /DISCO 'COOKIE' /LECTURA /ASCII
62LEER TEMPORAL 35 EJECUTA 64 NOM-CK VAL-CK
MOVER '<TR><TD>' A X80
MOVER NOM-CK A X80 /AGREGAR
MOVER '<TD>' A X80 /AGREGAR
MOVER VAL-CK A X80 /AGREGAR
ESCRIBIR TEMPORAL 20 X80
EJECUTA 62
64OPCION TEMPORAL 35
*
ESCRIBIR TEMPORAL 20 '</TABLE>'
ESCRIBIR TEMPORAL 20 '<A HREF="&Sisinf-URL"> Regresar </A>'
ESCRIBIR TEMPORAL 20 '</BODY></HTML>'
OPCION TEMPORAL 20
EJECUTA 20

También es posible escribir los cookies que se quieran, para ello en el programa PSINA0 se despliega una forma para leerlos y luego los escribe mediante la siguiente lógica:

*
44     ESCRIBIR TERMINAL 'Inicio-HTML'
OPCION TEMPORAL 30 /INTERNET /DISCO 'COOKIE' /ESCRITURA /ASCII
TIE-CK = 600
46NUM-CK = NUM-CK - 1
SI NUM-CK = 0 EJECUTA 48
ESCRIBIR TEMPORAL 30 NOM-CK-V ( NUM-CK ) $
      VAL-CK-V ( NUM-CK ) TIE-CK
EJECUTA 46
48OPCION TEMPORAL 30
EJECUTA 22

Los siguientes comentarios son aplicables:

Los cookies sirven para definir valores en el buscador del usuario de forma que la siguiente vez que accese la página se conozcan sus valores. En un ejemplo mas real la lógica pudiera ser:

El programa PSINA0 ha sido modificado para que no se tenga que teclear la contraseña al inicio y esta como el PSINA1. Para ello es necesario registrar un "cookie" con el nombre 'USUARIO' y con un valor del número de clave como 4 dígitos



5. URL en los HTML.

Note que en todos los HTML generados por el programa se usa "&Sisinf-URL" para poner la liga, que siempre es la misma ya que el programa de SISINF es el que tiene el control y por lógica forma la siguiente página.

Internamente "&Sisinf-URL" será remplazado por el URL real o sea el que se puso en la página estática para iniciar la ejecución de las dinámicas. Si Usted ve el código fuente de las páginas generadas del ejemplo, vera que ya esta cambiado.

El uso de "&Sisinf-URL" sirve para:

Como ya se explico cuando se inicia la ejecución de una página dinámica se inicia también una sesión. Dado que los buscadores solo piden al servidor páginas, entonces se necesita otra información que le indique al servidor que es el mismo usuario. Lo anterior se logra con "cookies" o bien agregando información al URL.

También se puede especificar "&Sisinf-SSL" y formara la siguiente página en una conexión segura. Nota si ejecuta esta opción y da "página no encontrada" probablemente los servidores (páginas y servlet) NO estén configurados para SSL.

Para las gráficas de preferencia deben estar donde se puso la página con el URL especial que inicia el proceso, en el URL de dichas gráficas poner "&Sisinf-SER" para que internamente se ponga el nombre del servidor o host.

Es posible no usar los "&Sisinf-URL", "&Sisinf-SSL" y "&Sisinf-SER" y poner directamente el URL pero este caso puede NO trabajar el concepto de sesión si el usuario del buscador ha restringido los "cookie".



6. Otra manera de leer información.

Existe otra manera de leer información y es a través de las ligas para regresar al proceso que siempre tiene "&Sisinf-URL" . Esta manera consiste en pasar aquí los parámetros como si fuera una forma.

Continuando con el programa PSINA0 se tiene una parte para desplegar una página estática, la lógica es:

*
*Página estática
*
80     ESCRIBIR TERMINAL 'Inicio-HTML'
OPCION TEMPORAL 20 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO
OPCION TEMPORAL 50 /NOMBRE 'KRATOS.HTM' /LECTURA /EXTERNO
82LEER TEMPORAL 50 EJECUTA 84 X80
ESCRIBIR TEMPORAL 20 X80
EJECUTA 82
84OPCION TEMPORAL 20
OPCION TEMPORAL 50
LEER TERMINAL EJECUTA 20 'opc' OP-M
SI OP-M = 'ter' EJECUTA 90
EJECUTA 20

Parte de la página estática de nombre KRATOS.HTM tiene:

<img width=344 height=106 src="//&Sisinf-SER/Kratos.gif"><br>
<A HREF="&Sisinf-URL"> Regresar </A><br>
<A HREF="&Sisinf-SSL"> Regresar (seguridad)</A><br>
<A HREF="&Sisinf-URL?opc=ter"> Terminar </A><br>
</body>
</html>

Los siguientes comentarios son aplicables:





7. Parámetros del servidor.

En el servidor de servlet se deben de definir los siguientes parámetros:

Si los parámetros del servidor NO se pueden poner, los dos primeros se pueden especificar en la página que tiene el URL especial que inicia el proceso de los servlets. Para ello vea el instructivo de instalación del ejemplo.

La ventaja de la primera opción es que los usuarios del sistema no verán esta información con el buscador.



8. Recomendaciones.

Se recomienda que primero trabaje el ejemplo, ya que este ya esta probado y luego genere sus propias páginas. Recuerde: