【问题标题】:Choose a color from a dropdown and store that color in a cookie.从下拉列表中选择一种颜色并将该颜色存储在 cookie 中。
【发布时间】:2013-05-26 21:33:51
【问题描述】:

这是学校作业。我被困住了。我将使用 servlet 并创建一个下拉菜单,允许用户选择一种颜色,然后更改背景以反映该颜色。然后,只要该 cookie 处于当前状态,该背景就会显示该颜色。为了澄清起见,这是作业中的问题:您需要构建一个 Servlet 来检查请求是否具有包含用户首选颜色的 cookie。如果请求没有此 cookie,您的代码将创建一个白色背景的 HTML 页面。该页面将用于收集用户的颜色偏好。该页面将包含一个下拉选择框,其中包含以下四个选项:选择、白色、蓝色和灰色。使用 JavaScript 确保用户选择了“选择”条目以外的其他内容。 Javascript 应该使用事件监听器而不是内联来实现。如果用户没有做出有效的选择,则不允许提交。用户做出选择并提交页面后,您的代码会将用户的颜色偏好存储在 cookie 中,并生成一个页面,将背景设置为用户先前选择的颜色。 cookie 仅在 30 秒内有效。注意:创建 cookie 后,导航回此 Servlet(不关闭浏览器)应该呈现正确的背景,而无需请求用户再次提供信息。在 cookie 过期后,Servlet 应该再次向用户请求颜色偏好。

这是我的 Cookie Serlevt:

package edu.edgewood.servlet;

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;

/**
 * Servlet implementation class CookieServlet
 */
@WebServlet("/CookieServlet")
public class CookieServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected final static String PREFS_BGCOLOR = "prefs.bgcolor";
    protected String faveColor = DEFAULT_COLOR;
    protected final static String DEFAULT_COLOR = "white";

    public CookieServlet() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @SuppressWarnings("unused")
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        final String PREFS_BGCOLOR = "prefs.bgcolor";
        PrintWriter printWriter = response.getWriter();

        Cookie[] cookie = request.getCookies();

        if (cookie == null) {
            printWriter.println("No Cookies");
            printWriter.println("</br>");
            renderPage(printWriter, false);

        } else {

            for (int i = 0; i < cookie.length; i++) {
                Cookie cookies = cookie[i];
                if (cookies.getName().equals(PREFS_BGCOLOR)) {
                    faveColor = cookies.getValue();
                    printWriter.println("This is your colored page"); //testing
                    //printWriter.println("<body bgcolor= 'PREFS_BGCOLOR'>"); //testing
                    printWriter.println("<body bgcolor=\"");
                    printWriter.print(faveColor);
                    printWriter.println("\">");
                    break;
                }

                printWriter.println(cookies.getValue());
            }
        }
    }

    private void renderPage(PrintWriter printWriter, boolean post) {
        printWriter.println("<html>");
        printWriter.println("<head >");
        printWriter.println("<script language='javascript' src='js/common.js'></script>");
        printWriter.println("</head>");
        printWriter.println("<body bgcolor= 'faveColor'>"); //determines background
        printWriter.println("Please choose a color");
        printWriter.println("<form action='CookieServlet' method='post'>"); 
        printWriter.println("<select id='colorid' onchange='if(this.value == '') this.selectedIndex = 1' name ='colorid'><option value='' disabled='disabled' selected='selected'>Please select a color</option> <option value='#FF0000'>Red</option> <option value='#0000FF'>Blue</option> <option value='#00FF00'>Green</option>");
        printWriter.println("<input type='button' id='submitBtn' value='Submit' onClick=getElementById('colorid').value/>");
        printWriter.println("</select>");
        printWriter.println("</br>");
        printWriter.println("</form>");
        printWriter.println("<script language ='javascript'>addControlListeners();</script>");
        printWriter.println("</body>");
        printWriter.println("</html>");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        Cookie cookie = new Cookie(PREFS_BGCOLOR, faveColor);
        cookie.setMaxAge(10);
        response.addCookie(cookie);
    }

}

目前,初始页面呈现黄色......不确定这是从哪里来的。然后我在下拉列表中选择一种颜色并单击提交。提交按钮未验证,但随后进入空白屏幕。然后,当 cookie 仍然处于活动状态并且页面呈现白色并显示我的文本时,我返回页面。任何帮助是极大的赞赏。谢谢你。

【问题讨论】:

    标签: java servlets cookies background-color


    【解决方案1】:



    颜色选择<br><br> 函数 checkOption() {<br> var opt = document.frm.color.value;<br> 如果(选择 == “”)<br> {<br> window.alert("请选择颜色");<br> document.frm.color.focus();<br> 返回错误;<br> }<br> }<br>脚本><br><br><form name="frm" method="post" action="ColorServlet" onsubmit="return checkOption()"> <br> 颜色:<br><option vlaue="" selected>选择颜色<br> </option> <option value="red">红色<br> </option> <option vlaue="green">绿色<br> </option> <option value="blue">蓝色<br><br><br> </option> </form> <br>正文><br>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      相关资源
      最近更新 更多