Cómo obtener solicitudes en Struts2
En Struts2, no es necesario escribir un método de ejecución() en la clase Acción en Struts1. Solo necesita un método que devuelva una cadena (a veces no se necesita ningún valor de retorno). original Los parámetros de solicitud y los parámetros de respuesta en el servlet están encapsulados en el interceptor. En Struts2, los parámetros de solicitud y los parámetros de respuesta del servlet original están encapsulados en el interceptor, pero a veces estos dos parámetros aún son necesarios durante la programación. A continuación se muestran varios métodos para obtener este parámetro:
Método 1: utilizar el interceptor Struts2 Aware
Este método requiere que la clase Action implemente la interfaz del interceptor correspondiente. Si queremos obtener el objeto HttpServletResponse, necesitamos usar la interfaz org.apache.struts2.interceptor.ServletResponseAware. El código es el siguiente:
[java]?view Plaincopy
{?
privado?javax.servlet.opensymphony.xwork2.interceptor.ServletResponseAware Interfaz:
[java]? ver copia simple
interfaz privada?ParameterNameAware. Esta interfaz tiene un método aceptableParameterName, que se llama una vez cuando Struts2 obtiene un parámetro de solicitud. Los lectores pueden registrar todos los parámetros de solicitud en este método para su uso posterior. La definición de este método es la siguiente:
booleano aceptableParameterName(String parámetroName);
Método 2, usando el interceptor RequestAware
Este método es similar al método 1 . Las clases de acción deben implementar la interfaz org.apache.struts2.interceptor.RequestAware. La diferencia es que RequestAware obtiene el objeto com.opensymphony.xwork2.util.OgnlValueStack, que obtiene la respuesta, la solicitud y alguna otra información. El código es el siguiente:
[java]?view Plaincopy
público?
privado?
público?{
this.request = request;?
}?
public?
//?Enumere todos los valores clave.
En realidad, solo hay una clave: struts.valueStack
for(String?key?:?keys)?
System.out.println(key);?
//?Obtener el objeto OgnlValueStack?
¿OgnlValueStack?(OgnlValueStack)?request?
.get("struts.valueStack");?
//?¿Obtener el objeto HttpServletResponse?
respuesta?=?(HttpServletResponse)?stack.getContext().get(?
StrutsStatics.HTTP_RESPONSE);?
respuesta.getWriter(). write("Implementando RequestAware? interfaz");?
}?
}?
También podemos usar StrutsStatics.HTTP_REQUEST y StrutsStatics.PAGE_CONTEXT para obtener HttpServletRequest y objetos PageContext. Este método es un poco engorroso y rara vez se utiliza. Los lectores pueden utilizarlo como referencia.
Método tres, use la clase ActionContext
Este método es relativamente simple. Podemos obtener el objeto correspondiente a través del método get de la clase org.apache.struts2.ActionContext. El código es el siguiente:
[java]?view Plaincopy
ActionContext?ctx?=?ActionContext.getContext();
HttpServletRequest?request?= ( HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse?response?=?(HttpServletResponse)?
ActionContext.getContext().get(org.apache.struts2. StrutsStatics.HTTP_RESPONSE );?
Método 4, use la clase ServletActionContext
Struts2 nos proporciona la forma más sencilla de obtener HttpServletResponse y otros objetos. Esta es la clase org.apache.struts2.ServletActionContext. Podemos utilizar directamente los métodos getRequest y getResponse de la clase ServletActionContext para obtener los objetos HttpServletRequest y HttpServletResponse.
El código es el siguiente:
[java]?view Plaincopy
HttpServletRequest?request?=?ServletActionContext.getRequest();?
HttpServletResponse?response? =?ServletActionContext .getResponse();?
Entre estos cuatro métodos, el último es el más simple. Los lectores pueden elegir qué método utilizar para obtener estos objetos de acuerdo con sus propias necesidades y requisitos.