2014-02-28 52 views
1

我在youtube上關注了一個關於創建cookie的教程。我輸入了正確的代碼,但我得到一個錯誤在符合:Cookie在日期中給出錯誤

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

錯誤說:The constructor Date() is undefined.有誰知道我是如何得到這個錯誤,當他可以在視頻中運行它: https://www.youtube.com/watch?v=hOColvr3pl0

我想應該有一個參數,或? 問候的Mads

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沒有no-arg構造函數。

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支持 description對於請求的資源不允許指定的HTTP方法。 你知道這是怎麼回事嗎? 最好的問候 Mads – McDuck4

+0

重寫'doGet'方法以及 –

+0

這樣的事情是這樣?:@Override保護無效doGet(HttpServletRequest請求,HttpServletResponse響應)拋出ServletException,IOException {processRequest(request,response); } – McDuck4

2

你要導入java.sql.Date - 這有一個參數的構造函數。你的意思是java.util.Date,它的確如此。

然而,沒有必要爲了得到當前的時間都創建一個Date對象以來的毫秒數最Unix的時代:

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

(或理想,注入某種Clock代表到您的代碼中,以便您可以更輕鬆地進行測試。)

+0

當然好點啊。非常感謝:-)當我運行程序時出現錯誤: HTTP狀態405 - HTTP GET方法不受此URL支持 類型狀態報告 消息HTTP GET方法不受此URL支持 description對於請求的資源不允許指定的HTTP方法。 你知道這是怎麼回事嗎? 最好的問候 Mads – McDuck4

+0

@ user1883095:錯誤描述自己 - 你的servlet不支持GET,因爲你只覆蓋了'doPost'。也覆蓋'doGet'(或者改爲)。 –

+0

像這樣?: @Override 保護無效的doGet(HttpServletRequest的請求,響應HttpServletResponse的) 拋出的ServletException,IOException異常{ 的processRequest(請求,響應); } – McDuck4

相關問題