Hi, there are problems with the code, here’s one of the servlet methods:

static <T> String paginate (List<T> pages, int pagesPerOut) { for (int i = 0; i < pages.size(); i += pagesPerOut) { System.out.println(paginate(pages, i, pagesPerOut)); } return ""; } 

But this servlet cannot be written here, so how can this problem be solved? Here is the whole code:

 import java.io.*; import java.util.ArrayList; import java.util.List; import javax.servlet.*; import javax.servlet.http.*; public class servletss extends HttpServlet { @Override protected void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setCharacterEncoding("utf-8"); res.setContentType("text/html"); PrintWriter out = res.getWriter(); File file = new File("C:\\prov\\"); String list[] = file.list(); out.println("<html>"); out.println("<head>"); out.println("<title>testservlets</title>"); out.println("</head>"); out.println("<body>"); /* * начало вывода */ ArrayList<String> sizel = new ArrayList<String>(); sizel = pagef(); int sizelist; sizelist = sizel.size(); int pageint = 1;// номер страницы ArrayList<String> sizetris = new ArrayList<String>(); int startlist = (pageint - 1) * 30; int endlist = (sizel.size() >= (startlist + 30)) ? (startlist + 30) : sizel.size(); sizetris.addAll(sizel.subList(startlist, endlist)); double startdouble = 10.0;// конец показа страниц int endint = (int) (pageint * 10);// конечное число пользователя double allpage = sizelist / 3;// число страниц всего double page = allpage / startdouble;// деление страниц double lsc = Math.ceil(page); String separator = System.getProperty("line.separator"); if (endint > lsc * 10) { out.println("страниц не найдено"); } else { out.println("<div class=\"pagen\">" + pageint + "</div>"); out.println("<div class=\"bloctext\">" + paginate(sizetris, endint * 3) + separator + "</div>"); out.println("<div class=\"pagen\">" + pageint + "</div>"); } for (int i = 0; i < list.length; i++) { out.println("<a href=\"http://localhost:8080/test/servletss?i=" + i + "\" str=\"" + i + "\">" + i + "</a>"); } out.println("</body>"); out.println("</html>"); } static <T> String paginate (List<T> pages, int pagesPerOut) { for (int i = 0; i < pages.size(); i += pagesPerOut) { System.out.println(paginate(pages, i, pagesPerOut)); } return ""; } static <T> List<T> paginate (List<T> pages, int start, int count) { int end = start + count > pages.size() ? pages.size() : start + count; return pages.subList(start, end); } /* * метод для возвращения массива страниц */ static ArrayList<String> pagef () { ArrayList<String> page = new ArrayList<String>(); BufferedReader br = null; String s = null; File file = new File("C:\\prov\\"); String list[] = file.list(); try { for (int i = 0; i < list.length; i++) { File fileread = new File("C:\\prov\\" + list[i]); br = new BufferedReader(new InputStreamReader( new FileInputStream(fileread), "UTF-8")); while ((s = br.readLine()) != null) { page.add(s + "\n"); } br.close(); } } catch (Exception e) { System.out.println(e); } return page; } } 
  • And what's the problem? You can use System.out in any Java application, including the servlet. Or are you confused by the fact that what you write in System.out does not get on the page? So it should not. You need to write to an OutputStream or Writer from HttpServletResponse.getOutputStream () (or HttpServletResponse.getWriter ()), as you do in the doGet () method. In general, writing to the OutputStream from a servlet is only good if you are writing something small, for example, a JSON response to an AJAX request. Typically, the page code is stored separately from the servlet. Look towards JSP technology. - fori1ton

1 answer 1

System.out really meaningless in a servlet. Normal boys use logging ( java.util.logging built into the JDK), or (more correctly) Apache Log4J