这个写法我也不知道,这样写你Action中的属性又怎样取得,难道属性命名 user.name??合法??一般写法 <input type="text" name="username">
解决方案 »
- jsp中使用javabean实现简单运算 纠结ing 求大神!!!!
- 如何让一个servlet在Tomcat启动时就运行?
- JSP页面多条记录,每条记录均有一复选框(如性别),如何提交后台并操作?
- 怎样在java实现存储过程?
- 求桌面应用程序使用连接池的例子.
- JBOSS环境下,JNDI操作数据库锁表的问题
- 求教在jsp中获得checkbox的值
- 菜鸟问题:在jsp中,怎样到指定服务器下在.zip文件 一定送分
- 关于文件上传断点续传的
- WebSocket兼容ie9浏览器问题,求大神帮帮忙
- apache tomcat 二级域名
- struts2+spring+hibernate整合总出错,请高深人士指点下,很急
比如你要做一个用户注册,你可能已经创建了一个实体类,假如叫做 User,保存的是与用户相关的信息(比如用户名、地址等)。
public class User
{
private String name; //getter & setter
}
然后你去使用Struts2,我们知道,Struts2是使用Action来接收请求参数的,所以这个时候你必须在Action中定义一些用户信息,与 User 类中的用户信息是对应的。显然,这样做很麻烦,会多很多重复的代码。所以我们在写这个Action的时候,就不再一一定义那些用户名、地址等等的了。直接这样定义:
public MyAction
{
private User user = new User(); //在Struts2中,也可以不实例化 //setter & getter
}
那么页面上如何给Action中的user中的name赋值呢?用的就是“user.name”啦,意思是“当前Action中的user中的name”。呵呵。小结:
1、“user.name”的意思就是“当前Action中的user中的name”
2、这样做的好处很多:省代码、使用方便……等
3、除Struts2外,其它某些框架(比如Struts1)中也有类似用法
的确是这个样子的,你在 action中 有一个属性 User 这个User有一个 name的属性。你这样写 就自动的 把这个input的值和 user中的name绑定了
user在action中要写的一个POJO类
2.user属性的类型是一个JavaBean类型,它里面有name属性等等。。例:
JavaBean:public class UserBean { private String name;
private String password; //两个属性变量都有get/set方法。
}struts2 Action写法:public class LoginAction extends ActionSupport { private UserBean user;
// user有get/set方法}你画面就可以那么写了。
user是action的一个属性
name是user的属性struts2在找的时候,会到action中找user属性,然后在找user中的name属性
工作方式如下:getUser().getName()
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;
}
}
package com.struts2.action;import com.opensymphony.xwork2.ActionSupport;
import com.struts2.model.User;public class UserAction extends ActionSupport {
/**
* 此处的action为了防止getter和setter方法过多 所以用了一个User对象的引用 保持action的代码整洁
*/
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} @Override
public String execute() throws Exception { if ("abc".equalsIgnoreCase(user.getUsername())
&& "cde".equalsIgnoreCase(user.getPassword())) {
return SUCCESS;
} else {
return ERROR;
} }
}
<s:form action="login" method="post">
<s:textfield name="user.username" label="username"/>
<s:textfield name="user.password" label="password"/>
<s:submit value="submit"/>
</s:form >