不好意思,刚没写好就发出去了RegisterForm.java代码如下:(上面那个类路径是错的)package com.lbtest.struts;import org.apache.struts.action.ActionForm;public class RegisterForm extends ActionForm{
private String userName;
private String passWord1;
private String passWord2;
public String getPassWord1() {
return passWord1;
}
public void setPassWord1(String passWord1) {
this.passWord1 = passWord1;
}
public String getPassWord2() {
return passWord2;
}
public void setPassWord2(String passWord2) {
this.passWord2 = passWord2;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
private String userName;
private String passWord1;
private String passWord2;
public String getPassWord1() {
return passWord1;
}
public void setPassWord1(String passWord1) {
this.passWord1 = passWord1;
}
public String getPassWord2() {
return passWord2;
}
public void setPassWord2(String passWord2) {
this.passWord2 = passWord2;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
<p>
<html:form action="/FirstWebDemo.do">
用户名:<html:text property="userName"></html:text><br>
密码:<html:password property="passWord1"></html:password><br>
请再次输入密码:<html:password property="passWord2"></html:password><br>
<html:submit value="提交"></html:submit>
</html:form>
</body>struts-config.xml中 <action-mappings>
<action path="/FirstWebDemo" name="RegisterForm" scope="request" type="com.lbtest.struts.RegisterAction" input="/register.jsp">
<forward name="success" path="/success.jsp" />
<forward name="failure" path="/failure.jsp" />
</action>
</action-mappings>
package app;
你是将该类打包在app目录下
为什么你在struts-config.xml中写的是
<form-beans>
<form-bean name="RegisterForm" type="com.lbtest.struts.RegisterForm"></form-bean>
</form-beans>
RegisterForm为什么指向com.lbtest.struts.RegisterForm,明显是指向的类不是同一个form啊
把/ 去掉
<html:form action="Register.do">
或者把do去掉 <html:form action="/Register">
这两种方法都试过了,不行
按照书里的说法,struts会自动处理前缀和后缀to haidifotiaoqiang():
我在execute方法里有个打印语句,没有执行,所以推断RegisterAction没有执行
其他的地方怎么跟踪呢,涉及的java类只有form和action啊
HttpServletRequest request, HttpServletResponse response)
throws Exception {..................
}
你把下面这个
public ActionForward execute(ActionMapping mapping , ActionForm form , ServletRequest req, ServletResponse res)
{
改成上面的试试
你应该是覆盖了execute方法 所以什么也不执行
晚上一点还在呀!
首先struts和servlet过程是差不多的.他有一个Actionservlet类来处理所有用户的请求.当actionservlet接受到一个请求后:
通过请求的路径(象"/loginon"之类的路径)找actionmapping里面配置信息.找不到就报错.
把请求数据保存到form里面.如果没有配置form ,那么应该就在基本的actonform的一个对象里面.并且根据配置做检验之类的工作.没通过校验就返回到input指定的那个页面
校验通过了就根据配置把这些东东转发到你请求的某个action (比如:"loginonActino")然后调用他的excute方法.
你的问题关键就在最后一步,你写的RegisterAction是继承了action这个类的,action这个类里面有一个方法excute, 他是所有XXXXAction 的入口方法 ,你需要做的是去实现他,就像实现抽象方法那样.这样调用excute的时候调用的就是子类的excute方法(就是你自己写的).如果以你那种错误的写法 你是重载方法名一样,参数列表不一样,这样调用excute方法的时候运行的是父类(action)的excute里面的内容,而父类里面是什么都没有的,所以你那里什么都不运行.
我讲得很乱啊 呵呵 你能看看struts里面这几个类的关系 看看他们的继承 重载 重写关系应该可以了.