`
king_tt
  • 浏览: 2299953 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java-Cookie源码

 
阅读更多
  1. publicclassCookieimplementsCloneable{
  2. privatestaticfinalStringLSTRING_FILE=
  3. "javax.servlet.http.LocalStrings";
  4. privatestaticResourceBundlelStrings=
  5. ResourceBundle.getBundle(LSTRING_FILE);
  6. //cookie本身的值
  7. privateStringname;//NAME=..."$Name"styleisreserved
  8. privateStringvalue;//valueofNAME
  9. //cookie的头部信息
  10. privateStringcomment;//;Comment=VALUE...describescookie'suse
  11. //;Discard...impliedbymaxAge<0
  12. privateStringdomain;//;Domain=VALUE...domainthatseescookie
  13. privateintmaxAge=-1;//;Max-Age=VALUE...cookiesauto-expire
  14. privateStringpath;//;Path=VALUE...URLsthatseethecookie
  15. privatebooleansecure;//;Secure...e.g.useSSL
  16. privateintversion=0;//;Version=1...meansRFC2109++style
  17. /**
  18. *Constructsacookiewithaspecifiednameandvalue.
  19. *
  20. *@paramnamea<code>String</code>specifyingthenameofthecookie
  21. *
  22. *@paramvaluea<code>String</code>specifyingthevalueofthecookie
  23. *
  24. *@throwsIllegalArgumentExceptionifthecookienamecontainsillegalcharacters
  25. *(forexample,acomma,space,orsemicolon)
  26. *oritisoneofthetokensreservedforuse
  27. *bythecookieprotocol
  28. *@see#setValue
  29. *@see#setVersion
  30. *
  31. */
  32. //构造函数,指定特定的name和value
  33. publicCookie(Stringname,Stringvalue){
  34. if(!isToken(name)
  35. ||name.equalsIgnoreCase("Comment")//rfc2019
  36. ||name.equalsIgnoreCase("Discard")//2019++
  37. ||name.equalsIgnoreCase("Domain")
  38. ||name.equalsIgnoreCase("Expires")//(oldcookies)
  39. ||name.equalsIgnoreCase("Max-Age")//rfc2019
  40. ||name.equalsIgnoreCase("Path")
  41. ||name.equalsIgnoreCase("Secure")
  42. ||name.equalsIgnoreCase("Version")
  43. ||name.startsWith("$")
  44. ){
  45. StringerrMsg=lStrings.getString("err.cookie_name_is_token");
  46. Object[]errArgs=newObject[1];
  47. errArgs[0]=name;
  48. errMsg=MessageFormat.format(errMsg,errArgs);
  49. thrownewIllegalArgumentException(errMsg);
  50. }
  51. this.name=name;
  52. this.value=value;
  53. }
  54. /**
  55. *
  56. *Specifiesacommentthatdescribesacookie'spurpose.
  57. *Thecommentisusefulifthebrowserpresentsthecookie
  58. *totheuser.Comments
  59. *arenotsupportedbyNetscapeVersion0cookies.
  60. *
  61. *@parampurposea<code>String</code>specifyingthecomment
  62. *todisplaytotheuser
  63. *
  64. *@see#getComment
  65. *
  66. */
  67. //cookie的说明
  68. publicvoidsetComment(Stringpurpose){
  69. comment=purpose;
  70. }
  71. //返回cookie数目,为空返回null
  72. publicStringgetComment(){
  73. returncomment;
  74. }
  75. /**
  76. *Specifiesthedomainwithinwhichthiscookieshouldbepresented.
  77. *<p>TheformofthedomainnameisspecifiedbyRFC2109.Adomain
  78. *namebeginswithadot(<code>.foo.com</code>)andmeansthat
  79. *thecookieisvisibletoserversinaspecifiedDomainNameSystem
  80. *(DNS)zone(forexample,<code>www.foo.com</code>,butnot
  81. *<code>a.b.foo.com</code>).Bydefault,cookiesareonlyreturned
  82. *totheserverthatsentthem.
  83. *@parampatterna<code>String</code>containingthedomainname
  84. *withinwhichthiscookieisvisible;
  85. *formisaccordingtoRFC2109
  86. *
  87. *@see#getDomain
  88. */
  89. //给cookie设置在某个domain中有效
  90. publicvoidsetDomain(Stringpattern){
  91. domain=pattern.toLowerCase();//IEallegedlyneedsthis
  92. }
  93. //获得作用域
  94. publicStringgetDomain(){
  95. returndomain;
  96. }
  97. /**
  98. *Setsthemaximumageofthecookieinseconds.<p>Apositivevalueindicatesthatthecookiewillexpireafterthatmanysecondshavepassed.Notethatthevalueis
  99. the<i>maximum</i>agewhenthecookiewillexpire,notthecookie'scurrentage.
  100. *<p>Anegativevaluemeans
  101. *thatthecookieisnotstoredpersistentlyandwillbedeleted
  102. *whentheWebbrowserexits.Azerovaluecausesthecookie
  103. *tobedeleted.
  104. *@paramexpiryanintegerspecifyingthemaximumageofthecookieinseconds;ifnegative,meansthecookieisnotstored;ifzero,deletes
  105. *thecookie
  106. *@see#getMaxAge
  107. */
  108. //cookie的生存时间
  109. publicvoidsetMaxAge(intexpiry){
  110. maxAge=expiry;
  111. }
  112. //获得最大生存时间
  113. publicintgetMaxAge(){
  114. returnmaxAge;
  115. }
  116. //客户端返回的cookie在某个路径
  117. publicvoidsetPath(Stringuri){
  118. path=uri;
  119. }
  120. //返回客户端返回的cookie在server上的地址
  121. publicStringgetPath(){
  122. returnpath;
  123. }
  124. /**
  125. *Indicatestothebrowserwhetherthecookieshouldonlybesent
  126. *usingasecureprotocol,suchasHTTPSorSSL.
  127. *<p>Thedefaultvalueis<code>false</code>.
  128. *@paramflagif<code>true</code>,sendsthecookiefromthebrowser
  129. *totheserveronlywhenusingasecureprotocol;
  130. *if<code>false</code>,sentonanyprotocol
  131. *@see#getSecure
  132. */
  133. publicvoidsetSecure(booleanflag){
  134. secure=flag;
  135. }
  136. publicbooleangetSecure(){
  137. returnsecure;
  138. }
  139. //返回cookie的name,一旦创建name不可变
  140. publicStringgetName(){
  141. returnname;
  142. }
  143. //给cookie赋值
  144. publicvoidsetValue(StringnewValue){
  145. value=newValue;
  146. }
  147. //获得cookie的值
  148. publicStringgetValue(){
  149. returnvalue;
  150. }
  151. //返回cookie依从的协议版本
  152. publicintgetVersion(){
  153. returnversion;
  154. }
  155. //设置版本
  156. publicvoidsetVersion(intv){
  157. version=v;
  158. }
  159. //Note--disabledfornowtoallowfullNetscapecompatibility
  160. //fromRFC2068,tokenspecialcasecharacters
  161. //
  162. //privatestaticfinalStringtspecials="()<>@,;:\\\"/[]?={}\t";
  163. privatestaticfinalStringtspecials=",;";
  164. /*
  165. *Testsastringandreturnstrueifthestringcountsasa
  166. *reservedtokenintheJavalanguage.
  167. *
  168. *@paramvaluethe<code>String</code>tobetested
  169. *
  170. *@return<code>true</code>ifthe<code>String</code>is
  171. *areservedtoken;<code>false</code>
  172. *ifitisnot
  173. */
  174. privatebooleanisToken(Stringvalue){
  175. intlen=value.length();
  176. for(inti=0;i<len;i++){
  177. charc=value.charAt(i);
  178. if(c<0x20||c>=0x7f||tspecials.indexOf(c)!=-1)
  179. returnfalse;
  180. }
  181. returntrue;
  182. }
  183. //复制cookie
  184. publicObjectclone(){
  185. try{
  186. returnsuper.clone();
  187. }catch(CloneNotSupportedExceptione){
  188. thrownewRuntimeException(e.getMessage());
  189. }
  190. }
  191. }
</pre><pre>



  


  
分享到:
评论

相关推荐

    java-web超市管理系统源码

    【Java-Web超市管理系统源码解析】 在Java-Web开发领域,超市管理系统是一个常见的实践项目,它涵盖了多种关键技术和概念,对于学习和掌握Java-Web应用开发有着重要的作用。本系统采用Servlet技术来实现,Servlet是...

    java-web聊天室源码

    【Java-Web聊天室源码解析】 在互联网应用开发中,聊天室系统是常见的社交功能之一,它允许用户实时互动交流。本项目“java-web-html5-php”提供了一个基于Java Web、HTML5和PHP的聊天室源码,帮助开发者理解和构建...

    架构探险-从零开始写Java Web框架-全书源码

    全书源码的提供,使得读者能够更加直观地理解并实践书中的理论知识,这对于学习和提升Java Web架构设计与实现能力具有极大的帮助。 在构建Java Web框架的过程中,我们首先会接触到的是基础概念,如HTTP协议、...

    tomcat-7.0.42-src源码爱好者(已编译导入直接可用)

    【标题解析】 "tomcat-7.0.42-src源码爱好者(已编译导入直接可用)" 这个标题明确指出我们讨论的是Apache Tomcat服务器的7.0.42...对于希望成为高级Java开发者或系统架构师的人来说,掌握Tomcat源码是必不可少的一步。

    Java读写cookie源码.docx

    Java中的Cookie是Web应用程序用来在客户端浏览器存储和检索少量数据的一种机制。这些数据可以是用户登录状态、首选项或其他与用户交互相关的信息。在Java Web开发中,读取和设置Cookie主要通过`javax.servlet....

    基于JAVA-JSP电子书下载系统源码.zip

    这是一个基于JAVA-JSP技术开发的电子书下载系统源码,主要适用于学习和实践Web开发,尤其是对于Java初学者和毕业生设计项目来说极具参考价值。该系统可能包含了服务器端处理、前端展示以及用户交互等多个关键部分,...

    dubbo-admin-2.6.0 源码文件

    这个源码包包含了构建 dubbo-admin.war 文件所需的所有 Java 代码。 【描述】提到的 "java 源码文件,编译生成 dubbo-admin.war" 表明这是一个用于构建 Dubbo 管理后台的源代码集合。Dubbo-admin 是一个基于 Web 的...

    21天学通JAVA-WEB开发电子教案(PPT)

    9. **Session和Cookie管理**:用户会话跟踪和状态管理。 10. **过滤器和监听器**:在Web应用中实现预处理和后处理功能,以及监听应用程序事件。 11. **Eclipse或IntelliJ IDEA等IDE的使用**:学习如何设置开发环境,...

    java编写bbs源码

    Java 编写的 BBS 源码是一种基于 Java 语言实现的在线讨论平台,它提供了用户交流、发帖、回帖、搜索等功能。这个论坛系统是完全由 Java 语言构建的,利用了 Java 的面向对象特性、多线程以及网络编程能力。下面将...

    java-学生信息管理系统源码jsp&sevlet.zip

    【Java 学生信息管理系统源码 - JSP与Servlet实现详解】 这个压缩包"java-学生信息管理系统源码jsp&sevlet.zip"包含了使用Java技术栈开发的一个学生信息管理系统的完整源代码,主要采用了JSP(JavaServer Pages)和...

    《Java Web程序设计任务教程》-教材源码 第13-15章.rar

    源码第13-15章的压缩包提供了与教材内容紧密相关的实践代码示例,旨在帮助学习者深入理解并掌握Java Web应用程序的开发过程。以下是对这些章节涉及知识点的详细解析: ### 第13章:Servlet基础 1. **Servlet概念**...

    JSP在线考试--源码

    这可能通过session或cookie来实现用户状态的保持,用角色-权限模型进行权限控制。 5. **数据库设计** 在线考试系统需要一个精心设计的数据库来存储科目、试题、用户信息等数据。数据库表可能包括科目表、试题表、...

    Java项目实战-基于JAVA-JSP电子书下载系统(附源码,部署说明).zip

    《Java项目实战-基于JAVA-JSP电子书下载系统》是一个典型的Web应用开发案例,它结合了Java编程语言、JSP(JavaServer Pages)技术以及数据库管理,为用户提供了一个在线电子书下载平台。该项目的主要目标是实现用户...

    javaQQ--WEB网络聊天源码

    JavaQQ--WEB网络聊天源码是一个基于JAVA技术实现的在线聊天应用,主要针对Web环境设计。这个源码项目为开发者提供了一个很好的学习平台,能够帮助他们深入理解如何在Web环境中构建实时通信系统。以下是该源码涉及的...

    JAVA 论坛 源码AAA

    安全方面,JAVA论坛源码可能会涉及用户认证和授权机制,例如使用session和cookie来跟踪用户状态,防止未授权访问。此外,还可能应用XSS(跨站脚本)和CSRF(跨站请求伪造)防护策略来保护论坛的安全。 论坛系统的...

    tomcat源码,servlet-api源码

    对于开发者来说,理解Tomcat的源码可以帮助我们更好地优化应用性能,解决运行时问题,以及深入理解Java Web容器的工作原理。 1. **Tomcat架构解析** Tomcat的核心架构包括Catalina、 Coyote、 Jasper、 Juli和...

    Java爬虫实例完整源码

    通过学习和分析提供的"pc_javaDemo"源码,你可以深入了解每个组件的实现细节,以及它们如何协同工作,形成一个完整的爬虫系统。同时,这也是提升你Java编程能力和网络爬虫技术的绝佳机会。记得在实践过程中遵守网络...

    新年祝福墙源码-php源码

    源码可能包含了基于session或cookie的身份管理机制,确保用户信息的安全。 2. 祝福信息提交:用户可以输入祝福文字,提交到祝福墙上。这涉及到前端表单提交和后端数据处理。PHP通过POST方法接收表单数据,并存储在...

    《Java Web程序设计任务教程》-教材源码 第11章.rar

    《Java Web程序设计任务教程》第11章的源码压缩包主要涵盖了Java Web开发中的核心概念和技术。这一章的学习者可以深入理解如何在实际项目中应用Java Web知识,包括Servlet、JSP、MVC模式、JSTL、EL表达式等关键组件...

Global site tag (gtag.js) - Google Analytics