Control de conmutación JSP real de JBuilder2005 (3)
Autor:Eve Cole
Fecha de actualización:2009-07-02 17:10:13
Dado que switch.jsp se especifica como el archivo JSP de respuesta a través del atributo de acción en el formulario login.jsp, cuando el usuario selecciona el usuario de inicio de sesión en login.jsp e ingresa la contraseña para enviar el formulario, el cliente enviará una solicitud HTTP a el servidor y el servidor Es decir, llame a switch.jsp para responder a esta solicitud.
Los datos de los componentes de nombre de usuario y contraseña en el formulario se pasarán al switch.jsp del servidor a través de una solicitud HTTP. El servidor encapsulará esta información en el objeto de solicitud y la pasará a switch.jsp, para que se pueda recuperar switch.jsp. a través de request.getParameter(String paraName) Obtenga estos dos valores.
Cadena ID de usuario = request.getParameter("ID de usuario"); Contraseña de cadena = request.getParameter("contraseña"); |
Imagínese si el formulario de login.jsp tiene más de 10 componentes de datos, su valor debe obtenerse a través del número correspondiente de métodos request.getParameter() en switch.jsp. Además, si los datos no son un tipo de cadena de campo, sino un número entero o de punto flotante, dado que los valores devueltos por el método request.getParameter () son todos cadenas, se debe realizar la conversión de tipos. tedioso, pero también propenso a errores.
JSP le permite recibir datos de formularios web a través de Bean en forma de mapeo. Bean asigna datos de formularios de acuerdo con esta regla: nombre de atributo de Bean = nombre del componente de datos del formulario, es decir, todos los campos de datos del formulario con el mismo nombre de atributo de Bean se completan automáticamente. el Bean. y complete la conversión del tipo de datos. Por ejemplo, hay dos componentes de datos en el formulario login.jsp, uno se llama userId y el otro es contraseña. Defina un Bean User.java con el mismo nombre de atributos de userId y contraseña. Este Bean recibirá automáticamente los dos componentes de datos. en el formulario.
Escribir usuario.java
Primero escribamos el Bean User.java y creemos User.java en el proyecto. El código es el siguiente:
Listado de Código 7 Usuario.java
1. librería de paquetes; 2. 3. Usuario de clase pública 4. { 5. cadena privada ID de usuario; // ID de usuario 6. contraseña de cadena privada; // contraseña 7. cadena privada nombre de usuario; // nombre de usuario 8. Cadena pública getPassword() { 9. devolver contraseña; 10. } 11. cadena pública getUserId() { 12. devolver ID de usuario; 13. } 14. cadena pública getUserName() { 15. devolver nombre de usuario; 16. } 17. setPassword público vacío (contraseña de cadena) { 18. esta.contraseña = contraseña; 19. } 20. setUserId público vacío (String userId) { 21. this.userId = usuarioId; Veintidós. } 23. setUserName público vacío (String nombre de usuario) { 24. this.userName = nombre de usuario; 25. } 26. } |
Además de los dos nombres de atributo ID de usuario y contraseña, también hay un atributo de nombre de usuario nombre de usuario. El valor de este atributo no se recibe del formulario login.jsp. Cuando el nombre de usuario y la contraseña se verifican correctamente, el nombre de usuario se obtiene de los datos. tabla T_USER y almacenada en estas Propiedades para que se pueda hacer referencia a ellas en otro lugar, guarde y compile esta clase.
pista:
Puede crear rápidamente código User.java a través de la herramienta Bean Express de JBuilder. En circunstancias normales, debe crear propiedades de Bean a través de Bean Express. Esto no solo genera automáticamente métodos de acceso a propiedades get/set, sino que también garantiza las convenciones de nomenclatura de Bean. |
Escribir programa de página
Después de crear el Bean de User.java, procedemos a crear switch.jsp y hacer referencia a este Bean en switch.jsp.
Inicie el asistente Crear JSP a través de Archivo->Nuevo...->Web->haga doble clic en el icono JSP.
1. Especifique el nombre de switch.jsp
Figura 10 Especifique el nombre de switch.jsp |
Sigue presionando Siguiente para llegar al paso 3 del asistente.
2. Referencia User.java Bean
Figura 11 Especificar Bean al que se hace referencia en JSP |
Haga clic en el botón Agregar Bean... para que aparezca el cuadro de diálogo Seleccionar una clase. Seleccione la clase bookstore.User en el cuadro de diálogo, como se muestra en la siguiente figura:
Figura 12 Seleccionar clase como Bean |
Después de presionar Aceptar, regrese al cuadro de diálogo en el paso 3 del asistente. En este momento, hay una fila adicional de registros en la lista de Bean del cuadro de diálogo. Puede especificar un nombre para el Bean en la columna ID y especificar. El alcance del Bean en el alcance, como se muestra en la siguiente figura:
Figura 13 Referencia a un Bean |
Llamamos User's Bean userBean y establecimos su alcance en el dominio de la página. El dominio de la página es el alcance de la página y está disponible dentro del alcance de la página actual. Cuando el JSP devuelve una respuesta o la solicitud se transfiere a otras páginas JSP, ya no está disponible. Los otros tres alcances se describen a continuación:
·Alcance de la solicitud: cuando se genera una solicitud, es válida dentro del alcance hasta que se devuelve la respuesta. Por ejemplo, un Bean declarado como alcance de la solicitud en a.jsp, cuando a.jsp transfiere la solicitud a la página b.jsp a través. <jsp:forward> Todavía está disponible a mediados de año.
·Alcance de la sesión: Está disponible dentro del ciclo de la sesión del usuario. El ciclo de la sesión es desde que el usuario inicia sesión en el sistema hasta que cierra la sesión.
·Ámbito de aplicación: Este alcance es el más largo, lo que indica que el contenedor web es válido hasta que se inicia hasta que se cierra.
Presione Siguiente para ir al siguiente paso.
3. Establecer elementos de configuración en ejecución
En el último paso del asistente, puede generar un elemento de configuración de tiempo de ejecución para el JSP creado. Aunque el asistente establece crear un elemento de configuración de tiempo de ejecución como la opción predeterminada, creo que este no es un valor predeterminado razonable. Se recomienda cancelarlo. cree un elemento de configuración de tiempo de ejecución, no cree un elemento de configuración de ejecución JSP, como se muestra en la siguiente figura:
Presione el botón Finalizar para crear el archivo switch.jsp con el siguiente código:
Listado de Código 8 switch.jsp creado por el asistente
1. <%@ página contentType="text/html; charset=GBK" %> 2. <html> 3. <cabeza> 4. <título> 5.cambiar 6. </título> 7. </cabeza> 8. <jsp:useBean id="userBean" alcance="página" clase="librería.Usuario" /> 9. <jsp:setProperty nombre="userBean" propiedad="*" /> 10. <cuerpo bgcolor="#ffffff"> 11. <h1> 12. JSP generado por JBuilder 13. </h1> 14. </cuerpo> 15. </html> |
La línea 8 es la etiqueta JSP que hace referencia al Bean. La línea 9 llena los valores de los atributos del Bean con los datos del formulario, es decir, completa los parámetros de solicitud en los atributos del Bean por coincidencia de nombres y completa la conversión de tipos al mismo tiempo (solo). tipos de datos básicos o La conversión solo se puede completar si el constructor lo admite). Después de ejecutar la línea 9, los atributos de ID de usuario y contraseña en userBean se establecerán en los valores del nombre de usuario y la contraseña enviados en la página login.jsp.
Debido a que switch.jsp solo se usa para control y no necesita mostrar contenido al cliente, eliminamos el código HTML en switch.jsp y ajustamos switch.jsp a:
Listado de Código 9 switch.jsp después de eliminar el código HTML estático
1. <%@ página contentType="text/html; charset=GBK" %> 2. <jsp:useBean id="userBean" alcance="página" clase="librería.Usuario" /> 3. <jsp:setProperty nombre="userBean" propiedad="*" /> |
Proporcione un Scriptlet en switch.jsp para enviar el ID de usuario y la contraseña a la base de datos y compararlos con los usuarios en la tabla T_USER para ver si son usuarios legítimos y redirigir a diferentes páginas según los resultados de la verificación. El código final de switch.jsp se ve así:
Listado de Código 10 Switch.jsp final
1. <%@página contentType="text/html; charset=GBK"%> 2. <%@page import="librería.*"%> 3. <%@page import="java.sql.*"%> 4. <jsp:useBean id="userBean" alcance="sesión" clase="librería.Usuario"/> 5. <jsp:setProperty nombre="userBean" propiedad="*"/> 6.<% 7. Conexión de conexión = nula; 8. prueba { 9. conexión = DBConnection.getConnection(); 10. Declaración preparada pStat = conn.prepareStatement ( 11. "seleccione USER_NAME de T_USER donde USER_ID=? y contraseña =?"); 12. pStat.setString(1, userBean.getUserId()); 13. pStat.setString(2, userBean.getPassword()); 14. Conjunto de resultados rs = pStat.executeQuery(); 15. if (rs.next()) { //La contraseña es correcta 16. userBean.setUserName(rs.getString(1));//Establecer nombre de usuario 17. session.setAttribute("ses_userBean", userBean);//Coloca userBean en el objeto Session 18. %><jsp:forward page=" bienvenido.jsp "></jsp:forward> 19. <%} else { //Contraseña incorrecta%> 20. <jsp:forward page="fail.jsp"></jsp:forward> 21,<% 22. }} finalmente { 23. if(conn!= null) conn.close(); veinticuatro. 25. %> |
·Introduzca las clases necesarias en el código Scriptlet en las líneas 2 a 3.
·Las líneas 7 a 14 del código envían declaraciones SQL de consulta a la base de datos y devuelven los resultados.
·La línea 15 determina indirectamente si la contraseña del usuario es correcta comprobando el número de registros en el conjunto de resultados.
· Las líneas 16 a 18 son los códigos de respuesta para las contraseñas de usuario correctas. Primero, complete el valor del atributo userName del userBean con el atributo USER_NAME del conjunto de resultados, luego coloque el objeto userBean en la sesión y finalmente vaya a la página de bienvenida.jsp.
·Cuando el usuario ingresa una contraseña incorrecta, no habrá ningún registro en el conjunto de resultados. En este momento, rs.next() devuelve falso y el programa pasa a la línea 20. El código en la línea 20 redirige la página a la incorrecta. página de procesamiento de entrada de contraseña fail.jsp.
·El código de las líneas 22 a 24 se utiliza para cerrar la conexión a la base de datos.
Quizás haya descubierto que, aunque las líneas 9 a 21 generarán SQLException, no tenemos un bloque de captura de excepciones correspondiente en un programa Java estándar, lo que provocará un error en tiempo de compilación, pero en JSP se puede compilar secuencialmente. Esto se debe a que la propia página JSP detecta todas las excepciones lanzadas en la página.
Suponga que hay un error en la declaración de consulta SQL en la línea 11, como que el nombre de la tabla de usuarios se escribe erróneamente como Usuario (correctamente T_USER). Cuando se llama a switch.jsp, se generará una SQLException en la línea 14 y se cambiará. jsp mostrará la página de información de seguimiento del seguimiento de la pila de excepciones como se muestra a continuación:
Figura 14 La terrible página de manejo de errores |
La página de manejo de errores que se muestra en la imagen de arriba puede describirse como verde, feroz y muy hostil. Este tipo de página de informe de errores puede ser adecuada para los desarrolladores porque proporciona mucha información de seguimiento de errores, pero es imposible finalizarla. los usuarios acepten este tipo de página de error. Una página de error grosera. JSP le permite especificar una página JSP específicamente para manejar errores a través de <%@ page errorPage%>, de modo que los errores se puedan mostrar de una forma amigable e intuitiva. En la siguiente sección, crearemos una página JSP para el manejo de errores. Después de la creación, especificaremos la página JSP de manejo de errores para switch.jsp.