Prefacio
Te he presentado el tutorial introductorio sobre Struts2. Continuaré compartiendo el conocimiento que he aprendido, los problemas que encontré durante el proceso de aprendizaje y las soluciones. Por supuesto, si los lectores encuentran algún problema, pueden informarme en los comentarios a continuación. gracias de antemano
Acceder a los recursos web en acción
recursos web
El llamado recurso web se refiere a API nativas como httpservletRequest, httpservletResponse y servletContext. Como controlador de desarrollo de aplicaciones B/S, debe poder acceder a recursos web, como leer y escribir propiedades a objetos de dominio.
Cómo acceder a los recursos web
Método de desacoplamiento de ServletApi: Para evitar el acoplamiento con servletapi y facilitar la prueba unitaria en acción, Struts2 encapsula httpservletRequest, httpsession y servletContext, construye 3 objetos de mapa para reemplazar estos 3 objetos. En la acción, puede usar los objetos de mapa correspondientes de httpservletRequest, httpservletsession y httpservletContext para guardar y leer datos.
public Object get(Object key) para aprobar el parámetro de solicitud para lograr la implementación.setRequest() , de modo que el mapas se pueda llamar en todos los métodos de acción. Use ActionContext para obtener una demostración de código de un objeto de dominio
Envíe la solicitud desde la página index.jsp a showpage.jsp y entregue la solicitud a la clase de acción de Struts ObjectAction.java para manejar la solicitud
En ObjectAction.java, el objeto de dominio se recupera por ActionContext y el valor de la propiedad se agrega a él, y la solicitud se reenvía a showpage.jsp
En la página showpage.jsp, podemos obtener los valores de cada objeto de dominio
index.jsp
< %@ página contentType = "text/html; charset = utf-8" lenguaje = "java" %> <html> <fead> <title> manejar </title> </head> <body>-pasar el parámetro de nombre, que se puede obtener del objeto de dominio de parámetros en la clase de acción para probar el objeto de dominio de parámetros <a hring = " > Aplicación </a> </body> </html>
ObjectAction.java
paquete com.request.test; import com.opensymphony.xwork2.ActionContext; import java.util.map; public class ObjectAction {public String imprime () {// get ActionContext ActionContext ActionContext = ActionContext.getContext (); // Obtener el Mape correspondiente al mapa de Action Mapain Map <String, Object> ApplicationMap = ActionContext. ApplicationMap.put ("ApplicationMap", "ApplicationMapValue"); // Obtenga el mapa correspondiente a la sesión MAP <String, Object> SessionMap = ActionContext.getSession (); // Asignar sessionMap a sessionMap.put ("sessionMap", "sessionMapValue"); // Obtener el mapa correspondiente a la solicitud, no es el método de getRequest () de sesion "). Objeto> requestmap = (map <string, object>) actionContext.get ("request"); // Obtenga el mapa correspondiente a la solicitud. No hay un método getRequest () correspondiente, por lo que use el método get ("request") map <string, object> requestmap = (map <string, object>) actionContext.get ("request"); // requestmap asigne requestmap.put ("requestmap", "requestMapValue"); // Obtener el mapa correspondiente a parámetros map <string> parammap = accionConteTeNETETERS (); El valor de parámetro de params string [] params = (string []) paramsmap.get ("name"); // imprima el valor de parámetro en la consola System.out.println (params [0]); devolver "éxito"; }}struts.xml (solo muestre el nodo del paquete)
<paquete name = "showValue" extends = "Struts-Default"> <Action name = "showPage" método = "print"> <resultado name = "éxito">/showpage.jsp </resultado> </acción> </paquete>
showpage.jsp (solo muestra contenido de etiqueta de cuerpo)
<%-Obtenga el valor del objeto de dominio de la aplicación-%> $ {aplicationsCope.ApplicationMap} <br> <%-Obtenga el valor del objeto de dominio de sesión-%> $ {sessionsCope.SessionMap} <br> <%-Obtenga el valor de la solicitud del objeto de dominio-%> $ {requestscope.requestmap} <br> <%-obtenga el valor de la solicitud del dominio del dominio. Objeto-%> $ {requestscope.requestmap}Detalles y atención a (Arrastre la imagen a la página de la nueva pestaña del navegador para ver la imagen más grande)
Acceso a los recursos web utilizando la interfaz XXXAWare
Al igual que usar ActionContext, el método print2() procesa enviar una solicitud a ObjectAction.java en la página index.jsp.
Asigne un valor al objeto de dominio en print2() en ObjectAction.java y obtenga el valor del parámetro aprobado
Finalmente, obtenemos el valor del objeto de dominio en showpage.jsp. Para distinguir del anterior, agregamos símbolos a cada valor de salida para distinguir.
index.jsp (muestra parte de la etiqueta del cuerpo)
<a href = "showpage2.action? name = smzyy" rel = "externo nofollow"> topage2 </a>
ObjectAction.java
paquete com.request.test; import com.opensymphony.xwork2.ActionContext; import org.apache.struts2.interceptor.applicationaware; importar org.apache.struts2.interceptor.parametaware; importar org.apache.struts2.interceptor.requestaware; import org.apache.struts2.interceptor.sesionsesion; java.util.map; public class ObjectAction implementa requestAware, SessionAWare, ApplicationAWare, ParameteraSWare {private Map <String, Object> requestMap; Mapa privado <String, Object> SessionMap; Mapa privado <String, Object> ApplicationMap; MAP privado <string, string []> parametermap; // showpage.action ejecute el método requerido public string print2 () {applicationMap.put ("ApplicationMap", "ApplicationMapVal ==="); requestMap.put ("requestMap", "requestMapVal ==="); sessionMap.put ("SessionMap", "SessionMapVal ==="); String [] name = parametermap.get ("name"); System.out.println (nombre [0] + "===="); devolver "éxito"; } @Override public void setApplication (map <string, object> map) {this.applicationMap = map; } @Override public void setParameters (map <string, string []> map) {this.parametermap = map; } @Override public void setRequest (map <string, object> map) {this.requestMap = map; } @Override public void setSession (map <string, object> map) {this.sessionMap = map; }}struts.xml (muestra la parte del nodo del paquete)
<paquete name = "showValue" extends = "Struts-Default"> <Action name = "showPage2" método = "print2"> <resultado name = "éxito">/showpage.jsp </resultado> </acción> </paquete>
showpage.jsp (igual que el anterior, no ha cambiado en absoluto)
Sugerencias de selección
A través de los dos métodos anteriores para obtener recursos web, podemos saber que si el primer método tiene muchos métodos de acción que requieren que llamen objetos de dominio, cada método debe implementarse, mientras que el segundo método solo debe implementarse una vez, por lo que en el desarrollo real, el método correspondiente se selecciona para implementarlo de acuerdo con la situación.
Junto con servletapi: se puede acceder a más servletapis y se pueden llamar a métodos nativos
El método de implementación aquí es similar al método de implementación anterior, por lo que no hablaré de ello.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.