繁体   English   中英

在(Servlet)屏幕上打印字符串数组存储的数据

[英]Printing string array stored data on screen in (servlets)

我正在学习Java中的servlet。 贝娄(Bellow)是我的代码,假设它获取url的内容,将其存储在数组列表中,然后在屏幕上显示它。 由于某些原因,我无法使字符串数组内容显示在屏幕上。 加载页面时,我收到“不走运”消息。 有什么想法吗? 谢谢

//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!");
        }
    }
}

cookies始终是一个空列表(除非您未向我们显示任何内容),因此您始终会对其进行洗牌并尝试显示,但是由于那里没有任何内容,因此您会看到一个空白页。

我将检查cookies != null更改为!cookies.isEmpty()

编辑:您没有将任何内容添加到cookies列表,所以它是空的( List<String> cookies = new ArrayList<>(); )。 也许您想在doGet中的某处调用geturl (在cookies列表中add了一些内容)方法? 现在,它没有在任何地方使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM