老师我有个疑问
为什么我们使用Kaptcha框架,只要引入了kaptcha的jar包之后,然后在web.xml中对kaptcha进行注册就能直接用呢?
就能直接request.getSession().getAttribute("KAPTCHA_SESSION_KEY");这样去获取到生成的随机验证码呢?我们明明都没去创建Servlet的类呀?
请老师解答一下,谢谢!
正在回答
同学你好。下面来一条条回答你的疑惑:
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
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星