java - 将值从 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;
}
}
解决方案
files.setFile(path);
sizeService.getFile();
这两行是有问题的。“文件”是 sizeService 类的非静态属性,getFile() 方法也不是静态的。仅当您在第一类中声明了一个对象时,才能使用它们。就像是
sizeService sobject =new sizeService();
然后引用 files 对象
sobject.files....
并使用 getFile 方法sobect.getFile()....
另一种选择是您将“文件”和“getFile()”都设为静态。这样在另一个类中您可以直接引用它们
sizeService.files..... sizeSrvice.getFile().....
推荐阅读
- java - 如何在 Windows 上的 Atom 中编译和运行 Java 类?
- java - 在 spark java 中从 JDBC 源加载数据
- singly-linked-list - 对于单链表,是否总是必须添加一个新节点作为第一个元素?
- angular5 - 登录后如何调用构造函数和ngOnInit
- typescript - 类型脚本如何向声明的对象添加新属性?
- sql - 来自 sql-ex 的 SQL 练习问题
- javascript - 如何验证复选框最大检查/选择
- security - 如果没有任何注册,是否需要令牌验证?
- android - android.graphics.drawable.AdaptiveIconDrawable 无法转换为 android.graphics.drawable.BitmapDrawable 错误
- bazel - 如何减少 bazel 打印?