昏黄烛火轻摇晃
2017-12-01 12:45
采纳率: 61.5%
浏览 3.4k
已采纳

javaweb里面验证码为什么要放到session域里面,用request域不也可以实现?

在生成验证码的servlet里面获取后 将文字保存到request 然后进行转发 不也一样可以实现。转发不会更改浏览器地址,这样用户也感觉不到差别啊?求解

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2017-12-01 15:41
    已采纳

    你根本没搞清楚验证码是干嘛的。

    验证码的作用是防止机器人程序模拟用户访问网页(比如刷帖、批量购买、爬取大量数据)。验证码对于人来说,识别是简单的,对机器是复杂的。所以机器人编写的难度大大增加。

    如果验证码的正确答案放在request里,也就是发给客户端。那么机器人等于得到正确答案了,他还有什么困难去识别正确的验证码呢。

    一个不能阻止机器人的验证码,还不如干脆没有验证码。

    你以为验证码是装饰网站的摆设?

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 光哥_帅 2019-08-08 13:10

    request域的内容也能到客户端吗!之所以用session域是因为验证码本身就需要请求一次servlet 然后登录页面的登录也有一个servlet,这是两次请求,request的作用域没法在两次请求内共享,
    但是session可以的,它作用在一次会话,浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止,这就是会话。所以两个请求的request域不行,也做不到共享数据!

    然后在议
    在生成验证码的servlet里面获取后 将文字保存到request 然后进行转发 不也一样可以实现。转发不会更改浏览器地址,这样用户也感觉不到差别啊?
    不知道发帖人实现了吗?首先你也说了验证码的servlet里面获取后 将文字保存到request 然后进行转发,但是我想问你获取验证码也是一次请求啊,这次请求转发到别的地方,可是谁又来调取呢
    登录本身也是请求啊!

    评论
    解决 无用
    打赏 举报
  • 香可可 2020-06-13 18:18

    我本来和楼主想的一样,转发一下,然后我试了试,就比如

     <form action="/VerfiyCodeServlet" method="post">
            用户名:<input type="text" name="Uname"><br/>
            <img src="/JavaWebBiliBili/VerfiyCodeServlet"><br/>
        </form>
    

    然后当你去访问这个jsp的时候,有一个挺长的时间去反应,并且没有结果,如图图片说明
    然后把转发的代码注释掉,结果如图图片说明
    这个对比是明显的,所以不应该转发,不转发的话,那么用request就不好了,用session就不错了

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题