代码改变世界

cookie session application

2013-03-20 12:44  功夫猫  阅读(273)  评论(0)    收藏  举报

cookie

1.保存在客户端,浏览器提供一个位置用来保存;

2.它只能保存文件;

3.有两种方式保存,一保存在浏览器内存里,二以文件的形式保存;

4.如果设置了SetMaxAge()就以文件的形式保存,设置时间过期后消失;否则保存在浏览器内,浏览器关闭,消失。

5.只能拿到当前路径和子路径下创建的cookie.(保证创建的cookie和cookie的servlet);

package com.kebin.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class buyServlet extends HttpServlet {
//接收页面数据,POST请求
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
//设置网页编码,UTF-8,GBK,GB2312等;
        request.setCharacterEncoding("GB2312");
        response.setCharacterEncoding("GB2312");
//request.getParameterValues() 方法接收数组
        String[] books = request.getParameterValues("books");
        int num=0;
        Cookie[] cookies = request.getCookies();
        for(int i =0;i<books.length;i++) {
//在cookie 里面查找是否已经购买此书
            for(int j=0;j<cookies.length;j++) {
                if(books[i].equals(cookies[j].getName())) {
                    num = Integer.parseInt(cookies[j].getValue());
                    break;
                }
            }
            Cookie cookie = new Cookie( books[i], num+1+"");
            response.addCookie(cookie);
        }
    
        
        response.sendRedirect("showServlet");
    }

}
package com.kebin.servlet;

import java.io.IOException;
import java.io.PrintWriter;


import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class showServlet extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("GB2312");
        response.setCharacterEncoding("GB2312");
        
        Cookie[] cookies = request.getCookies();
        PrintWriter out = response.getWriter();
        out.print("您购买的书籍有:");

        for (int j=0;j<cookies.length;j++) {
            System.out.println(cookies[j].getName()+"===="+cookies[j].getValue());
            out.print(cookies[j].getName()+"有"+cookies[j].getValue()+"本  ");

        }
        out.flush();
        out.close();
    
        request.getRequestDispatcher("b.jsp").forward(request, response);
    }
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
        <form action="buyServlet" method="post">
            购买的书籍:<br />
            java:<input type="checkbox" name="books" value="java"><br/>
            c:<input type="checkbox" name="books" value="c"><br/>
            c++:<input type="checkbox" name="books" value="c++"><br/>
            .net:<input type="checkbox" name="books" value=".net">
            <input type="submit" value="提交">
            <input type="reset" value="重置">
        </form>
</body>
</html>

b.jsp  什么都不用写。

 

Session

1.保存在服务器,java内存内;

2.可保存java所有数据类型;

3.过期时间,由服务器设置。

4.cookie session 用户级别的;application 全局共享;

package com.kebin.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyapplicationListener implements ServletContextListener {


    public void contextDestroyed(ServletContextEvent arg0) {
        System.out.println("1111111111111");

    }


    public void contextInitialized(ServletContextEvent event) {
//        event.getServletContext().setAttribute("userList", new ArrayList<String>());
        
        // 当前网站历史总访问量:
        int num = 1;
        ServletContext application = event.getServletContext();
        if (application.getAttribute("num")!=null) {
            num = Integer.parseInt(application.getAttribute("num").toString());
            num++;
        }
        application.setAttribute("num", num);
        //当前在线用户:
        
/*        String userlist =((User) (request.getSession().getAttribute("user"))).getUsername();
        application.setAttribute("userlist", userlist);
        */

    }

}