2015-10-02 50 views
0

我正在學習java中的servlet。 Bellow是我的代碼,它假設獲取url的內容,將它存儲在數組列表中,並將其顯示在屏幕上。出於某種原因,我無法獲得字符串數組內容顯示在屏幕上。當我加載頁面時,我收到「不幸」的消息。任何想法爲什麼?感謝在(servlets)屏幕上打印字符串數組存儲的數據

//package fortune; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Random; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import static java.util.Arrays.*; 
import java.util.Collections; 
import java.util.List; 

@WebServlet(name = "FortuneServlet", urlPatterns = {"/"}) 
public class FortuneServlet extends HttpServlet { 
    //private String [] cookies = null; 
    List<String> cookies = new ArrayList<>(); 
    String line ; 
    public void geturl(String[] args) { 

     try 
     { 
     URL url = new URL(" http://fortunes.cat-v.org/openbsd/"); 
      //URL url = new URL(" http://bbc.com"); 
     // read text returned by server 
      BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 

     while((line = in.readLine()) != null) 
     { 
       cookies.add(line); 
       //line = in.readLine(); 
     } 
      in.close();  
    } 
     catch (java.net.MalformedURLException e) { 
      System.out.println("Malformed URL: " + e.getMessage()); 
     } 
     catch (IOException e) { 
      System.out.println("I/O Error: " + e.getMessage()); 
     } 
    } 
    public void init() throws ServletException { 
    } 

    @Override 
    protected void doGet(
     HttpServletRequest request, 
     HttpServletResponse response) 
      throws ServletException, IOException { 

     response.setCharacterEncoding("UTF-8"); 
     response.setContentType("text/plain"); 
     if (cookies != null) 
     { 
      //response.getWriter().println(
       // cookies[new Random().nextInt(cookies.length)] 
      //);    
      for (String str: cookies) 
      { 
      Collections.shuffle(cookies); 
      response.getWriter().println(str); 
      } 
     } 

     else { 
      response.getWriter().println("No luck!"); 
     } 
    } 
} 
+0

您是否收到任何錯誤和異常?或者你得到了什麼輸出? –

+0

不,我沒有得到任何錯誤!我得到一個空白屏幕 – zamzam

回答

0

cookies始終是一個空列表(除非你是不是顯示的東西給我們),所以你總是洗牌,並嘗試進行顯示,而是因爲你沒有任何那裏你看到一個空白頁。

我會將支票cookies != null更改爲!cookies.isEmpty()

編輯: 您不添加任何東西到cookies列表,所以它是空的(List<String> cookies = new ArrayList<>();)。 也許你想打電話給geturl(它在cookies列表上做了一些add)方法在doGet的某個地方?現在它不在任何地方使用。

+0

好吧,如果我改變它!cookies.isEmpty()它顯示「不幸!」消息 – zamzam

+0

@zamzam所以問題解決了? –

+0

不行,我仍然需要將結果顯示在屏幕上。所以看來我沒有正確填充數組列表 – zamzam