首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java基础>正文

高级:Cookie,httpsession类使用概述

http://www.oklinux.cn  2008-01-20  来源: 赛迪网 loveofgod   会员收藏  游客收藏  【 】 

Cookie 是一小块可以嵌入HTTP 请求和响应中的数据,它在服务器上产生,并作为响应头域的一部分返回用户。浏览器收到包含Cookie 的响应后,会把Cookie 的内容用“要害字/值” 对的形式写入到一个客户端专为存放Cookie 的文本文件中。浏览器会把Cookie 及随后产生的请求发给相同的服务器,服务器可以再次读取Cookie 中存Cookie 可以进行有效期设置,过期的Cookie 不会发送给服务器。



  Servlet API 提供了一个Cookie 类,封装了对Cookie 的一些操作。Servlet 可以创建一个新的Cookie,设置它的要害字、值及有效期等属性,然后把Cookie 设置在HttpServletResponse 对象中发回浏览器,还可以从HttpServletRequest 对象中获取Cookie。

  编程思路:Cookie 在实际的Servlet 编程中是很广泛应用,下面是一个从Servlet 中获取Cookie 信息的例子。

  ShowCookies.java 的源代码如下:

import javax.servlet.*;
import javax.servlet.http.*;

/**
* <p>This is a simple servlet that displays all of the
* Cookies present in the request
*/

public class ShowCookies extends HttpServlet
{
 public void doGet(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, java.io.IOException
 {

  // Set the content type of the response
  resp.setContentType("text/html;charset=gb2312");

  // Get the PrintWriter to write the response
  java.io.PrintWriter out = resp.getWriter();

  // Get an array containing all of the cookies
  Cookie cookies[] = req.getCookies();

  // Write the page header
  out.println("<html>");
  out.println("<head>");
  out.println("<title>Servlet Cookie Information</title>");
  out.println("</head>");
  out.println("<body>");

  if ((cookies == null) || (cookies.length == 0)) {
   out.println("没有 cookies ");
  }
  else {
   out.println("<center><h1>响应消息中的Cookies 信息 </h1>");
   // Display a table with all of the info
   out.println("<table border>");
   out.println("<tr><th>Name</th><th>Value</th>" "<th>Comment</th><th>Max Age</th></tr>");
   for (int i = 0; i < cookies.length; i ) {
    Cookie c = cookies;
    out.println("<tr><td>" c.getName() "</td><td>"
    c.getValue() "</td><td>" c.getComment() "</td><td>" c.getMaxAge() "</td></tr>");
  }
  out.println("</table></center>");
 }
 // Wrap up
 out.println("</body>");
 out.println("</html>");
 out.flush();
}

/**
* <p>Initialize the servlet. This is called once when the
* servlet is loaded. It is guaranteed to complete before any
* requests are made to the servlet
* @param cfg Servlet configuration information
*/

public void init(ServletConfig cfg)
throws ServletException
{
 super.init(cfg);
}

/**
* <p>Destroy the servlet. This is called once when the servlet
* is unloaded.
*/

public void destroy()
{
 super.destroy();
}
}


  注重:Cookie 进行服务器端与客户端的双向交流,所以它涉及到安全性问题。

使用Java Servlet API 进行会话治理

  javax.servlet.http.HttpSession 接口封装了HTTP 会话的细节,该会话与一段时间内特定的Web 客户对Web 服务器的多个请求相关。治理会话数据主要涉及到3个方面:会话交换、会话重定位和会话持久性,只有实现了java.io.Serializable 接口的数据对象才能够被交换、重定位和保持。这个接口主要是让对象具有序列化的能力,它可以将对象的状态信息写入任意的输出流中如:文件、网络连接等。

  编程思路:下面是实现一个简单在商场购物的例子,当用户选购商品(糖果、收音机和练习簿)放入购物袋中,保存选购的商品信息。

  ShowBuy.java 的源代码如下:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class ShowBuy extends HttpServlet
{
 public void doGet(HttpServletRequest req, HttpServletResponse res)
 throws ServletException, java.io.IOException
 {
  String[] item={"糖果","收音机","练习簿"};
  //获取会话对象
  HttpSession session=req.getSession(true);
  //获取选择的商品数目
  Integer itemCount=(Interger) session.getValue("itemCount");
  //假如没放入商品则数目为0
  if (itemCount==null){
   itemCount=new Integer(0);
  }

  // Set the content type of the response
  res.setContentType("text/html;charset=gb2312");
  PrintWriter out=res.getWriter();

  //取得POST上来的表单信息
  String[] itemsSelected;
  String itemName;
  itemsSelected=req.getParameterValues("item");
  //将选中的商品放入会话对象
  if(itemsSelected !=null){
   for(int i=0;i<itemsSelected.length;i ){
    itemName=itemsSelected;
    itemCount=new Integer(itemCount.intValue() 1);
    session.putValue("Item" itemCount,itemName);
    //将商品名称定义为ItemX
    session.putValue("itemCount",itemCount);
    //将商品数量放入会话对象
   }
  }

  // Write the page header
  out.println("<html>");
  out.println("<head>");

共2页: 上一页 1 [2] 下一页

上一篇:服务器及中间件:JBoss4.0数据源配置大全   下一篇:Java GUI:Java布局管理器使用方法探讨


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Java GUI:Java布局管理器使用方法探讨
·服务器及中间件:JBoss4.0数据源配置大全
·通过Hibernate_tool生成代码和映射文件
·数据库相关:小结Hibernate的查询方式
·J2SE综合介绍:与你一起讨论AJAX进一阶应用
·I/O及网络--一个简单的文件传送代码
·基于AJAX的动态树型结构的设计与实现
·J2SE综合--Java 5.0 多线程编程实践
·J2ME综合--谈谈J2ME的几个重要的功能
·J2SE综合:两种Java容器类List和Set分析
·进阶-不使用泛型如何保证程序的可读性
·J2SE综合:浅析Java语言中两种异常的差别
·高级:java学习彻底明白Java的IO系统
·J2ME综合--J2ME应用程序内存优化三招
·I/O及网络--MD5加密及Java的实现方式
·JDK核心API--Java中配置信息的存取
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java入门:状态对象--数据库的替代者
·Java语言怎样调用外部应用程序
·Java语言深入--关于Java语言的内存泄漏
·JSP/Servlet/JSF:Servlet/JSP配置详解
·进阶-怎样使用AJAX进行WEB应用程序开发
·基础:J2ME程序开发之新手入门九大要点
·Java入门--Java语言接口与继承的本质
·JAVA进阶--如何提升JSP应用程序的效率
·对Java中四种XML解析技术之不完全测试
·编写高级 JScript应用代码
·JSP/Servlet/JSF--对标签库的深入研究
·Java入门--关于字符串分割的两种方法
  阅读排行
·使用AJAX技术实现网页无闪自动局部刷新
·快速教您Apache Tomcat SSL的配置
·Java语言深入--java调用C/C 的过程
·用JSP JavaScript打造二级级联下拉菜单
·JAVA进阶--线程运行栈信息的获取讲解
·使用WEBWORK实现文件上传方法实例详解
·J2SE综合--JAVA实现把汉字转化成拼音
·一个非常有趣的使用spring框架AOP例子
·关于java中相对路径,绝对路径问题总结
·高级:lucene全文检索应用示例及代码简
·详细讲解Struts构架中action的跳转大全
·Hibernate配置文件中的映射元素详解
·在Weblogic上配置JMS服务的方法
·对Java中四种XML解析技术之不完全测试
·在JSP环境中配置使用fckeditor详细讲解
网摘收藏: