JSP(5):cookie技术

来源:互联网 发布:电脑设置闹钟软件 编辑:程序博客网 时间:2024/06/16 03:20

1、cookie有点像一张表,分两列,一个是名字,一个是值,数据类型都是String

2、如何创建一个Cookie(在服务端创建的)

           Cookie c=new Cookie(String name,String val);

3、如何将一个Cookie添加到客户端

           response.addCookie(c);

4、如何读取Cookie(从客户端读到服务器)

          request.getCookie();

//创建Cookiepackage com.tsinghua;    import java.io.*;import javax.servlet.http.*;public class CookieTest1 extends HttpServlet{public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}public void doGet(HttpServletRequest req,HttpServletResponse res){try{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();//当用户访问该servlet时,就将信息创建到该用户的Cookie中//1、现在服务器端创建一个Cookie   Cookie myCookie=new Cookie("color1","red");     //2、该Cookie存在的时间  myCookie.setMaxAge(30);   //如果你不设轩存在时间,那么该Cookie将不会保存    //3、将该Cookie写回到客户端  res.addCookie(myCookie);    pw.println("已经创建了Cookie");}catch(Exception ex){ex.printStackTrace();}}}


 

//如何读取Cookiepackage com.tsinghua;    import java.io.*;import javax.servlet.http.*;public class CookieTest2 extends HttpServlet{public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}public void doGet(HttpServletRequest req,HttpServletResponse res){try{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();//从客户端得到所有的CookieCookie [] allCookies=req.getCookies();int i=0;//如果allCookies不为空……if(allCookies!=null){   //从中取出Cookie   for(i=0;i<allCookies.length;i++){   //依次取出Cookie   Cookie temp=allCookies[i];      if(temp.getName().equals("color1")){     //得到Cookie的值     String val=temp.getValue();          pw.println("color1="+val);     break;   }   }   if(allCookies.length==i){   pw.println("Cookie过期");   } }else{   pw.println("不存在color1这个cookie或是过期了!");       }       }catch(Exception ex){ex.printStackTrace();}}}


 

//创建Cookiepackage com.tsinghua;    import java.io.*;import javax.servlet.http.*;public class CookieTest3 extends HttpServlet{public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}public void doGet(HttpServletRequest req,HttpServletResponse res){try{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();//从客户端得到所有Cookie信息Cookie [] allCookies=req.getCookies();int i=0;//如果allCookies不为空if(allCookies!=null){//从中取出Cookiefor(i=0;i<allCookies.length;i++){//依次取出Cookie temp=allCookies[i];if(temp.getName().equals("color1")){//将该Cookie删除temp.setMaxAge(0);pw.println("删除了color这个Cookie");break;} }}}catch(Exception ex){ex.printStackTrace();}}}


 

//登录界面package com.tsinghua;    import java.io.*;import javax.servlet.http.*;public class Login extends HttpServlet{public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}public void doGet(HttpServletRequest req,HttpServletResponse res){try{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();//返回登录界面pw.println("<html>");//html文件体pw.println("<body>");//body体//得到error信息String info=req.getParameter("info");if(info!=null){    pw.println("<hl>你的用户名或是密码错误!</hl>");}pw.println("<h1>登陆界面<h1>");pw.println("<form action = logincl method=post>");//该段组件体和logincl体进行关联pw.println("用户名:<input type = text name = username><br />");//用户名组件体pw.println("密码:<input type = password name = passwd><br />");//密码组件体pw.println("<input type=checkbox name=keep value=2>两周内不再重新登录<br>");//1、Cookiepw.println("<input type = submit value = loging><br />");pw.println("<form>");pw.println("</body>");//body体pw.println("</html>");//html文件体}catch(Exception ex){ex.printStackTrace();}}}


 

