Это мой класс java для чтения csv файла testnews.csv, я хочу напечатать этот вывод в веб-браузере, поэтому я использую jsp, но он показывает, что тип ошибки недействителен.
Testnews.java:
package testnews;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Testnews {
public static void main(String[] args) {
Testnews obj = new Testnews();
obj.run();
}
public void run() {
/**************************************/
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat ("ddMMyyyy");
String dt = ft.format(dNow).toString();
/***************************************/
String csvFile = ("D://news//"+dt+"//testnews.csv");
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] country = line.split(cvsSplitBy);
System.out.println(country[4] + country[5]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done");
}
}
index.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8" import="testnews.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
Testnews tn = new Testnews();
%>
<%= tn.run() %>
</body>
</html>
testnews.csv:
1.0.0.0 1.0.0.255 16777216 16777471 AU Australia
1.0.1.0 1.0.3.255 16777472 16778239 CN China
1.0.4.0 1.0.7.255 16778240 16779263 AU Australia
1.0.8.0 1.0.15.255 16779264 16781311 CN China
1.0.16.0 1.0.31.255 16781312 16785407 JP Japan
1.0.32.0 1.0.63.255 16785408 16793599 CN China
1.0.64.0 1.0.127.255 16793600 16809983 JP Japan
1.0.128.0 1.0.255.255 16809984 16842751 TH Thailand
Ошибка в строке:
<%= tn.run() %>
правильно?
Оператор <%=
it для чтения значений. Функции также возвращают значения, как вы, конечно, знаете. Итак, если вы хотите, чтобы команда <%= tn.run() %>
, вы должны объявить функцию "run" и вернуть ей некоторое значение.
Вместо вызова System.out.println(country[4] + country[5]);
создать одну строку и объединить результаты. В конце вашей функции верните его вызывающему.
Надеюсь, поможет.
Вы никогда не должны этого делать: вы помещаете форматирование своей страницы в код Java. Вы должны попытаться найти учебник по программированию сервлета и:
Нет прямого ответа на вашу проблему:
Вы должны иметь Testnews.run()
записи в StringWriter
и вернуть полученную строку.
public String run() {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
...
pw.println(country[4] + country[5]);
...
return sw.toString();
}
но BEWARE, поскольку вы не форматируете в HTML, результирующая страница будет плохой...