首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Struts2生成验证码放入session,action无法得到session解决思路

2012-04-17 
Struts2生成验证码放入session,action无法得到session在一个RandomAction中生成一个验证码后通过ActionCon

Struts2生成验证码放入session,action无法得到session
在一个RandomAction中生成一个验证码后通过
 ActionContext.getContext().getSession().put("random", rdnu.getString());
将生成的验证码字符串保存到session里,供用户登录或注册时验证是否输入正确
在RandomAction中使用
ActionContext.getContext().getSession().get("random"),可以正常获得session中值
但在另一个LoginAction中,同样的方法,答应出来的确是null;
请问如何解决。
代码如下:
RandomAction.java

Java code
import java.io.ByteArrayInputStream;import Web.RandomNumUtil;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class RandomAction extends ActionSupport{       /**     *      */    private static final long serialVersionUID = 1L;    private ByteArrayInputStream inputStream;       public String execute() throws Exception{           RandomNumUtil rdnu=RandomNumUtil.Instance();           this.setInputStream(rdnu.getImage());        ActionContext.getContext().getSession().put("random", rdnu.getString());        System.out.println("生成验证码:"+rdnu.getString());        System.out.println("获得验证码:"+ActionContext.getContext().getSession().get("random"));        return SUCCESS;       }       public void setInputStream(ByteArrayInputStream inputStream) {           this.inputStream = inputStream;       }       public ByteArrayInputStream getInputStream() {           return inputStream;       }}

RandomNumUtil.java(验证码生成方法类)
Java code
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.util.Random;import javax.imageio.ImageIO;import javax.imageio.stream.ImageOutputStream;public class RandomNumUtil {       privateprovider="java:MSG">

LoginAction.java
Java code
import com.ccniit.service.UserManager; 
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport  {

/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
private String username;
private String password1;
private String vercode;

public String getVercode() {
return vercode;
}



public void setVercode(String vercode) {
this.vercode = vercode;
}

private String msg;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

protected UserManager mgr;


public void setMgr(UserManager mgr) {
this.mgr = mgr;
}


public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword1() {
return password1;
}

public void setPassword1(String password1) {
this.password1 = password1;
}
public String showReg() throws Exception {
return SUCCESS;
}
public String login() throws Exception {
String ver2=(String) ActionContext.getContext().getSession().get("random");
System.out.println("random:" + ver2);
System.out.println("用户输入:" + getVercode());
if (getVercode().equals(getVercode())) {
if (mgr.login(getUsername(), getPassword1()) > 0) {
System.out.println("SUCCESS");
return SUCCESS;

} else {



setMsg("用户名/密码错误");

}
} else {
setMsg("验证码不匹配,请重新输入");
}
System.out.println("INPUT");
return INPUT;
}



}


最后使用spring管理Struts.xml
XML code
<package name="json" extends="json-default">        <action name="validateName" class="validateName">            <result type="json">            </result>        </action>    </package>

applicationContext.xml
XML code
<bean name="rand" class="com.ccniit.Action.RandomAction" scope="prototype" />  



同一个action中可以得到session,但在另一个action中却返回空

[解决办法]
探讨
引用:
没看出什么问题,我有完整的struts2的注册码,要不我发给你吧,给邮箱

kfitdj12333@163.com

热点排行