有wap和web网站,提供搜索功能,用户登录网页时,先检测用户机器上面有没有我们网站的cookie(里面有给每个网页用户分配的userid),如果没有的话,就自动分配一个userid通过cookie保存在用户端。
     我在wap和web网页的首页页首部分添加了一个动态加载cookie.jsp页面(用来检测cookie、获取userid或新分配userid和发送cookie),以下是cookie.jsp相关代码:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
<%@ page language="java" %>
<%@ page import="com.mysql.jdbc.Driver" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
 <head> </head>
 <body>
  <%
      
   boolean flag=false;   //设置cookie检测标示
   int time=60*60*24*365*3;
   String name="";
   String UseridFinal="";
   StringBuffer UseridTemp = new StringBuffer("0000000000");//设置userid格式
   Cookie cookie[]=request.getCookies();
   if(cookie!=null)
   {
    for(int i=0;i<cookie.length;i++)
    {
       Cookie c=cookie[i];
     if(c.getName().equals("chonguserid"))
     {
      UseridFinal=c.getValue().toString();                                 //获取已存cookie的值    
      flag=true;
         break;
      }
     }
    }
    if(!flag)
    {
        
String driverName="com.mysql.jdbc.Driver";
//数据库用户名
String userName="admin";
//密码
String userPasswd="admin";
//数据库名
String dbName="chong";
//表名
String tableName="userid";
//联结字符串
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();
String sql="SELECT * FROM "+tableName;
ResultSet rs = statement.executeQuery(sql);  

ResultSetMetaData rmeta = rs.getMetaData();

int numColumns=rmeta.getColumnCount();
int NewUserid=0;
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
java.util.Date currentTime = new java.util.Date();
String str_date1 = formatter.format(currentTime); 
rs.last();
if(rs.isLast())
{
NewUserid=rs.getInt(1)+1;
name=NewUserid+"";
}  rs.close();  
UseridFinal=UseridTemp.replace(10-name.length(),10,name).toString(); 
Statement stmt = connection.createStatement(
   ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//建立新增数据至数据库的SQL语句 
String strSQL = "INSERT INTO userid(userid, count, lasttime, batch, verifycode,installtime,city) Values ('" + NewUserid + "'," +
   "1, ' " + str_date1 + " ',20100101,5,' " + str_date1 + " ','')";
stmt.executeUpdate(strSQL); //利用SQL语句将数据新增至数据库
stmt.close(); 
statement.close(); 
connection.close();        
    
        Cookie cname=new Cookie("chonguserid",name);//
       
      cname.setMaxAge(time);  //设置cookie生存时间;
      System.out.print("In cookie.jsp,time为:" + time );      response.addCookie(cname);//添加cookie
           session.setAttribute("Userid",UseridFinal); 
      System.out.print("In cookie.jsp,即将传送的Userid为:" + UseridFinal );  
      }
  %>   </body>
</html>
    结果:web网页可以正常生成、检测cookie和userid,但是wap不能,请问wap网页的cookie功能怎么添加?
     

解决方案 »

  1.   

    猜测也许是少指定了cookie的生效domain。有些手机需要这个和访问的网站匹配。
    另外可能是老手机不支持cookie。
      

  2.   

      在cookie.jsp中添加了cname.setDomain("example.cn"); 还是不行,请求大侠赐教啊
      

  3.   

               谢谢!
                csdn上面如云的高手们,现身片刻,以解我忧啊!感激~~~
      

  4.   

    有wap网页操作cookie经验的大牛们,给指条明路吧!谢谢了
      

  5.   

    可以了,代码如下:
    <%
    Cookie cookie = new Cookie("newtest", URLEncoder.encode("1111111","utf-8"));
    cookie.setMaxAge(60 * 60 * 24 * 30 * 2);  
    cookie.setDomain(request.getServerName());//加个这就可以了。
    response.addCookie(cookie);
    Cookie[] cookies = request.getCookies();
    if(cookies != null){
    for(int i = 0; i < cookies.length; i++){
    if(cookies[i].getName().equals("newtest")){
    out.println(cookies[i].getName()+"::"+URLDecoder.decode(cookies[i].getValue(), "utf-8")+"&nbsp;"+cookies[i].getDomain()+"你好<br/>");
    }
    }
    }
    %>