//登录控制文件的servletpackage test1;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class LoginCl extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){Connection ct = null;ResultSet rs = null;Statement sm = null;try{//服务器接收login页面发来的用户名和密码,要用到req。String u = req.getParameter("username");//此处填写组件名String p = req.getParameter("passwd");//此处填写组件名//连接到数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  //得到链接  ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=rvdb","sa","tiger");  //创建Statrment sm=ct.createStatement(); rs=sm.executeQuery("select top 1 * from users where username ='"+u+"'and passwd='"+p+"'"); if(rs.next())//帐号密码符合要求{//存在该用户名//存在该用户名和密码String dbPasswd=rs.getString(1);//看看数据库的密码和用户输入的密码是否相同 if(dbPasswd.equals(p)){           //1、=========产生Cookie============//主要看有没有选中String keep=req.getParameter("keep");//不等于空说明选中了if(keep!=null){//1将用户名和密码保存在客户端(cookie)//创建Cookie name=new Cookie("myname",u);Cookie pass=new Cookie("mypasswd",p);//设置时间name.setMaxAge(14*24*3600);pass.setMaxAge(14*24*3600);//回写到客户端res.addCookie(name);res.addCookie(pass);} HttpSession hs = req.getSession(true);hs.setMaxInactiveInterval(20);hs.setAttribute("pass","ok");//连接登录后的欢迎界面 //sendRedirect的作用是跳转界面 res.sendRedirect("wel?username="+u+"&passwd="+p);//该处填写域名 }}else{//返回登录页面res.sendRedirect("login");//该处填写域名}}catch(Exception ex){ex.printStackTrace();}finally{try{if(rs!=null){rs.close();}if(sm!=null){sm.close();}if(ct!=null){ct.close();}}catch (Exception ex){ex.printStackTrace();}}}}


 

  //欢迎界面//登录界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Wel extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){                //业务逻辑       Connection ct=null;        PreparedStatement ps=null;        ResultSet rs=null;        try{//得到session防止非法登录HttpSession hs = req.getSession(true);String myname = (String)hs.getAttribute("pass");String u = req.getParameter("username");String p = req.getParameter("passwd");//1、================//读取Cookie==================String name="";String passwd="";if(myname == null){//如果session中没有用户信息,再看看有没有cookie信息//从客户端得到所有的CookieCookie [] allCookies=req.getCookies();int i=0;//如果allCookies不为空……if(allCookies!=null){   //从中取出Cookie   for(i=0;i<allCookies.length;i++){   //依次取出Cookie   Cookie temp=allCookies[i];      if(temp.getName().equals("myname")){     //得到Cookie的值     name=temp.getValue();     }     else if(temp.getName().equals("mypasswd")){     passwd=temp.getValue();     }    }            if(name.equals("")&&!passwd.equals("")){                      //到loginCl中验证              res.sendRedirect("logincl?username="+name+"&passwd="+passwd);              return;           }         }         //返回登录界面         res.sendRedirect("login?info=error1");         return;    }res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();pw.println("<body><center>");//显示图片 pw.println("<img src=imgs/2.jpg ><br>"); pw.println("wellcome!  "+u+" your password="+p); pw.println("你的用户名是:"+u);//=========分页功能===============int pageSize=3;//一页显示几条记录int pageNow=1;//希望显示第几页int rowCount=0;//共有几条记录(查表)int pageCount=0;//共有几页(计算)//动态的接收pageNowString sPageNow=req.getParameter("pageNowok");if(sPageNow!=null){pageNow=Integer.parseInt(sPageNow);}//连接到数据库     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  //得到链接     ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=spdb","sa","tiger");     ps = ct.prepareStatement("select count(*) from users");        rs= ps.executeQuery();    //返回一个结果集,如果增加,删除,更改的话用update    if(rs.next()){           rowCount=rs.getInt(1);    }    //计算PageCount    if(rowCount%pageSize==0){    pageCount=rowCount/pageSize;    }else{     pageCount=rowCount/pageSize+1;    }        ps=ct.prepareStatement("select top "+pageSize+"*from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)");        //给?赋值   // ps.setInt(1,pageSize);    //ps.setInt(2,pageSize*(pageNow-1));        //执行查询    rs=ps.executeQuery();        //设置表头     pw.println("<table border=1>");     pw.println("<tr><th>id</th><th>name</th><th>passwd</th><th>mail</th><th>grade</th></tr>");        //显示出来    while(rs.next()){    pw.println("<tr>");    pw.println("<td>"+rs.getInt(1)+"</td>");    pw.println("<td>"+rs.getString(2)+"</td>");    pw.println("<td>"+rs.getString(3)+"</td>");    pw.println("<td>"+rs.getString(4)+"</td>");    pw.println("<td>"+rs.getInt(5)+"</td>");    pw.println("</tr>");    }    pw.println("</table>");      //做个超链接   pw.println("<br><a href=login>返回重新登陆</a></br>");      //上一页   if(pageNow!=1)   pw.println("<a href=wel?pageNowok="+(pageNow-1)+">上一页</a>");   //显示超链接    for(int i=pageNow;i<=pageNow+4;i++){    pw.println("<a href=wel?pageNowok="+i+">"+i+"</a>");    }   //下一页   if(pageNow!=pageCount)   pw.println("<a href=wel?pageNowok="+(pageNow+1)+">下一页</a>");   pw.println("</center></body>");}catch(Exception ex){ex.printStackTrace();}}}


 

0 0
原创粉丝点击