Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之16.Cookie-阿里云开发者社区

开发者社区> 技术小美> 正文

Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之16.Cookie

简介:
+关注继续查看
–Cookie 简介 
–设置Cookie 
–创建Cookie 
–获得Cookie 
–Cookie应用实例 
• 使用cookie检测初访者 
• 自动登录
################Michael分割线######################
–Cookie 简介 
• Cookie 是保存在客户端的一个“键-值”对,用来标识用户的一些信息 
• Cookie的应用 
–在电子商务会话中标识用户 
–对站点进行定制 
–定向广告
• 创建Cookie 
–调用Cookie的构造函数,给出cookie的名称和cookie的值,二者都是字符串 
• Cookie c = new Cookie("userID", "a1234"); 
–设置最大时效 
• 如果要告诉浏览器将cookie存储到磁盘上,而非仅仅保存在内存中,使用setMaxAge (参数为秒数) 
• c.setMaxAge(60*60*24*7); // One week 
–将Cookie放入到HTTP响应 
• response.addCookie(c);
image
• 获得Cookie 
–调用request.getCookies 
•这会得到Cookie对象组成的数组 
• 在这个数组中循环,调用每个对象的getName,直到找到想要的cookie为止
image
TestCookiesServlet.java
package com.michael.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 TestCookiesServlet extends HttpServlet {    

        /**    
         * Constructor of the object.    
         */
    
        public TestCookiesServlet() {    
                super();    
        }    

        /**    
         * Destruction of the servlet. <br>    
         */
    
        public void destroy() {    
                super.destroy(); // Just puts "destroy" string in log    
                // Put your code here    
        }    

        /**    
         * The doGet method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to get.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    

                doPost(request,response);    
        }    

        /**    
         * The doPost method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to post.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    
                //Setting cookie    
                //创建Cookie    
                Cookie c1 = new Cookie("c1","cv1");    
                Cookie c2 = new Cookie("c2","cv2");    
                //设置Cookie时效    
                c1.setMaxAge(60*60*24);    
                c2.setMaxAge(60*60*24);    
                //添加Cookie    
                response.addCookie(c1);    
                response.addCookie(c2);    
                //getting cookie    
                Cookie[] cookies = request.getCookies();    
                String name = "";    
                String value = "";    
                response.setContentType("text/html");    
                PrintWriter out = response.getWriter();    
                out    
                                .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");    
                out.println("<HTML>");    
                out.println("    <HEAD><TITLE>A Servlet</TITLE></HEAD>");    
                out.println("    <BODY>");    
                if(cookies!=null&&cookies.length>0){    
                        for(int i=0;i<cookies.length;i++){    
                                name = cookies[i].getName();    
                                value = cookies[i].getValue();    
                                out.println(name+":"+value);    
                        }    
                }    
                out.println("    </BODY>");    
                out.println("</HTML>");    
                out.flush();    
                out.close();    
        }    

        /**    
         * Initialization of the servlet. <br>    
         *    
         * @throws ServletException if an error occure    
         */
    
        public void init() throws ServletException {    
                // Put your code here    
        }    


image
web.xml
<?xml version="1.0" encoding="UTF-8"?>    
<web-app version="2.4"    
        xmlns="http://java.sun.com/xml/ns/j2ee"    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    
    <servlet>    
        <description>This is the description of my J2EE component</description>    
        <display-name>This is the display name of my J2EE component</display-name>    
        <servlet-name>TestCookiesServlet</servlet-name>    
        <servlet-class>com.michael.servlet.TestCookiesServlet</servlet-class>    
    </servlet>    

    <servlet-mapping>    
        <servlet-name>TestCookiesServlet</servlet-name>    
        <url-pattern>/servlet/TestCookiesServlet</url-pattern>    
    </servlet-mapping>    

</web-app> 
image
测试一下
image
image
• Cookie应用实例 
–使用cookie检测初访者
image
TestCookiesServlet.java
package com.michael.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 TestCookiesServlet extends HttpServlet {    

        /**    
         * Constructor of the object.    
         */
    
        public TestCookiesServlet() {    
                super();    
        }    

        /**    
         * Destruction of the servlet. <br>    
         */
    
        public void destroy() {    
                super.destroy(); // Just puts "destroy" string in log    
                // Put your code here    
        }    

        /**    
         * The doGet method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to get.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    

                doPost(request,response);    
        }    

        /**    
         * The doPost method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to post.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    
                /**    
                //Setting cookie    
                //创建Cookie    
                Cookie c1 = new Cookie("c1","cv1");    
                Cookie c2 = new Cookie("c2","cv2");    
                //设置Cookie时效    
                c1.setMaxAge(60*60*24);    
                c2.setMaxAge(60*60*24);    
                //添加Cookie    
                response.addCookie(c1);    
                response.addCookie(c2);    
                //getting cookie    
                Cookie[] cookies = request.getCookies();    
                String name = "";    
                String value = "";    
                */
    
                //使用cookie检测初访者    
                boolean newbie = true;    
                Cookie[] cookies = request.getCookies();    
                if(cookies!=null){    
                        for(int i=0;i<cookies.length;i++){    
                                Cookie c = cookies[i];    
                                if((c.getName().equals("repeatVisitor"))&&(c.getValue().equals("yes"))){    
                                        newbie = false;    
                                        break;    
                                }    
                                String title;    
                                if(newbie){    
                                        Cookie returnVisitorCookie = new Cookie("repeatVisitor","yes");    
                                        returnVisitorCookie.setMaxAge(60*60*24*365);    
                                        response.addCookie(returnVisitorCookie);    
                                        title = "Welcome Aboard";    
                                }else{    
                                        title = "Welcome Back";    
                                }    
                                System.out.println(title);    
                        }    
                }    
                response.setContentType("text/html");    
                PrintWriter out = response.getWriter();    
                out    
                                .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");    
                out.println("<HTML>");    
                out.println("    <HEAD><TITLE>A Servlet</TITLE></HEAD>");    
                out.println("    <BODY>");    
                /*    
                if(cookies!=null&&cookies.length>0){    
                        for(int i=0;i<cookies.length;i++){    
                                name = cookies[i].getName();    
                                value = cookies[i].getValue();    
                                out.println(name+":"+value);    
                        }    
                }    
                */
    
                out.println("    </BODY>");    
                out.println("</HTML>");    
                out.flush();    
                out.close();    
        }    

        /**    
         * Initialization of the servlet. <br>    
         *    
         * @throws ServletException if an error occure    
         */
    
        public void init() throws ServletException {    
                // Put your code here    
        }    


image
image
–自动登录
image
image
 InitServlet.java
package com.michael.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 InitServlet extends HttpServlet {    

        /**    
         * Constructor of the object.    
         */
    
        public InitServlet() {    
                super();    
        }    

        /**    
         * Destruction of the servlet. <br>    
         */
    
        public void destroy() {    
                super.destroy(); // Just puts "destroy" string in log    
                // Put your code here    
        }    

        /**    
         * The doGet method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to get.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    

                doPost(request,response);    
        }    

        /**    
         * The doPost method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to post.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    
                //获取Cookie    
                Cookie[] cookies = request.getCookies();    
                if(cookies!=null&&cookies.length>0){    
                        for(int i=0;i<cookies.length;i++){    
                                String name =cookies[i].getName();    
                                if(name!=null&&name.equals("username")){    
                                        String value = cookies[i].getValue();    
                                        request.setAttribute("un",value);    
                                }    
                                if(name!=null&&name.equals("password")){    
                                        String value = cookies[i].getValue();    
                                        request.setAttribute("pw",value);    
                                }    
                        }    
                }    

                request.getRequestDispatcher("/login.jsp").forward(request, response);    
        }    

        /**    
         * Initialization of the servlet. <br>    
         *    
         * @throws ServletException if an error occure    
         */
    
        public void init() throws ServletException {    
                // Put your code here    
        }    


login.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>    
<%    
String path = request.getContextPath();    
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";    
%>    

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    
<html>    
    <head>    
        <base href="<%=basePath%>">    
        <title>My JSP 'login.jsp' starting page</title>    
        <meta http-equiv="pragma" content="no-cache">    
        <meta http-equiv="cache-control" content="no-cache">    
        <meta http-equiv="expires" content="0">         
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    
        <meta http-equiv="description" content="This is my page">    
        <!--    
        <link rel="stylesheet" type="text/css" href="styles.css">    
        -->    

    </head>    
    <body>    
        <form name="f1" id="f1" action="/Servlet_Cookies/servlet/LoginServlet" method="post">    
            <table border="0">    
                <tr>    
                    <td>用户名称:</td>    
                    <td><input type="text" name="username" value="${un}"></td>    
                </tr>    
                <tr>    
                    <td>用户密码:</td>    
                    <td><input type="password" name="password" value="${pw}"></td>    
                </tr>    
                <tr>    
                    <td>一周自动登录:</td>    
                    <td colspan="2"><input type="checkbox" name="isAuto" value="1"></td>    
                </tr>    
                <tr>    
                    <td colspan="2" align="center"><input type="submit" value="登录"></td>    
                </tr>    
            </table>    
        </form>    
    </body>    
</html> 
LoginServlet.java
package com.michael.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 LoginServlet extends HttpServlet {    

        /**    
         * Constructor of the object.    
         */
    
        public LoginServlet() {    
                super();    
        }    

        /**    
         * Destruction of the servlet. <br>    
         */
    
        public void destroy() {    
                super.destroy(); // Just puts "destroy" string in log    
                // Put your code here    
        }    

        /**    
         * The doGet method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to get.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    

                doPost(request, response);    
        }    

        /**    
         * The doPost method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to post.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    
                String username = request.getParameter("username");    
                String password = request.getParameter("password");    
                String isAuto = request.getParameter("isAuto");    
                if(isAuto!=null&&isAuto.equals("1")){    
                        Cookie usernameCookie = new Cookie("username",username);    
                        Cookie passwordCookie = new Cookie("password",password);    
                        usernameCookie.setMaxAge(60*60*24*7);    
                        passwordCookie.setMaxAge(60*60*24*7);    
                        response.addCookie(usernameCookie);    
                        response.addCookie(passwordCookie);    
                }    
                //页面跳转    
                request.getRequestDispatcher("/welcome.html").forward(request, response);    
        }    

        /**    
         * Initialization of the servlet. <br>    
         *    
         * @throws ServletException if an error occure    
         */
    
        public void init() throws ServletException {    
                // Put your code here    
        }    


welcome.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">    
<html>    
    <head>    
        <title>MyHtml.html</title>    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    
        <meta http-equiv="description" content="this is my page">    
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">    
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->    

    </head>    
    <body>    
        <h1>Welcome you!</h1>    
    </body>    
</html> 
image
################Michael分割线######################








本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/174725,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Java开发者专场】阿里专家墨玖:淘票票工程师文化
谈到工程师文化,大家都会比较熟悉,或者比较向往。但是到底什么是工程师文化,应该怎么做是互联网企业应该关注的东西。本文将从四个部分介绍工程师文化,首先,工程师文化从何而来?其次,我们为什么需要工程师文化?还有工程师文化要达到什么目标,走向哪里?最后,工程师文化实施手段有哪些,怎么样落地?
2916 0
十分钟上线-基于函数计算开发 Restful web api & asp.net core web app
.NET Core是一个开源通用的开发框架,支持跨平台, 阿里云函数计算推出了 dotnetcore2.1 runtime, 使用 C# 编写 serverless 函数, 除了很好地支持通常意义上的函数外, 还可以基于函数计算开发 asp.
4543 0
Java 集合整理大全
TreeSet, LinkedHashSet and HashSet 的区别 TreeSet的主要功能用于排序,它是无序的(插入顺序)LinkedHashSet的主要功能用于保证FIFO即有序的集合(先进先出)HashSet只是通用的存储数据的集合共同点三者都不是线程安全的,如果要使用线程安全可以collections.
1063 0
axis2开发webservice(二)
工欲善其事,必先利其器 我们选择axis2来生成服务端和客户端 首先安装myeclipse或者eclipse的axis2插件如果使用其它的工具可以自己查找有没有更好的工具。   1.       下载Myeclipse Axis2插件 http://archive.
576 0
MyEclipse使用Docker的JavaEE开发
本文讲的是MyEclipse使用Docker的JavaEE开发【编者的话】本文主要讲述了如何在MyEclipse中通过Docker开发JavaEE程序。
2136 0
+关注
6906
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载