<s:form action="login.action" method="post" >
<table>
<tr>
<td>
<s:textfield name="loginUser.num" size="18" maxlength="30" label="用户名"/>
</td>
</tr>
<tr>
<td>
<s:password name="loginUser.password" size="18" maxlength="15" label="密 码" />
</td>
</tr>
<tr>
<td colspan="2">
<div id="button">
<s:submit value="登陆" />
</div>
</td>
</tr>
</table>
</s:form>这种形式的表单,loginUser.num与loginUser.password
在提交时,这两个值是怎么传到session中的?如果要用的话,怎么取出来?
<table>
<tr>
<td>
<s:textfield name="loginUser.num" size="18" maxlength="30" label="用户名"/>
</td>
</tr>
<tr>
<td>
<s:password name="loginUser.password" size="18" maxlength="15" label="密 码" />
</td>
</tr>
<tr>
<td colspan="2">
<div id="button">
<s:submit value="登陆" />
</div>
</td>
</tr>
</table>
</s:form>这种形式的表单,loginUser.num与loginUser.password
在提交时,这两个值是怎么传到session中的?如果要用的话,怎么取出来?
解决方案 »
- freemarker的解析引擎是怎么工作的
- 问一小问题
- 请教高手们一个关于ping ip 与webservice的问题
- 用myeclipse平台开发J2EE程序,用什么linux好?
- 请问SqlServer2000Driver JDBC驱动放到什么地方?急!急!高分相送!
- 遍历map的问题
- Struts2编程规范的一个问题?
- 开源邪说!—— 盲目开源到底是什么?到底伤害着谁?
- 求用poi提取word,ppt,或excel 文本内容的例子
- StringBuffer append 报错
- 关于Java Socket的一个问题,求教高手
- 求个ext3.1+,struts2,hibernate,spring的demo
贴下代码吧public class UserLoginAction extends ActionSupport implements SessionAware{
private Map session;
private UserBean loginUser;
boolean flag = false;
public void setSession(Map session){
this.session = session;
}
public UserBean getLoginUser() {
return loginUser;
} public void setLoginUser(UserBean loginUser) {
this.loginUser = loginUser;
}
public String execute() throws Exception {
// TODO Auto-generated method stub
/*没有加入数据库验证的验证代码
if(id.equals("dream")&&psw.equals("6642391")){
LoginLog ll = new LoginLog();
ll.save(id, psw);
return SUCCESS;
}
else
return ERROR;
*/
//加入数据库验证之后的代码
if(flag == true){
LoginLog ll = new LoginLog();
ll.save(loginUser.getNum()+"", loginUser.getPassword());
return SUCCESS;
}
else
return INPUT;
}
@Override
public void validate() {
// TODO Auto-generated method stub
UserManager um = new UserManager();
flag = um.isUserExit(loginUser);
int type = um.getTypeById(loginUser.getNum());
session.put("type", type);
if(loginUser.getNum() == 0)
addFieldError("loginUser.num","输入用户名不能为空!");
if(loginUser.getPassword().equals(""))
addFieldError("loginUser.password","输入的密码不能为空!");
if(flag == false)
addFieldError("loginUser.num","此用户不存在!");
}
}我主要是想,用拦截器来拦截没有登陆的用户的
在拦截器类中,要取得session中的loginUser.num时,取不到
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
// 取得请求的Action名
// 取得Session。
ActionContext ac = invocation.getInvocationContext();
Map session = ac.getSession();
System.out.println("session:"+session.get("num"));
if (session.get("loginUser") == null) {
return Action.LOGIN;
}
else{
return invocation.invoke();
}
} }这个是拦截器类
loginUser.num
loginUser.password
这种形式的表单属性,传不到session中,但是可以传到request中?如果可以传到request中,怎么取出来?求详解~!
loginUser.num
loginUser.password
这种形式的表单属性,在Form提交的时候,struts2不会自动放到Session中,必须手动放置,struts2会自动放到ActionContext中的request和ValueStack中。2。loginUser.num
loginUser.password
从request中取得:Action中取得:直接在Action中使用loginUser.password即可。 或 String pwd = ServlertActionContext.getReqeust().getParameter("loginUser.password");
-------->>>
implements SessionAware,ServletRequestAwareprivate HttpServletRequest request;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}这样loginUser就能取得,然后可以放到session中
定义public HttpServletRequest request; (提供get set) public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0; }以 request.getSession().setAttribute(name, value); 这种形式将你需要 的直 存入 session中