请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于验证码的生成过程

课程中用到的kaptcha验证码的生成过程不太明白,只是在web.xml里配置了servlet,那通过/Kaptcha这个请求到底访问了什么资源,servlet对这个请求是如何处理返回响应的,麻烦老师详细解释一下,谢谢!

正在回答 回答被采纳积分+3

1回答

慕田峪944480 2020-04-12 20:03:52

https://www.cnblogs.com/myseries/p/10695141.html 这篇文章我觉得写的比较详细。

大概原理就是 servlet调用的方式就是初始时调用 init(),然后每次会调用service(),如果销毁会调用destory()。


web.xml 你配置了 url-pattern 和 Kaptcha的类。


Kaptcha继承了 HttpServlet。每次启动Tomcat会调用Kaptcha.init()的方法将配置信息加载进去,进行初始化,或者懒加载……

然后每次访问到/kaptcha的时候,对调用 Kaptcha.service(),虽然Kaptcha里面没有,但是他的父类 HttpServlet有,其实service主要判断方法,get post,put之类的,因为每次都是get方法,所以会调用 Kaptcha里的doGet,就能接收到生成的验证码了。剩下的如何生成验证码图片就靠你读源代码了~



回复里没法更新代码块,就更新在这了

 <servlet-name>Kaptcha</servlet-name>
 <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>


1 回复 有任何疑惑可以回复我~
  • 提问者 慕沐8221787 #1
    这个是servlet运行的基本原理,我想知道的是,Kaptcha控制器类并不在本地服务器,/Kaptcha请求是如何发到这个控制器的,中间过程和路径是怎样实现的,麻烦翔仔老师解答一下,谢谢!
    回复 有任何疑惑可以回复我~ 2020-04-12 21:27:06
  • 慕田峪944480 回复 提问者 慕沐8221787 #2
    明明在本地啊……Maven导入的啊……
    回复 有任何疑惑可以回复我~ 2020-04-12 21:42:13
  • 提问者 慕沐8221787 #3
    maven怎么导入com.google.code.kaptcha.servlet.KaptchaServlet这个类了,什么地方体现了?不明白
    回复 有任何疑惑可以回复我~ 2020-04-12 23:23:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信