繁体   English   中英

在.jsp文件中显示.java的输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM