[英]display output from .java in .jsp file
我有一个Java文件,该文件正在连接到ftp服务器并从服务器带回目录列表。 我的问题是从java文件中获取列表并在jsp中显示目录结果的正确方法是什么?
您是否建议我直接从jsp连接到ftp服务器,或者这是不良的编码做法?
例:
连接.java
package root;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class ConnectFTP {
private void showServerReply(FTPClient ftpClient) {
String[] replies = ftpClient.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public void listFTPVendors(String[] args) {
String server = "ftpserver.com";
int port = 21;
String user = "username";
String pass = "password";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
showServerReply(ftpClient);
int replyCode = ftpClient.getReplyCode();C
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftpClient.login(user, pass);
showServerReply(ftpClient);
if (!success) {
System.out.println("Could not login to the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
FTPFile[] files = ftpClient.listDirectories();
for (FTPFile file : files) {
String details = file.getName();
if (file.isDirectory()) {
details = "[" + details + "]";
}
System.out.println(details);
}
} catch (IOException ex) {
System.out.println("Oops! Something wrong happened");
ex.printStackTrace();
}
}
}
Connect.jsp
??
我只是在寻找建议,不一定是代码。 甚至一些阅读材料。 相当新的和丢失的...
return files
而不是遍历files
并进行打印,而是return files
并将listFTPVendors(String[] args)
方法的返回类型更改为FTPFile[]
。
现在,从您的JSP
调用此方法并以JSP
代码检索数据。
<%FTPFile[] files = new ConnectFTP().listFTPVendors()%>
不要忘记在JSP
导入ConnectFTP
类。
遍历JSP
files
并将其显示在网页上。
是的,JSP用于表示逻辑,因此如果将网络代码保存在单独的Java文件中会更好:)
我看到您正在使用Apache Commons FTP API。 您几乎可以正确执行此操作。
我还相信,当您的集合仅由目录组成时,您不必要测试目录。 这是因为您正在使用listDirectories()方法。
如果您调用listFiles(),则必须像已经完成的那样测试每个文件是一个目录。
您应该能够如下修改代码:
...
FTPFile[] files = ftpClient.listDirectories();
for (FTPFile file : files) {
System.out.println("["+ file.getName() +"]");
}
...
至于直接从您的JSP页面连接到FTP服务器-那里没有任何“错误”,但是通常jsp用于显示目的。
我将避免对页面中的凭据进行硬编码-应该将它们外部化为配置文件。 配置文件也应存储在无法通过浏览器访问的位置。
根据您使用的Web框架-您可能希望将此功能包装到控制器或服务中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.