Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从servlet上的列表打开文件_Java_Jsp_Servlets - Fatal编程技术网

Java 如何从servlet上的列表打开文件

Java 如何从servlet上的列表打开文件,java,jsp,servlets,Java,Jsp,Servlets,我需要打开列表中的read.xml文件。我怎么能做到?我尝试编写servlet,但不确定如何使用列表 我应该在web.xml和logs.jsp中写些什么? 请帮帮我!多谢各位 //servlet for open for read file package Logs; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpS

我需要打开列表中的read.xml文件。我怎么能做到?我尝试编写servlet,但不确定如何使用列表 我应该在web.xml和logs.jsp中写些什么? 请帮帮我!多谢各位

//servlet for open for read file
package Logs;

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 java.io.File;
import java.io.IOException;

@WebServlet("/file")
public class OpenFileServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        File[] files = new File("C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs").listFiles();

        for (int i = 0; i < files.length; i++){
        File file = new File(getServletContext().getRealPath("C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs" + files[i]));
            req.getServletContext().getResourceAsStream("\\" + file);
            req.getRequestDispatcher("\\" + file).forward(req, resp);
        }

    }
}
//用于打开以读取文件的servlet
包装日志;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入java.io.File;
导入java.io.IOException;
@WebServlet(“/file”)
公共类OpenFileServlet扩展了HttpServlet{
受保护的void doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException{
File[]files=新文件(“C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs”).listFiles();
对于(int i=0;i
但是如果我单击文件,tomcat会显示错误500。第17行,因为我将这个类放在前面两行(包日志和空间)之外

类型异常报告
说明服务器遇到意外情况,无法满足请求。
例外情况
java.lang.NullPointerException
java.base/java.io.File。(File.java:276)
doGet(OpenFileServlet.java:17)
javaservlet.http.HttpServlet.service(HttpServlet.java:634)
javaservlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
注意:根本原因的完整堆栈跟踪可在服务器日志中找到。
自JDK 8以来

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //...

        try (Stream<Path> paths = Files.walk(Paths.get("C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs"))) {
            List<byte[]> fileContents = paths
                    .filter(Files::isRegularFile)
                    .map(this::readAllBytes)
                    .collect(Collectors.toList());
        }

        //...

        return;

    }

    private byte[] readAllBytes(Path path) {
        try {
            return Files.readAllBytes(path);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
protectedvoid doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException{
//...
尝试(Stream path=Files.walk(path.get(“C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs”)){
列表文件内容=路径
.filter(文件::isRegularFile)
.map(此::readAllBytes)
.collect(Collectors.toList());
}
//...
返回;
}
专用字节[]readAllBytes(路径){
试一试{
返回文件.readAllBytes(路径);
}捕获(IOE异常){
抛出新的运行时异常(e);
}
}
自JDK 8以来

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //...

        try (Stream<Path> paths = Files.walk(Paths.get("C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs"))) {
            List<byte[]> fileContents = paths
                    .filter(Files::isRegularFile)
                    .map(this::readAllBytes)
                    .collect(Collectors.toList());
        }

        //...

        return;

    }

    private byte[] readAllBytes(Path path) {
        try {
            return Files.readAllBytes(path);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
protectedvoid doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException{
//...
尝试(Stream path=Files.walk(path.get(“C:\\DevPrograms\\apache-tomcat-9.0.21\\webapps\\Report\\Logs”)){
列表文件内容=路径
.filter(文件::isRegularFile)
.map(此::readAllBytes)
.collect(Collectors.toList());
}
//...
返回;
}
专用字节[]readAllBytes(路径){
试一试{
返回文件.readAllBytes(路径);
}捕获(IOE异常){
抛出新的运行时异常(e);
}
}

一般来说,在这些应用程序中使用文件的绝对路径不是一个好主意。您必须使用相对于应用程序安装目录的路径。一般来说,在这些应用程序中使用文件的绝对路径是个坏主意。您必须使用相对于应用程序安装目录的路径。