2013-05-26 2 views
2

학교 숙제입니다. 나는 붙어있다. 서블릿을 사용하고 사용자가 색상을 선택하고 그 색상을 반영하도록 배경을 변경하는 드롭 다운을 작성합니다. 그러면 그 쿠키가 현재 언제든지 backgound가 해당 색상으로 표시됩니다. 숙제의 질문은 다음과 같습니다. 요청에 사용자의 선호 색상이 포함 된 쿠키가 있는지 확인하는 Servlet을 빌드해야합니다. 요청에이 쿠키가 없으면 코드가 흰색 배경의 HTML 페이지를 만듭니다. 이 페이지는 사용자의 색상 환경 설정을 수집하는 데 사용됩니다. 페이지에는 드롭 다운 선택 상자 (선택, 흰색, 파란색 및 회색)의 네 가지 옵션이 있습니다. 사용자가 "선택"항목 이외의 항목을 선택했는지 확인하려면 JavaScript를 사용하십시오. Javascript는 이벤트 리스너로 구현되어야하며 인라인되지 않아야합니다. 사용자가 올바른 선택을하지 않은 경우 제출을 허용하지 않습니다. 사용자가 페이지를 선택하고 제출하면 코드는 사용자의 색상 기본 설정을 쿠키에 저장하고 이전에 사용자가 선택한 색상으로 배경을 설정하는 페이지를 생성합니다. 쿠키는 30 초 동안 만 유효합니다. 참고 : 쿠키가 만들어지면 브라우저를 닫지 않고이 서블릿으로 돌아가서 사용자가 정보를 다시 입력하지 않고도 정확한 배경을 렌더링해야합니다. 쿠키가 만기 된 후 서블릿은 사용자에게 색상 선호도를 다시 요청해야합니다.드롭 다운에서 색상을 선택하고 해당 색상을 쿠키에 저장하십시오.

여기 내 쿠키 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); 
    } 

} 

현재 초기 페이지 렌더링 황색 ... 그 어디에서 오는지 확실하지 않다. 그런 다음 드롭 다운에서 색상을 선택하고 제출을 클릭합니다. 제출 버튼의 유효성은 검사되지 않지만 빈 화면이 나타납니다. 그런 다음 쿠키가 계속 활성화되어 있고 페이지가 텍스트가 표시된 흰색으로 렌더링되면 페이지로 돌아갑니다. 어떤 도움이라도 대단히 감사합니다. 고맙습니다.

답변

0

< HTML>
< 머리>
< 제목> 색상 선택
< 스크립트>
기능 checkOption() {
    VAR 옵트 = document.frm.color.value;
    경우 (옵트 == "")
    {
          는 Window.alert ("Plase는"색상을 선택)
          document.frm.color.초점();
          return false;
}
}
</스크립트>
< 몸>
< 양식 이름 = "FRM은"방법 = "게시물"행동 = "ColorServlet"onSubmit = "반환 checkOption()">
색상 :
빨간색 "> 레드
< 옵션 vlaue ="> "친환경 녹색
< 옵션 V"> 색상 선택
< 옵션 값 = 선택 " < 옵션 vlaue =" 블루 ALUE = "블루">
</제출 =>
< 입력 유형을 선택>
</FORM>
</BODY>
</HTML>

관련 문제