数据获取

小弟最近学习struts  ,做了一个用户登录的小练习,但是输入用户名和密码后,获取不到输入的数据。首先在struts.xml中配置:

   
        <action name="index">
            <result >
                /Loginform.jsp
            </result>
        </action>
        
      <action name="LoginAction" class="org.action.LoginAction" method="excute">
      
            <result name="success" >
                /success.jsp
            </result>
</action>

 主界面jsp页面:

<p><h1>用户登录</h1></p>
  <form name="Login" action="LoginAction" method="post">
   用户名:<input type="text" name="username"/><br>
   密码:<input type="password" name="password"/><br>
   <tr colspan="2">
   <td><input type="submit" value="登录"/></td>
   <td><input type="reset" value="取消"/></td>
   </tr>
  </form>

   

创建一个USER类 ,包含了username和password :

public class USER {
 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 USER(){
    //setUsername(getUsername());
    //setPassword(getPassword());
}
public String toString()
{
    return getUsername()+getPassword();
}

}

 action java文件:

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private USER User;

    public USER getUser() {
        return User;
    }
    public void setUser(USER user) {
        User = user;
    }
    
    public String excute() throws Exception{
    
        User=new USER();
        
        //User.username="www";
        //User.password="dede";
        return "success";
    }
}

 最后跳到显示信息的jsp页面success.jsp:只是显示我输入的数据

<s:property value="User" />

 

 

页面form改为

用户名:


密码:

public String excute() throws Exception{

    System.out.println(User.getUsername());

    //User.username="www";  
    //User.password="dede";  
    return "success";  
}  

[quote][code="java"]import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

/**
 * 
 */
private static final long serialVersionUID = 1L;
private USER User;

public USER getUser() {
    return User;
}
public void setUser(USER user) {
    User = user;
}

public String excute() throws Exception{

    [color=red]//User=new USER();//这里改为
    User = this.getUser();
            System.out.println(user.getUserName());[/color]
            //编码请遵循 驼峰模式 userName  ,not UserName;
    //User.username="www";
    //User.password="dede";
    return "success";
}

}[/code][/quote]

把上面两楼说的都jsp和action代码都修改了就可以了

在loginForm 的execute 改成如下

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

String usreName = request.getParameter("username");
String password = request.getParameter("password");

}

strut1 中无法在action中用get set 设置属性 或者获取属性值,可以通过配置一个UserForm 来处理
添加一个form 并设置属性
public class UserForm extends ActionForm
{
private String userName ;
private String password ;
public void set(String userName)
{
this.userName = userName ;
}
public String getUserName()
{
return this.userName ;
}
public void setPassword(String password)
{
this.password = password ;
}

public String getPassword()
{
    return this.password ;
}

}

在struts.xml 中添加




public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

UserForm uf = form ;

}

根据楼上的回答,我提示下
用户名:


密码:

估计是User取名字的问题,在set的时候第一个字母会自动转为小写,要不你试试
用户名:


密码:

[b]视图[color=darkred]form[/color]里面[color=red]name[/color]分别用[color=brown]user.username、user.password[/color] 不然前台数据无法传递到值栈中对应的[color=violet]user[/color]里面[/b]