2014-02-28 3 views
1

쿠키 작성과 관련하여 YouTube 튜토리얼을 따랐습니다. 나는 올바른 코드에 입력,하지만 난에 라인에서 오류가 발생합니다 : https://www.youtube.com/watch?v=hOColvr3pl0쿠키가 날짜와 함께 오류를 발생시킵니다.

: 누군가가 나는 그가 비디오에서 실행할 수있는이 오류를 얼마나 알고 있나요 The constructor Date() is undefined. :

cookie = new Cookie("test_cookie", Long.toString(new Date().getTime())); 

오류가 말한다

거기에 매개 변수가 있어야 할 것 같습니까? 베스트 감사합니다 MADS 당신은 java.sql.Date을 가져 오는

package ExamplePackage; 

import java.io.IOException; 
import java.util.Date; 
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; 

@WebServlet("/CookieUsageServlet") 
public class CookieUsageServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     Cookie cookie = getCookie(request, response); 
     printResponse(response, cookie); 
    } 

    private Cookie getCookie(HttpServletRequest request, HttpServletResponse response) { 
     Cookie cookie = null; 
     Cookie[] cookiesArray = request.getCookies(); 
     if(cookiesArray != null) { 
      for(int x = 0; x < cookiesArray.length; x++) { 
       if(cookiesArray[x].getName().equals("test_cookie")) cookie = cookiesArray[x]; 
      } 
     } 
     if(cookie != null) { 
      System.out.println("cookie retrieved"); 
     } else { 
      int timeToExpireCookie = new Integer(getServletContext().getInitParameter("time-to-expire-cookie")).intValue(); 
      cookie = new Cookie("test_cookie", Long.toString(new Date().getTime())); 
      cookie.setMaxAge(timeToExpireCookie); 
      cookie.setPath(request.getContextPath()); // Sti til login 
      System.out.println("Cookie created..."); 
      response.addCookie(cookie); 
     } 
     return cookie; 
    } 
    private void printResponse(HttpServletResponse response, Cookie cookie) throws IOException { 
     PrintWriter printWriter = response.getWriter(); 
     response.setContentType("text/html"); 
     printWriter.println("<html>"); 
     printWriter.println("<head><title>Cookie In JAVA servlet</title></head>"); 
     printWriter.println("<body>"); 
     printWriter.println("<cookie name: " + cookie.getName() + "<br>"); 
     printWriter.println("<cookie value: " + cookie.getValue() + "<br>"); 
     printWriter.println("<time to expire cookie in seconds: " + cookie.getMaxAge() + "<br>"); 
     printWriter.println("</body>"); 
     printWriter.println("</html>"); 


    } 

} 

답변

2

java.sql.Date에는 인수가 없습니다. java.util.Date

cookie = new Cookie("test_cookie", Long.toString(new java.util.Date().getTime())); 
+0

아 물론 당연합니다. 덕분에 나는이 프로그램을 실행하면 :-) 많이 나는 오류를 얻을 : HTTP 상태 405 - HTTP 메소드 GET이 URL에서 지원하지 않는 유형 상태 보고서 HTTP 메소드 GET이 URL에서 지원하지 않는 메시지 설명 지정된 HTTP 메소드가 요청 된 자원에 허용되지 않습니다. 어떻게 될 수 있는지 알고 계십니까? 안부 MADS – McDuck4

+0

재정의'doGet' 방법뿐만 아니라이 같은 –

+0

뭔가? @Override 무효의 doGet (HttpServletRequest의 요청, HttpServletResponse를 응답) ServletException을, IOException가 {processRequest라는 (요청, 응답)를 던졌습니다 보호; } – McDuck4

2

-이 매개 변수가없는 생성자가 없습니다. 당신은 java.util.Date을 의미했습니다.

그러나, 현재 시간 얻기 위해 전혀 Date 객체를 생성 할 필요가 없습니다 밀리 초 - 이후 - 더 - 유닉스 시대 :

cookie = new Cookie("test_cookie", Long.toString(System.currentTimeMillis()); 

(또는 이상적으로는, Clock의 어떤 종류를 주입 표현을 코드에 추가하면 더 쉽게 테스트 할 수 있습니다.)

+0

아 물론 좋은 점

java.sql.Date 변화를. 덕분에 나는이 프로그램을 실행하면 :-) 많이 나는 오류를 얻을 : HTTP 상태 405 - HTTP 메소드 GET이 URL에서 지원하지 않는 유형 상태 보고서 HTTP 메소드 GET이 URL에서 지원하지 않는 메시지 설명 지정된 HTTP 메소드가 요청 된 자원에 허용되지 않습니다. 어떻게 될 수 있는지 알고 계십니까? 최고 감사합니다 Mads – McDuck4

+0

@ user1883095 : 오류는 그 자체로 묘사됩니다. 서블릿은'doPost'를 오버라이드했기 때문에 GET을 지원하지 않습니다. 'doGet'을 오버라이드 (또는 대신)하십시오. 이런 –

+0

뭔가 @Override 보호 공극의 doGet (HttpServletRequest 요청, HttpServletResponse 응답)가 ServletException을 IOException을 { processRequest라는 (요청, 응답)를 발생 ?:; } – McDuck4

관련 문제