要说Cookie是怎么来的,先来说说Http请求的特点
Http协议是无连接的,意思是说当我们的浏览器请求服务器的一个页面时,一旦请求完成,服务器作出响应,客户端浏览器拿到这个页面的内容,立即断开连接,说白了就是Socket关闭了,浏览器和服务器之间就没有连接了。
那有个问题比如,我们上京东买本书,在还未登陆的情况下(避免与Session冲突),通常情况是在一个页面点击购买或加入购物车,点击结账会跳到另一个页面,另一个页面会显示我们购买的书。
既然Http协议是无连接的,当我们通过第一个页面点击购买后,连接就断了,哪到第二个页面,它(服务器)怎么知道我买的是哪本书,或者知道我买的是什么,或者我是谁?这就是Cookie在起作用,它帮服务器记住了。(当然这里除了Cookie,还有浏览器的特性,比如每个浏览器有唯一的编号,当我请求第二个页面时,服务器会到我本地来取Cookie信息)
因为Http协议是无连接的,所以它需要一种类似QQ聊天那样的不断与服务器保持连接的机制,用它来记录着客户端浏览器在我服务器端都干什么了,用我们的行话来说就是维护用户跟服务器间的会话状态,所以就产生了Cookie,Session, 以及Application等会话技术。
那Cookie到底是个什么东西呢?
Cookie是服务端写在客户端本地一个文件,你放心不会是病度或木马,因为Cookie只允许它创建txt的文本文件。客户端浏览器也可以阻止Cookie的写入,比如上面买书,如果浏览器Cookie被禁止写入,那么第二个页面购物车将看不到任何东西。还有每个网站写的Cookie都不一样,新浪可以写,搜狐也可以写,但它们都只能拿自己的Cookie。
以Java为例,说说Cookie的用法:
Cookie是以“名-值”对的形式保存的,类似Map;
创建Cookie:new Cookie(name,value);
setName(String name) / getName();
setValue(String value) / getValue();
setMaxAge(int expiry) / getMaxAge();
利用HttpServletResponse的addCookie(Cookie cookie)方法将Cookie设置到客户端;
利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie;
因为Cookie可以设置存活时间setMaxAge(int expiry),因此就有了存储方式的不同:
1.设置了存活时间的Cookie,会在客户端本地创建一份Cookie文件。
2.没有设置存活时间的Cookie,会在客户端浏览器内存中创建一份Cookie,它在本地Cookie文件中是找不到的,它的生命周期依赖于浏览器窗口,当浏览器窗口关闭,它将消失,而且其它新开的浏览器窗口都访问不到它,只有它和它的子窗口,即通过window.open()出来的,可以访问,测试的时候可以使用快捷键ctrl+n弹出一个子窗口。
经过测试改变设置和访问Cookie的URL路径,Cookie的访问也会有所不同:
1.设置Cookie的Servlet URL:/servlet/SetCookies
访问Cookie的Servlet URL:/ShowCookie
发现SetCookies可以创建Cookie,但ShowCookie访问不到
2.设置Cookie的Servlet URL:/SetCookies
访问Cookie的Servlet URL:/servlet/ShowCookie
发现SetCookies可以创建Cookie,ShowCookie也访问到
从包结构的访问层次来说,就是因为1中,ShowCookie路径比SetCookies高一级,而2中,ShowCookie是SetCookies的子级,因此可以得出一个Jsp/Servlet设置的Cookie可以被同一路径或子路径的Jsp/Servlet访问得到。
总结一下Cookie的特点:
1.服务器可以向客户端写内容
2.只能写文本内容
3.只能拿自己webapp写入的Cookie
4.客户端可以阻止服务器Cookie的写入
5.Cookie分两种:
存在于文本文件
存在于内存(属于窗口/子窗口)
6.一个Jsp/Servlet设置的Cookie可以被同一路径或子路径的Jsp/Servlet访问得到
以上是个人学习和总结,欢迎拍砖。
相关推荐
通常,Tomcat默认监听8080端口,通过webapp目录来加载和运行Web应用。 - **架构设计** - **连接器模型**:Tomcat支持两种连接器模型,即BIO( Blocking I/O)和NIO(Non-blocking I/O)。BIO模型采用同步阻塞的...
7. **用户认证与授权**:理解如何实现用户注册、登录功能,以及权限管理,可能涉及session和cookie的使用。 8. **错误处理与日志记录**:了解如何优雅地处理程序中的异常,以及设置日志系统以便于调试和维护。 9. ...
这个教程将帮助您理解JWT的工作原理,并提供实践指导,确保您的Web应用的安全性。 一、JWT简介 JWT由三个部分组成:头部(Header)、载荷(Payload)和签名(Signature)。它们之间用点(.)分隔。头部和载荷是JSON...
`src\main\webapp\resources\assets2\js\wizard\lib\jquery.cookie-1.3.1.js`是jQuery Cookie库的引用,用于处理客户端的Cookie,可能在用户会话管理和个性化设置中发挥作用。 `src\main\webapp\resources\My97...
1. **洋码头**: 嘻嘻在此项目中负责部分页面布局和JavaScript逻辑控制,使用了div+css布局,正则表达式,jQuery实现效果,Ajax调用后台数据,以及cookie应用。 2. **洋葱淘**: 她在WebApp项目中负责手机端布局和...
总之,Servlet是Java Web开发的基础,了解其基本概念和工作原理对于构建高效、可靠的Web应用程序至关重要。通过深入学习Servlet的工作机制,开发者可以更好地控制Web应用程序的行为,从而提高应用的安全性和性能。
当这个输入在前端页面中被显示或者在后端中被执行时,注入的JavaScript代码也会随之执行。这种注入可以影响到网站的用户,甚至能获取用户的敏感信息,如Cookie中的会话令牌等。 注入漏洞的关键在于两个动作:首先,...
- `webapp`:Web应用的根目录,包含JSP页面、Servlet配置和静态资源。 - `WEB-INF`:存放Web应用的配置文件,如`web.xml`,定义了Servlet的映射和初始化参数。 - `src/main/java`:Java源代码目录,包含Servlet类和...
专业技能方面,该简历模板涵盖了多个技术栈,包括 HTML、CSS、JavaScript、响应式布局、弹性盒布局、HTML5、WebApp、移动端适配、CSS3、JSON、LocalStorage、SessionStorage、Cookie、本地存储、HTTP 协议、ES6、...
过滤器的工作原理是基于Servlet规范中的Filter接口。当一个HTTP请求到达服务器时,过滤器链会被触发,每个过滤器都有机会检查请求并决定是否允许其通过,或者进行一些预处理操作。如果过滤器允许请求继续,它会将...
用户登录成功后,CAS Server会产生一个Service Ticket并缓存,同时通过Ticket Granted Cookie(TGC)返回给客户端浏览器。之后,CAS Client会利用Service和Ticket与CAS Server进行校验,确保Service Ticket的有效性...
【标题】"基于javaweb实现的简单购物商城0418.rar" 是一个压缩包文件,它包含了一个使用JavaWeb技术开发的简易在线购物商城的源代码和相关...通过分析和运行这个项目,可以深入理解JavaWeb技术栈的工作原理和实际应用。
用户首次访问受保护的应用时,会被重定向到CAS服务器进行身份验证,成功后会生成TGT,这个TGT存储在用户的浏览器cookie中。之后,当用户尝试访问其他受CAS保护的应用时,只需要检查他们是否拥有有效的TGT,无需再次...
2. **src**:源代码目录,通常分为java和webapp两个子目录,java存放Java类文件,webapp可能存放Servlet和JSP页面。 3. **WEB-INF**:存放Web应用的配置文件,如web.xml(Web应用部署描述符),以及库文件(lib)。 ...
2. cas-server-webapp-4.0.0.war: 这个war文件是CAS Server的web应用程序,包含了运行CAS Server所需的所有类和资源。它可以被直接部署到支持Servlet 3.0或更高版本的任何Java应用服务器,如Tomcat、Jetty等。部署...
通过学习和运行这个代码,读者可以亲身体验Python Web开发的魅力,理解Web应用的基本工作原理,并逐步构建自己的Web服务。同时,这也是一个极好的实践机会,可以帮助巩固理论知识并提升实际编程技能。
以下将详细介绍其中的关键技术和实现原理。 首先,核心框架是MyBatis,这是一个流行的Java持久层框架,它简化了数据库操作,通过SQL映射文件将Java对象与数据库记录关联起来。MyBatis的优势在于它的灵活性,允许...
通过分析和研究这个Java Web投票系统,你可以深入理解Struts框架的工作原理,学习如何利用JFreeChart生成图表,同时还能了解Java Web开发的基本流程和组件。对于想要提升Java Web开发技能的开发者来说,这是一个很好...
1. **修改部署配置文件**:打开`cas-server-webapp\WEB-INF\deployerConfigContext.xml`文件,找到`SimpleTestUsernamePasswordAuthenticationHandler`配置项,将其替换为`QueryDatabaseAuthenticationHandler`。...
XSS则能让攻击者在用户浏览器上执行恶意脚本,可能窃取用户的会话cookie或其他个人信息。文件包含漏洞可能导致远程代码执行,当应用程序不正确地处理用户提供的文件路径时,攻击者可以指定包含远程文件,从而执行...