English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
1.El cliente inicializa una solicitud hacia el contenedor de servlets (Tomcat);
2.La solicitud pasa por una serie de filtros, luego se llama a FilterDispatcher;
3.FilterDispatcher pregunta a ActionMapper para decidir si esta solicitud debe invocar algún action;
4.Si ActionMapper decide invocar algún Action, FilterDispatcher entrega el procesamiento de la solicitud a ActionProxy, ActionProxy consulta el archivo de configuración del framework a través de ConfigurationManager para encontrar la clase del Action que se debe invocar, generalmente se lee struts.xml;
5.El ActionProxy crea una instancia de ActionInvocation, la instancia de ActionInvocation utiliza el patrón de nombre para llamar, antes y después de la llamada al Action, se involucran las llamadas a los interceptores relacionados;
6.Una vez que el Action se ha ejecutado, ActionInvocation encuentra el resultado correspondiente según la configuración de struts.xml
Por ejemplo, el código:
struts2Después de obtener la solicitud .action, se decidirá qué componente de lógica de negocio llamar en función de una parte;
struts2Las Action definidas en la aplicación están definidas en struts.xml;
struts2La instancia de Action utilizada para procesar las solicitudes del usuario no es el controlador de negocio implementado por el usuario, sino un agente de Action, ya que el controlador de negocio implementado por el usuario no está acoplado con ServletAPI, por lo que evidentemente no puede procesar las solicitudes del usuario.
<html> <head> <title>SUCCESS</title> </head> <body> <form action="hello.action" method="post"> USUARIO:<input type="text" name="name"></br> CONTRASEÑA:<input type="password" name="pass"></br> <input type="submit" value="enviar"> </form> </body> </html>
Por ejemplo, el formulario mencionado anteriormente hello.action, este atributo action no es un servlet común ni una página JSP dinámica, cuando el formulario se envía a hello.action, Struts2su FilterDispatcher entrará en acción, redirigiendo la solicitud del usuario al Action correspondiente.
Es importante destacar que Struts2 El Action por defecto intercepta todas las solicitudes con la extensión .action, si necesitamos que el formulario sea procesado por Action, debemos establecer el atributo action del formulario en el formato .action.
Clase controladora
public class HelloAction { private String name; private String pass; public void setName(String name){ this.name=name; } public void setPass(String pass){ this.pass=pass; } public String execute(){ if("yang".equals(name) && "1234".equals(pass)){ return "éxito"; } else{}} return "error"; } } }
Después de que se complete la ejecución anterior, solo se ha realizado la redirección de la página, sin rastrear el estado del usuario, cuando el usuario haya completado el inicio de sesión, necesitamos agregar el nombre de usuario como información de estado de la sesión HTTP.
Para acceder a la instancia de Httpsession, struts2Se proporciona una clase ActionContext, que proporciona el método getSession(), pero el valor de retorno de este método no es HttpSession() sino Map(), pero Struts2El interceptor se encargará del cambio entre Session() y HttpSession().
Para verificar si la propiedad de sesión que hemos configurado se ha configurado con éxito, podemos configurar la interfaz de usuario después del éxito de esta manera
<html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>SUCCESS</title> </head> <body> Bienvenido, ${sessionScope.user}, ya ha iniciado sesión. </body> </html>
Utilizando JSP2.0表达式 sintáctica de salida para obtener el atributo user en la sesión HTTP.
La clase de herramienta Action se integra ActionSupport
La clase ActionSupport es una clase de herramienta y ya ha implementado el interfaz Action, además, también ha implementado el interfaz Validateablez, proporcionando la función de validación de datos.
Para aumentar la función de validación de datos de entrada, se agrega el método validate reescrito en Action.
public void validate() { if(getName()==null || getName().trim().equals("")){ addFieldError("name",getText("name.required")); } if(getPass()==null || getPass().trim().equals("")){ addFieldError("pass", getText("pass.required")); } }
El método validate reescrito agregado anteriormente se ejecutará antes del método execute() del sistema, si se ejecuta este método y el campoError de la clase Action ya contiene errores de validación de datos, la solicitud se redirigirá a la vista lógica de entrada, por lo tanto,还应添加 el nombre de la vista lógica de entrada en struts.xml para que se dirija a la página de inicio de sesión.
La desventaja de este método validate es que es necesario escribir abundantemente el método validate, por lo que se puede usar struts2para realizar la verificación del marco de validación.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <!--Verificación del formulario name--> <field name="name"> <field-validator type="requiredstring"> <message key="name.required"/> </field-validator> </field> <!--Verificación del formulario pass--> <field name="pass"> <field-validator type="requiredstring"> <message key="pass.required"/> </field-validator> </field> </validators>
Resumen
Esto es todo sobre struts en este artículo2Este artículo contiene todo el contenido de análisis de código relacionado con el proceso y una serie de conocimientos relevantes, esperando ser útil para todos. Los amigos interesados pueden continuar consultando otros temas relacionados en este sitio, y son bienvenidos a dejar comentarios si encuentran deficiencias. ¡Gracias a todos los amigos por su apoyo a este sitio!
Declaración: El contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y sube por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume responsabilidad alguna por las responsabilidades legales. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.