首页 > 解决方案 > 将值从 servlet 解析为类

问题描述

我想在运行时读取用户输入文本文件(该文件将是“.java”或“.c++”文件)并进行一些计算。我使用 MVC 架构来实现这一点。

到目前为止我做了什么;

GetFileServlet

FileService fileService = new FileService();
Files files = new Files();
SizeService sizeService = new SizeService();

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);

    String value = request.getParameter("code");

    File file = new File("C:\\Users\\User\\Desktop\\"+value);

    String path = file.toString();

    files.setFile(path);
    sizeService.getFile();

    // Read the URL in the file object
    BufferedReader br = new BufferedReader(new FileReader(file));

    // Create a empty String variable

        // int count = 0;

        String text;
        // Read the file till it's end
        try {
            while ((text  = br.readLine()) != null) {
                //System.out.println(st);

                // Display the file in the web page
                PrintWriter out = response.getWriter();
                out.println(text);
            }
            files.setCode(text);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

在这个类 (GetFileServlet) 中,我从用户那里获取文件并读取整个文件并将该文件的值和路径发送到另一个名为 SizeService.java 的类。在此类中,我可以获取该文件的路径,但无法从该文件中获取文本。它给了我一个空值。该值通过名为 Files.java 的类进行解析。当我将文本传递给此类时,它会打印文本。但是当我尝试使用 getter 从 SizeService.java 类访问它时,它不会打印。请帮我解决这个问题。

而且我需要一种更好的方法来获取文件路径;

    String value = request.getParameter("code");
File file = new File("C:\\Users\\User\\Desktop\\"+value);

这些是其他类;

大小服务.java

public class SizeService {

Files files = new Files();

public String getFile() {
    String code = files.getCode();
    System.out.println(code + " im in the service"); // This give me a null value
    return code;

}

}

文件.java

公共类文件{

private static String file;
private static String code; 


public Files() {
    super();
    // TODO Auto-generated constructor stub
}

public Files(String file, String code) {
    super();
    Files.code = code;
    Files.file = file;

}

public static String getFile() {
    return file;

}

public void setFile(String file) {
    Files.file = file;

}

public static String getCode() {
    return code;
}

public void setCode(String code) {
    Files.code = code;
}

}

标签: javajspservlets

解决方案


files.setFile(path);
sizeService.getFile();

这两行是有问题的。“文件”是 sizeService 类的非静态属性,getFile() 方法也不是静态的。仅当您在第一类中声明了一个对象时,才能使用它们。就像是

sizeService sobject =new sizeService();

然后引用 files 对象 sobject.files....
并使用 getFile 方法sobect.getFile()....

另一种选择是您将“文件”和“getFile()”都设为静态。这样在另一个类中您可以直接引用它们

sizeService.files.....  sizeSrvice.getFile().....

推荐阅读