不好意思,刚没写好就发出去了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;
}
}

解决方案 »

  1.   

    action path="/FirstWebDemo"这里跟页面的action完全不吻合。
      

  2.   

    奥,这个是我写错了,不好意思。register.jsp中  <body>
        <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>
      

  3.   

    RegisterForm.java代码如下:
    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啊
      

  4.   

    <html:form action="/Register.do"> 
    把/ 去掉 
     <html:form action="Register.do"> 
    或者把do去掉 <html:form action="/Register"> 
      

  5.   

    你设置个断点,用debug跟一下就知道了
      

  6.   

    to pengtao0615(Class 涛):一楼的帖子类路径是错的,我在二楼更正了(不知道怎么改原贴),请看一下to KingNE(一叠儿砖瓦):
    这两种方法都试过了,不行
    按照书里的说法,struts会自动处理前缀和后缀to haidifotiaoqiang():
    我在execute方法里有个打印语句,没有执行,所以推断RegisterAction没有执行
    其他的地方怎么跟踪呢,涉及的java类只有form和action啊
      

  7.   

    再顶一下,按我的理解,registerForm类接收register.jsp的请求,然后由ActionServlet封装成ActionForm对象,然后传给registerAction中的execute()方法,后者通过ActionMapping的findForward去匹配struts-config.xml中的<forward>,然后跳转到相关的页面。不知道对不对不太明白的是execute方法到底是如何触发的,我的程序好像根本就没执行麻烦各位再帮我看看,谢谢
      

  8.   

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {..................
    }
    你把下面这个
    public ActionForward execute(ActionMapping mapping , ActionForm form , ServletRequest req, ServletResponse res)
      {
    改成上面的试试
    你应该是覆盖了execute方法 所以什么也不执行
      

  9.   

    to yzc_1985():太感谢了,就是这个问题,散分虽然问题解决,可还是不太明白struts是如何调用execute()的,能否再给解释一下
      

  10.   

    to linumou() :
        晚上一点还在呀!
        首先struts和servlet过程是差不多的.他有一个Actionservlet类来处理所有用户的请求.当actionservlet接受到一个请求后:
         通过请求的路径(象"/loginon"之类的路径)找actionmapping里面配置信息.找不到就报错.
         把请求数据保存到form里面.如果没有配置form ,那么应该就在基本的actonform的一个对象里面.并且根据配置做检验之类的工作.没通过校验就返回到input指定的那个页面
         校验通过了就根据配置把这些东东转发到你请求的某个action (比如:"loginonActino")然后调用他的excute方法.
         你的问题关键就在最后一步,你写的RegisterAction是继承了action这个类的,action这个类里面有一个方法excute, 他是所有XXXXAction 的入口方法 ,你需要做的是去实现他,就像实现抽象方法那样.这样调用excute的时候调用的就是子类的excute方法(就是你自己写的).如果以你那种错误的写法 你是重载方法名一样,参数列表不一样,这样调用excute方法的时候运行的是父类(action)的excute里面的内容,而父类里面是什么都没有的,所以你那里什么都不运行.  
         我讲得很乱啊  呵呵  你能看看struts里面这几个类的关系 看看他们的继承 重载 重写关系应该可以了.