小弟最近学习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]