zoukankan      html  css  js  c++  java
  • servlet之cookie实现

    三个servlet的实现:

    package app02c;

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

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

    /**
     * Cookies的实现(设置cookie)
     */
    @WebServlet( name = "PreferenceServlet", urlPatterns = "/preference")
    public class PreferenceServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        // 主菜单
        public static final String MENU =
                "<div style='background:#e8e8e8;"
                + "padding:15px'>"
                + "<a href='cookieClass'>Cookie Class</a>&nbsp;&nbsp;"
                + "<a href='cookieInfo'>Cookie Info</a>&nbsp;&nbsp;"
                + "<a href='preference'>Preference</a>" + "</div>";   
        /**
         * @see HttpServlet#HttpServlet()
         */
        public PreferenceServlet() {
            super();
            // TODO Auto-generated constructor stub
        }

        /**
         * 主页的选择
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             response.setContentType("text/html");
                PrintWriter writer = response.getWriter();
                writer.print("<html><head>" + "<title>Preference</title>"
                        + "<style>table {" + "font-size:small;"
                        + "background:NavajoWhite }</style>"
                        + "</head><body>"
                        + MENU
                        + "Please select the values below:"
                        + "<form method='post'>"
                        + "<table>"
                        + "<tr><td>Title Font Size: </td>"
                        + "<td><select name='titleFontSize'>"
                        + "<option>large</option>"
                        + "<option>x-large</option>"
                        + "<option>xx-large</option>"
                        + "</select></td>"
                        + "</tr>"
                        + "<tr><td>Title Style & Weight: </td>"
                        +"<td><select name='titleStyleAndWeight' multiple>"
                        + "<option>italic</option>"
                        + "<option>bold</option>"
                        + "</select></td>"
                        + "</tr>"
                        + "<tr><td>Max. Records in Table: </td>"
                        + "<td><select name='maxRecords'>"
                        + "<option>5</option>"
                        + "<option>10</option>"
                        + "</select></td>"
                        + "</tr>"
                        + "<tr><td rowspan='2'>"
                        + "<input type='submit' value='Set'/></td>"
                        + "</tr>"
                        + "</table>" + "</form>" + "</body></html>");
        }

        /**
         * 设置cookie
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String maxRecords = request.getParameter("maxRecords");
            // 下拉列表multiple属性的获取方式
            String[] titleStyleAndWeight = request
                    .getParameterValues("titleStyleAndWeight");
            String titleFontSize =
                    request.getParameter("titleFontSize");
            // 设置cookie
            response.addCookie(new Cookie("maxRecords", maxRecords));
            response.addCookie(new Cookie("titleFontSize",
                    titleFontSize));

            // delete titleFontWeight and titleFontStyle cookies first
            // Delete cookie by adding a cookie with the maxAge = 0;
            
            Cookie cookie = new Cookie("titleFontWeight", "");
            cookie.setMaxAge(0);
            response.addCookie(cookie);

            cookie = new Cookie("titleFontStyle", "");
            cookie.setMaxAge(0);
            response.addCookie(cookie);

            if (titleStyleAndWeight != null) {
                for (String style : titleStyleAndWeight) {
                    if (style.equals("bold")) {
                        // 添加cookie
                        response.addCookie(new
                                Cookie("titleFontWeight", "bold"));
                    } else if (style.equals("italic")) {
                        response.addCookie(new Cookie("titleFontStyle",
                                "italic"));
                    }
                }
            }

            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.println("<html><head>" + "<title>Preference</title>"
                    + "</head><body>" + MENU
                    + "Your preference has been set."
                    + "<br/><br/>Max. Records in Table: " + maxRecords
                    + "<br/>Title Font Size: " + titleFontSize
                    + "<br/>Title Font Style & Weight: ");

            // titleStyleAndWeight will be null if none of the options
            // was selected
            if (titleStyleAndWeight != null) {
                writer.println("<ul>");
                for (String style : titleStyleAndWeight) {
                    writer.print("<li>" + style + "</li>");
                }
                writer.println("</ul>");
            }
            writer.println("</body></html>");
        }

    }

    package app02c;

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

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

    /**
     * 显示数据,根据接受的cookie来选择输出数量
     */
    @WebServlet( name = "CookieClassServlet", urlPatterns = "/cookieClass")
    public class CookieClassServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        // 设置显示的数据
        private String[] methods = {
                "clone", "getComment", "getDomain",
                "getMaxAge", "getName", "getPath",
                "getSecure", "getValue", "getVersion",
                "isHttpOnly", "setComment", "setDomain",
                "setHttpOnly", "setMaxAge", "setPath",
                "setSecure", "setValue", "setVersion"
        };
        /**
         * @see HttpServlet#HttpServlet()
         */
        public CookieClassServlet() {
            super();
            // TODO Auto-generated constructor stub
        }

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 获取cookie
            Cookie[] cookies = request.getCookies();
            Cookie maxRecordsCookie = null;
            if (cookies != null) {
                // 遍历cookie
                for (Cookie cookie : cookies) {
                    if (cookie.getName().equals("maxRecords")) {
                        maxRecordsCookie = cookie;
                        break;
                    }
                }
            }
            
            int maxRecords = 5; // default
            if (maxRecordsCookie != null) {
                try {
                    maxRecords = Integer.parseInt(
                            maxRecordsCookie.getValue());
                } catch (NumberFormatException e) {
                    // do nothing, use maxRecords default value
                }
            }
            
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.print("<html><head>" + "<title>Cookie Class</title>"
                    + "</head><body>"
                    + PreferenceServlet.MENU
                    + "<div>Here are some of the methods in " +
                            "javax.servlet.http.Cookie");
            writer.print("<ul>");
            
            for (int i = 0; i < maxRecords; i++) {
                writer.print("<li>" + methods[i] + "</li>");
            }
            writer.print("</ul>");
            writer.print("</div></body></html>");
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }

    }

    package app02c;

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

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

    /**
     * 根据接受到cookie来显示详细信息
     */
    @WebServlet(name = "CookieInfoServlet", urlPatterns = "/cookieInfo")
    public class CookieInfoServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public CookieInfoServlet() {
            super();
            // TODO Auto-generated constructor stub
        }

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            Cookie[] cookies = request.getCookies();
            StringBuilder styles = new StringBuilder();
            // 设置修饰
            styles.append(".title {");
            if (cookies != null) {
                // 根据设置的cookie显示
                for (Cookie cookie : cookies) {
                    String name = cookie.getName();
                    String value = cookie.getValue();
                    if (name.equals("titleFontSize")) {
                        styles.append("font-size:" + value + ";");
                    } else if (name.equals("titleFontWeight")) {
                        styles.append("font-weight:" + value + ";");
                    } else if (name.equals("titleFontStyle")) {
                        styles.append("font-style:" + value + ";");
                    }
                }
            }
            styles.append("}");
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.print("<html><head>" + "<title>Cookie Info</title>"
                    + "<style>" + styles.toString() + "</style>"
                    + "</head><body>" + PreferenceServlet.MENU
                    + "<div class='title'>"
                    + "Session Management with Cookies:</div>");
            writer.print("<div>");

            // cookies will be null if there's no cookie
            if (cookies == null) {
                writer.print("No cookie in this HTTP response.");
            } else {
                writer.println("<br/>Cookies in this HTTP response:");
                // 显示cookie
                for (Cookie cookie : cookies) {
                    writer.println("<br/>" + cookie.getName() + ":"
                            + cookie.getValue());
                }
            }
            writer.print("</div>");
            writer.print("</body></html>");
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }

    }

  • 相关阅读:
    HEVC软件记录
    怪诞行为学
    docker学习实践之路[第一站]环境安装
    centos系统(ssh)登录缓慢(输入账户密码后需要等待若干时间)
    CentOS7.x编译安装nginx,实现HTTP2
    vs 2017 IIS EXPRESS 增加局域网访问
    nginx在centos 7中源码编译安装【添加grpc的支持】
    docker学习实践之路[第五站]mysql镜像应用
    docker学习实践之路[第四站]利用pm2镜像部署node应用
    docker学习实践之路[第三站]node站点部署
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7528217.html
Copyright © 2011-2022 走看看