下面给出Struts2学习笔记(5)-参数传递方法的完整攻略。
1. 参数传递方法
Struts2框架提供了多种参数传递方法,包括:
- 基于动态属性的参数传递方法
- 基于XLST的参数传递方法
- 基于注解的参数传递方法
- 基于拦截器的参数传递方法
1.1 基于动态属性的参数传递方法
在Struts2中,可以通过设置动态属性来进行参数传递。需要为Action类的变量提供setter和getter方法,这样在Struts2中就可以使用该变量。例如:
public class DynamicPropertyAction extends ActionSupport {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
public String execute() {
return SUCCESS;
}
}
在该示例中,可以通过在URL中传递name和address参数的值来进行参数传递。
1.2 基于XLST的参数传递方法
除了基于动态属性的参数传递方法,Struts2还支持基于XLST的参数传递方法。通过处理XLST文件,就可以将动态属性的传递方式改为基于XML文件的传递方式。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<action name="XSLDynamicPropertyAction" class="com.example.action.XSLDynamicPropertyAction">
<result name="success">/result.jsp</result>
</action>
</struts>
1.3 基于注解的参数传递方法
在Struts2中,可以使用注解来进行参数传递。通过使用@Param注解,就可以设置Action类的变量来接收参数值。
public class AnnotationAction extends ActionSupport {
@Param(value = "userName", required = true)
private String name;
@Param(value = "userPassword", required = true)
private String password;
public String execute() {
return SUCCESS;
}
}
在该示例中,可以在URL中传递userName和userPassword的值来进行参数传递。
1.4 基于拦截器的参数传递方法
Struts2中还提供了基于拦截器的参数传递方法。通过拦截器,可以在请求处理前或请求处理后添加一些额外的处理逻辑,以实现参数传递的目的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="example" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="ParamInterceptor" class="com.example.interceptor.ParamInterceptor"/>
<interceptor-stack name="ParamStack">
<interceptor-ref name="ParamInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="paramAction" class="com.example.action.ParamAction">
<interceptor-ref name="ParamStack"/>
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
在该示例中,使用拦截器ParamInterceptor来处理参数传递,在Action调用execute()方法之前将值设置于真正的实例中。
2. 示例
接下来给出两个基于动态属性的参数传递的示例。
示例 1:
public class DynamicPropertyAction extends ActionSupport {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
public String execute() {
return SUCCESS;
}
}
在该示例中,可以通过URL /DynamicPropertyAction.action?name=John&address=Beijing 进行参数传递。
示例 2:
public class DynamicPropertyAction extends ActionSupport {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
public String execute() {
return SUCCESS;
}
}
在该示例中,可以通过URL /DynamicPropertyAction.action?name=John&address=Beijing 进行参数传递。
以上就是Struts2学习笔记(5)-参数传递方法的完整攻略,包含了基于动态属性、XLST、注解、拦截器的参数传递方法,还有两个基于动态属性的示例供参考。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2学习笔记(5)-参数传递方法 - Python技术站