日期:2014-05-19  浏览次数:20595 次

你用struts2怎么实现验证码的?
先说一下我实现验证码基本代码:
这是Admin_Left.jsp的代码
JScript code

<script type="text/javascript">   
        /*
            注册dojo事件用来显示验证码
        */              
        dojo.addOnLoad(function() {
          dojo.event.topic.subscribe('/retrieveUser', this, function(data, type, e){
          if(type == 'load') {
                    showUser(data);
                } else if(type == 'error') {
                    alert('Can not retrieve the Vocde');
                }
            });
        });
        function showUser(strUser) {      
            var UserHolder = document.getElementById('im');
            UserHolder.src ='getVocde.action';
            
        }
        </script>

<s:url id="userUrl" value="getVocde.action" />
<td colspan="2">
                                    验证码
                                    <input maxlength="4" size="2" name="logon.vcode">
                                    <img border="0" src="getVocde.action" width="57" height="22" id="im" 
                                        align="middle">
                                    <a target="main" href="MyCountManager/BSP_User_getpass.jsp">&nbsp;找回密码</a>&nbsp;&nbsp;
                                    <sx:a  href="%{userUrl}"  notifyTopics="/retrieveUser">看不清,换一张</sx:a>



下面是action的代码:
Java code

@Action(value ="getVocde", results = {@Result(name = "input",  type = "stream",params={"contentType", "image/jpeg", "contentDisposition", "filename=document.jpeg","bufferSize", "1024"})})
    public String execute()throws IOException {
        VImage v=new VImage();          //这是生成验证码的servlet
        try {
            v.doGet(ServletActionContext.getRequest(), ServletActionContext.getResponse());
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "input";
    }



我的问题很简单,就是单击“看不清,换一张”这个链接时,本来是只想更新<img id="im"/>这里的验证码,但结果是被跳转到另一个页面,这个页面就只有验证码这张图片。。。。?
我想可能是我后台传回来的是一张图片,所以点击这个链接就直接显示图片了?这该怎么改?没想出来





------解决方案--------------------
你可以再显示图片的那个链接里面链接到那个struts里面的action
------解决方案--------------------
或者你可以使用ajax实现异步刷新
------解决方案--------------------
一个验证码还用得着异步刷新吗
我的做法是用jsp做一个验证码页
如:img.jsp
然后在<img src="img.jsp"/>这样就实现验证码效果了
具体img.jsp怎么写 本人空间代码里有 希望对你有用
------解决方案--------------------
探讨

引用:

引用:

一个验证码还用得着异步刷新吗
我的做法是用jsp做一个验证码页
如:img.jsp
然后在<img src="img.jsp"/>这样就实现验证码效果了
具体img.jsp怎么写 本人空间代码里有 希望对你有用


得用"看不清,换一张"这个链接刷新

来了看一下