当前位置:   article > 正文

JSP之Session,Cookie对象用法介绍_jsp cookie 对象和 session对象的配合使用

jsp cookie 对象和 session对象的配合使用

HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。

因为这个原因于是就有了Cookie和Session

Session对象:

session对象是一个JSP内置对象。

session对象在第一个JSP页面被装载时自动创建,完成会话期管理。

从客户端打开浏览器并连接到服务器开始,到客户端关闭浏览器离开这个服务器结束,被称为一个会话。

当一个客户访问一个服务器,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。

session对象常用方法:

String getId()返回session对象的ID

void invalidate()将session无效化,解绑任何与该session绑定的对象

void setAttribute(String name, Object value) 使用指定的名称和值来产生一个对象并绑定到session中

Object getAttribute(String name)返回session对象中与指定名称绑定的对象,如果不存在则返回null,注意返回的是object对象,用的时候要强制转化

void removeAttribute(String name)移除session中指定名称的对象

public void setMaxInactiveInterval(int interval)用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效

int getMaxInactiveInterval()返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开

Cookie对象也是在web开发中常用的一个对象,他是储存在客户端的一个文本文件,用于记录一些服务器和客户端交互的信息,比如浏览记录,设置一个期限自动保存姓名密码什么的都是通过这个对象来处理,实现原理其实是一个map也就是键值对的形式

Cookie对象的常用方法:

Cookie cookie = new Cookie(String key, String value) 创建一个新的Cookie对象

response.addCookie(cooke)写入Cookie对象

Cookie[] cookies = request.getCookies()读取Cookie对象,这里得到的是一个Cookie数组

void setMaxAge(int expiry)设置Cookie有效期,以秒为单位

void setValue(String value)Cookie创建后,对Cookie进行赋值

String getName()获取Cookie名称

String getValue()获取Cookie的值

int getMaxAge()获取Cookie的有效时间,以秒为单位,删除一个Cookie的方法也是将有效时间设为0再用上面的response的addCookie方法

不过注意Cookie是用的Ascii码,所以对于中文字符要进行特殊的编码和解码,不然会导致页面出错和乱码

对于请求的编码:

request.setCharacterEncoding("UTF-8");

然后下面两个函数是属于java.net包下的记得导入

编码要加入信息的中文字符:String  str=URLEncoder.encode("中文","UTF-8");

从Cookie中提取出的中文字符要解码:String  str=URLDecoder.decode("编码后的字符串","UTF-8");

Cookie和Session的不同也是面试常考话题,然后我保存了一张慕课网的图:


看的可能有点懵我把我刚刚测试的jsp页面登录并记录中文名字账号密码的代码上传作为例子,里面用了之前学的JavaBean相结合,这也是web开发的日常操作:

主页index.jsp:

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: hjy
  4. Date: 2018/1/1
  5. Time: 15:55
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" import="java.net.*,java.util.*" %>
  9. <%
  10. request.setCharacterEncoding("UTF-8");
  11. Cookie cookies[]=null;
  12. cookies=request.getCookies();
  13. String name="";
  14. String password="";
  15. if(cookies!=null)
  16. {
  17. for(Cookie c:cookies)
  18. {
  19. String s=c.getName();
  20. if("name".equals(s))
  21. {
  22. name= URLDecoder.decode((String)c.getValue(),"UTF-8");
  23. }
  24. if("password".equals(s))
  25. {
  26. password=URLDecoder.decode((String)c.getValue(),"UTF-8");
  27. }
  28. }
  29. }
  30. %>
  31. <html>
  32. <head>
  33. <title>Cookie测试</title>
  34. </head>
  35. <body>
  36. <h1>Cookie测试</h1>
  37. <form action="judge.jsp" method="post">
  38. <table>
  39. <tr>
  40. <td>姓名:</td><td><input type="text" name="name" value="<%=name%>"/></td>
  41. </tr>
  42. <tr>
  43. <td>密码:</td><td><input type="password" name="password" value="<%=password%>"></td>
  44. </tr>
  45. <tr >
  46. <td colspan="2"><input type="submit" value="登录"/></td>
  47. </tr>
  48. </table>
  49. </form>
  50. </body>
  51. </html>

判断页judge.jsp:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>
  2. <%@ page import="java.net.URLEncoder" %>
  3. <%
  4. request.setCharacterEncoding("UTF-8");
  5. %>
  6. <html>
  7. <head>
  8. <title>judge</title>
  9. </head>
  10. <body>
  11. <h1>judge</h1>
  12. <jsp:useBean id="temp" scope="page" class="tool.res"/>
  13. <jsp:setProperty name="temp" property="*"/>
  14. <p>姓名:<jsp:getProperty name="temp" property="name"/></p>
  15. <p>密码:<jsp:getProperty name="temp" property="password"/></p>
  16. <%
  17. String name= URLEncoder.encode(temp.getName(),"UTF-8");
  18. String password= URLEncoder.encode(temp.getPassword(),"UTF-8");
  19. Cookie c1=new Cookie("name",name);
  20. c1.setMaxAge(60*20);
  21. response.addCookie(c1);
  22. Cookie c2=new Cookie("password",password);
  23. c2.setMaxAge(60*20);
  24. response.addCookie(c2);
  25. %>
  26. </body>
  27. </html>
然后是javabean的res.java:

  1. package tool;
  2. public class res {
  3. private String name;
  4. private String password;
  5. public res()
  6. {
  7. }
  8. public void setName(String n)
  9. {
  10. name=n;
  11. }
  12. public String getName()
  13. {
  14. return name;
  15. }
  16. public void setPassword(String p)
  17. {
  18. password=p;
  19. }
  20. public String getPassword()
  21. {
  22. return password;
  23. }
  24. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/149353
推荐阅读
相关标签
  

闽ICP备14008679号