老师我有个疑问

老师我有个疑问

为什么我们使用Kaptcha框架,只要引入了kaptcha的jar包之后,然后在web.xml中对kaptcha进行注册就能直接用呢?

就能直接request.getSession().getAttribute("KAPTCHA_SESSION_KEY");这样去获取到生成的随机验证码呢?我们明明都没去创建Servlet的类呀?

请老师解答一下,谢谢!

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好。下面来一条条回答你的疑惑:

1、所谓框架,其实只是他人已经写好的类的集合,和我们自己写好的工具类一样。使用框架的好处就是我们不用关心这些类具体是如何实现的,只要我们将其添加到自己的工程目录中,我们就可以像调用自己的工具类一样使用它。

在这里,我们可以观察一下kaptcha在web.xml的配置:

<servlet>
        <servlet-name>Kaptcha</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
        <init-param>
            <param-name>kaptcha.border</param-name>
            <param-value>no</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.image.width</param-name>
            <param-value>100</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.image.height</param-name>
            <param-value>40</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.font.size</param-name>
            <param-value>28</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.string</param-name>
            <param-value>qwertyuiopasdfghjklzxcvbnm123456789</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.length</param-name>
            <param-value>4</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.noise.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.DefaultNoise</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.obscurificator.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.FishEyeGimpy</param-value>
        </init-param>
        <init-param>
            <!--session.setAttribute("kcode",生成好的验证吗)-->
            <param-name>kaptcha.session.key</param-name>
            <param-value>kcode</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Kaptcha</servlet-name>
        <url-pattern>/kaptcha.jpg</url-pattern>
    </servlet-mapping>

我们来解读一下,其实实质上,只是配置了一个名为Kaptcha的Servlet,为它提供了一些初始化参数,只要请求路径带有kaptcha.jpg就进入这个Servlet进行处理。到这里我们明白,Kaptcha其实可以看做是一个Servlet。我们实际上是用了使用Servlet的方法来配置了Kaptcha。

2、JavaScript中不能直接使用Java代码。但JavaScript也是面向对象的,JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等等。并且JavaScript 允许自定义对象。

这里使用的是JavaScript的内置对象Date,getTime() 是已经定义的Date中的一个方法,返回从 1970 年 1 月 1 日至今的毫秒数。也就是老师口中的时间戳。

有关Date对象的其他用法,同学可以参阅http://www.w3school.com.cn/js/js_obj_date.asp

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • MasonM 提问者 #1
    我懂了,谢谢你老师!
    2019-04-14 10:44:25
提问者 MasonM 2019-04-14 09:47:26

而且我想问一下,为什么在这个js代码中,可以直接用java代码?在js代码中也可以直接使用java代码吗?

http://img1.sycdn.imooc.com//climg/5cb291140001731a07980138.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师