Java的Cookie、Session及kaptcha验证码如何使用(cookie,java,session,开发技术)

时间:2024-05-03 01:36:39 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Java%E7%9A%84Cookie%E3%80%81Session%E5%8F%8Akaptcha%E9%AA%8C%E8%AF%81%E7%A0%81%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8

是服务器通知客户端保存键值对的一种技术。

cookie 是 servlet(服务器) 发送到 Web 浏览器(客户端)的少量信息,这些信息由浏览器保存,然后发送回服务器。

客户端有了 cookie 后,每次请求都发送给服务器

每个 cookie 的大小不能超过 4 KB。

CookieUtils.java

Cookie的生命控制,即Cookie什么时候销毁

API:setMaxAge(int expiry)

正值表示 cookie 将在经过该值表示的秒数后过期 (关闭浏览器再次访问还在)负值意味着 cookie 不会被持久存储,将在 Web 浏览器退出时删除 (默认是负数,-1)0 值表示马上删除 cookie。

修改后记得 resp.addCookie(cookie);

有效路径Path 可以过滤哪些Cookie可以发送给服务器,那些不发。

Path是通过请求的地址来进行有效的过滤

例如:

cookie1 path=/工程路径

cookie2 path=/工程路径/abc

请求地址: (默认是当前的工程路径)

http://ip:port/工程路径/a.html 则cookie1会发送给服务器,cookie2不发送

http://ip:port/工程路径/abc/d.html cookie2,cookie1都发送!!

前端:login.jsp

后端:LoginServlet.java

Session是一个接口(HttpSession),就是会话。

用来维护一个客户端和服务器之间关联的一种技术。

每个客户端都有它自己的一个Session。

Session会话中,我们经常用来保存用户登录之后的信息。

创建和获取都是一个函数 request.getSession()

第一次调用是创建Session,之后调用都是获取前面创建好的Sesson会话对象

isNew() : 判断是不是刚创建出来的(是不是新的)

getId() : 每个会话都会有个唯一id值

存取:

获取:

API:public void setMaxInactiveInterval(int interval)

设置Session的超时时间(秒为单位),超过时长就会被销毁(是最大不活跃间隔!)

正数是超时时长,负数是永不超时。注意:0不是立即销毁,立即销毁是session.invalidate()

获取方法:public int getMaxInactiveInterval()

默认是1800秒,即半小时。

因为在Tomcat的服务器的配置文件web.xml中,有写<session-timeout>30</session-timeout>

如果我希望我们工程的Session不想是30分钟,可以在自己项目下的web.xml做以上相同的配置,就可以修改工程下所有Session的默认超时时长了。

如果只想修改个别Session的超时时长,则需要使用session.setMaxInactiveInterval(interval) 方法

超时时长:指的是客户端两次请求的最大间隔时长!!

当客户端没有Cookie信息的时候,发送请求,服务器会(调用req.getSession())创建Session对象,每次创建Session会话的时候,都会创建一个Cookie对象,这个Cookie对象的key永远是:JSESSIONID,value是新创建出来的Session的Id。然后通过响应头返回给客户端。

当客户端有了这个Cookie之后,每次请求会把Session的Id以Cookie的形式发送给服务器,然后服务器这边会通过Id查找自己之前创建好的Session对象(调用req.getSession()),并返回。

如果上次创建的Session的没过期的时候,我们手动把Cookie信息删掉的话,服务器就没法通过得到id,就没法找到之前的那个Session对象,客户端发送请求的时候,服务器则会重新创建新的Session会话,重复上面的操作。

Session 技术,底层其实是基于 Cookie 技术来实现的

验证码可以解决表单重复提交的情况

我们可以使用第三方的jar包,谷歌验证码,kaptcha-2.3.2.jar

导包在 web.xml 中去配置用于生成验证码的Servlet程序 (即com.google.code.kaptcha.servlet.KaptchaServlet这个类,谷歌写的)

在表单中使用 img标签去显示验证码并使用它

在服务器获取谷歌生成的验证码和客户端发来的验证码比较使用 (获取后记得马上删除)

获取谷歌生成的验证码 :req.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);

获取用户提交的验证码:req.getSession().getAttribute("code")

本文:Java的Cookie、Session及kaptcha验证码如何使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Feign超时在yml文件里怎么配置下一篇:

14 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18