Java 从下拉列表中选择一种颜色,并将该颜色存储在cookie中。
这是学校作业。我被卡住了。我将使用servlet并创建一个下拉列表,允许用户选择一种颜色,然后更改背景以反映该颜色。然后,只要cookie是当前的,backgound就会显示该颜色。为了澄清起见,这里有一个家庭作业中的问题:您需要构建一个Servlet,用于检查请求是否有包含用户首选颜色的cookie。如果请求没有此cookie,您的代码将创建一个白色背景的HTML页面。此页面将用于收集用户的颜色偏好。该页面将包含一个下拉选择框,其中包含以下四个选项:选择、白色、蓝色和灰色。使用JavaScript确保用户选择的不是“选择”条目。Javascript应该使用事件监听器实现,而不是在线实现。如果用户未进行有效选择,则不允许提交。用户选择并提交页面后,您的代码将在cookie中存储用户的颜色首选项,并生成一个页面,将背景设置为用户先前选择的颜色。cookie仅在30秒内有效。注意:创建cookie后,导航回该Servlet(不关闭浏览器)应呈现正确的背景,而不要求用户再次提供信息。cookie过期后,Servlet应再次请求用户提供颜色首选项 这是我的饼干系列:Java 从下拉列表中选择一种颜色,并将该颜色存储在cookie中。,java,servlets,cookies,background-color,Java,Servlets,Cookies,Background Color,这是学校作业。我被卡住了。我将使用servlet并创建一个下拉列表,允许用户选择一种颜色,然后更改背景以反映该颜色。然后,只要cookie是当前的,backgound就会显示该颜色。为了澄清起见,这里有一个家庭作业中的问题:您需要构建一个Servlet,用于检查请求是否有包含用户首选颜色的cookie。如果请求没有此cookie,您的代码将创建一个白色背景的HTML页面。此页面将用于收集用户的颜色偏好。该页面将包含一个下拉选择框,其中包含以下四个选项:选择、白色、蓝色和灰色。使用JavaScri
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);
}
}
包edu.edgewood.servlet;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.Cookie;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
/**
*Servlet实现类CookieServlet
*/
@WebServlet(“/CookieServlet”)
公共类CookieServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
受保护的最终静态字符串PREFS\u BGCOLOR=“PREFS.BGCOLOR”;
受保护字符串faveColor=默认颜色;
受保护的最终静态字符串默认值\u COLOR=“白色”;
公共烹饪服务{
超级();
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse
*(答复)
*/
@抑制警告(“未使用”)
受保护的无效数据集(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
response.setContentType(“text/html”);
最终字符串PREFS\u BGCOLOR=“PREFS.BGCOLOR”;
PrintWriter PrintWriter=response.getWriter();
Cookie[]Cookie=request.getCookies();
if(cookie==null){
printWriter.println(“无Cookies”);
printWriter.println(“”);
渲染页面(printWriter,false);
}否则{
for(int i=0;i”);
printWriter.println(“”);
printWriter.println(“addControlListeners();”;
printWriter.println(“”);
printWriter.println(“”);
}
/**
*@参见HttpServlet#doPost(HttpServletRequest,HttpServletResponse
*(答复)
*/
受保护的void doPost(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
Cookie Cookie=新的Cookie(PREFS_BGCOLOR,faveColor);
cookie.setMaxAge(10);
addCookie(cookie);
}
}
当前,初始页面呈现黄色。。。不知道那是从哪里来的。然后我在下拉列表中选择一种颜色,然后单击提交。“提交”按钮未进行验证,但随后会进入一个空白的白色屏幕。然后,当cookie仍然处于活动状态且页面呈现白色且显示文本时,我返回页面。非常感谢您的帮助。多谢各位 颜色选择
函数checkOption(){
var opt=document.frm.color.value;
如果(opt==”)
{
窗口提示(“Plase select color”);
document.frm.color.focus();
返回false;
}
}
颜色:
选择颜色
红色
绿色
蓝色