在.jsp文件中显示.java的输出
我有一个java文件,它连接到ftp服务器,并从服务器返回目录列表。我的问题是,从java文件中获取列表并在jsp中显示目录结果的正确方法是什么 您建议我直接从jsp连接到ftp服务器,还是这是一种糟糕的编码实践 例如: Connect.java在.jsp文件中显示.java的输出,java,jsp,ftp,Java,Jsp,Ftp,我有一个java文件,它连接到ftp服务器,并从服务器返回目录列表。我的问题是,从java文件中获取列表并在jsp中显示目录结果的正确方法是什么 您建议我直接从jsp连接到ftp服务器,还是这是一种糟糕的编码实践 例如: Connect.java package root; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPF
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
?
我只是在寻找建议,不一定是代码。甚至可能是一些阅读材料。相当新且已丢失…不要迭代
文件
并打印它,而是执行返回文件
,并将方法的返回类型listFTPVendors(String[]args)
更改为FTPFile[]
现在,从JSP
调用此方法,并在JSP
代码中检索数据
<%FTPFile[] files = new ConnectFTP().listFTPVendors()%>
不要忘记在JSP
中导入类ConnectFTP
在
JSP
中迭代文件
,并将其显示在网页上。不要迭代文件
并打印它,而是执行返回文件
,并将方法的返回类型更改为listFTPVendors(String[]args)
为FTPFile[]
现在,从JSP
调用此方法,并在JSP
代码中检索数据
<%FTPFile[] files = new ConnectFTP().listFTPVendors()%>
不要忘记在JSP
中导入类ConnectFTP
在
JSP
中迭代文件
,并将其显示在网页上。不要迭代文件
并打印它,而是执行返回文件
,并将方法的返回类型更改为listFTPVendors(String[]args)
为FTPFile[]
现在,从JSP
调用此方法,并在JSP
代码中检索数据
<%FTPFile[] files = new ConnectFTP().listFTPVendors()%>
不要忘记在JSP
中导入类ConnectFTP
在
JSP
中迭代文件
,并将其显示在网页上。不要迭代文件
并打印它,而是执行返回文件
,并将方法的返回类型更改为listFTPVendors(String[]args)
为FTPFile[]
现在,从JSP
调用此方法,并在JSP
代码中检索数据
<%FTPFile[] files = new ConnectFTP().listFTPVendors()%>
不要忘记在JSP
中导入类ConnectFTP
在
JSP
中遍历文件,并将其显示在网页上。是的,JSP用于表示逻辑,因此如果将网络代码保存在单独的Java文件中会更好:)是的,JSP用于表示逻辑,因此如果将网络代码保存在单独的Java文件中会更好:)是的,JSP用于表示逻辑,因此如果将网络代码保存在单独的Java文件中会更好:)是的,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框架,您可能希望将此功能包装到控制器或服务中 我看到您正在使用Apache Commons FTP api。你做得很对
我还认为,当您的集合仅由目录组成时,您正在进行不必要的目录测试。
这是因为您使用的是listDirectories()方法。
如果调用listFiles(),则必须测试每个文件都是一个目录,正如您所做的那样
您应该能够按如下方式修改代码:
...
FTPFile[] files = ftpClient.listDirectories();
for (FTPFile file : files) {
System.out.println("["+ file.getName() +"]");
}
...
至于直接从JSP页面连接到FTP服务器,这里没有什么“错误”,但JSP通常用于显示目的
我会避免在页面中硬编码凭证-它们应该外部化到配置文件中。配置文件还应存储在无法通过浏览器访问的位置
根据您使用的web框架,您可能希望将此功能包装到控制器或服务中 我看到您正在使用Apache Commons FTP api。你做得很对
我还认为,当您的集合仅由目录组成时,您正在进行不必要的目录测试。
这是因为您使用的是listDirectories()方法。
如果调用listFiles(),则必须测试每个文件都是一个目录,正如您所做的那样
您应该能够按如下方式修改代码:
...
FTPFile[] files = ftpClient.listDirectories();
for (FTPFile file : files) {
System.out.println("["+ file.getName() +"]");
}
...
至于直接从JSP页面连接到FTP服务器,这里没有什么“错误”,但JSP通常用于显示目的
我会避免在页面中硬编码凭证-它们应该外部化到配置文件中。配置文件还应存储在无法通过浏览器访问的位置
根据您使用的web框架,您可能希望将此功能包装到控制器或服务中 我看到您正在使用Apache Commons FTP api。你做得很对