1、在web.xml中配置过滤器
<filter>
<filter-name>WebQuery</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>WebQuery</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、用户提交页面,表单action=myaction
<s:form action="myaction" method="post">
<s:textfield label="用户名" name="username"></s:textfield>
<s:password label="密 码" name="password"></s:password>
<s:submit name="submit" value="提交"></s:submit>
</s:form>
3、根据表单中的myaction,在struts.xml中寻找名为action名字为myacton的定义
<struts>
<package name="WebQuery" extends="struts-default">
<action name="myacton" class="com.test.action.LoginAction">
<result name="input">/login2.jsp</result>
<result name="成功">/result.jsp</result>
<result name="失败">/login2.jsp</result>
</action>
</package>
</struts>
4、执行struts.xml中myaction相对应的myclass (myclass 从ActionSupport继承)
5、在myclass中,当用get或set方法给变量进行赋值之前,进行局部或全局类型转换
public class LoginAction extends ActionSupport {
// 将表单数据填充到变量中
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// 根据表单中的内容,进行页面跳转
public String execute() throws Exception {
if ("hello".equals(getUsername().trim())
&& "world".equals(getPassword().trim()))
{
return "成功";
} else {
this.addFieldError("username", "用户名或密码不正确");
return "失败";
}
}
public void validate() {
if ("".equals(this.getUsername().trim())
|| (null == this.getUsername().trim())) {
this.addFieldError("username", "用户名为能为空");
}
}
}
6、局部类型转换:在myclass所在的包(目录)中寻找类型转换的配置文件。文件名为:classname-conversion.properties,内容为:变量名称(小写)=执行转换的类名(全路径)
如:point=com.test.converter.PointConverter_Private
(执行转换的类名 从DefaultTypeConverter继承,或从StrutsTypeConverter继承)
7、全局类型转换:如果已经局部类型转换则跳过此步,在struts.xml包(目录)中寻找名为:xwork-conversion.properties的文件,内容为:被转换的类名(全路径)=执行转换的类型名(全路径)
如:com.test.bean.Point=com.test.converter.PointConverter_Public
8、类型转换之后变量才会被赋值。
9、执行myclass中的execute方法,并返回
10、struts.xml中,根据myclass的返回结果,进行页面跳转