一尘不染

将Java应用程序转换为jsp / servlet

jsp

我有一个接受分段上传的Java应用程序,我的问题是我希望对此具有HTML /
JSP前端,而不是仅在服务器上工作。根据我提供的代码,什么是实现此目的的最佳方法。这让我有些困惑,因为我不确定如何将文件上传部分带入html /
jsp页面。任何建议都会有所帮助。

非常感谢,语气

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ProgressEvent;
import com.amazonaws.services.s3.model.ProgressListener;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.Upload;

public class S3TransferProgressSample {

private static AWSCredentials credentials;
private static TransferManager tx;
private static String bucketName;

private JProgressBar pb;
private JFrame frame;
private Upload upload;
private JButton button;

public static void main(String[] args) throws Exception {

    AmazonS3 s3 = new AmazonS3Client(credentials = new ClasspathPropertiesFileCredentialsProvider().getCredentials());
    Region usWest2 = Region.getRegion(Regions.US_WEST_2);
    s3.setRegion(usWest2);
    tx = new TransferManager(s3);

    bucketName = "s3-upload-sdk-sample-" + credentials.getAWSAccessKeyId().toLowerCase();

    new S3TransferProgressSample();
}

public S3TransferProgressSample() throws Exception {
    frame = new JFrame("Amazon S3 File Upload");
    button = new JButton("Choose File...");
    button.addActionListener(new ButtonListener());

    pb = new JProgressBar(0, 100);
    pb.setStringPainted(true);

    frame.setContentPane(createContentPane());
    frame.pack();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

class ButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
        JFileChooser fileChooser = new JFileChooser();
        int showOpenDialog = fileChooser.showOpenDialog(frame);
        if (showOpenDialog != JFileChooser.APPROVE_OPTION) return;

        createAmazonS3Bucket();

        ProgressListener progressListener = new ProgressListener() {
            public void progressChanged(ProgressEvent progressEvent) {
                if (upload == null) return;

                pb.setValue((int)upload.getProgress().getPercentTransfered());

                switch (progressEvent.getEventCode()) {
                case ProgressEvent.COMPLETED_EVENT_CODE:
                    pb.setValue(100);
                    break;
                case ProgressEvent.FAILED_EVENT_CODE:
                    try {
                        AmazonClientException e = upload.waitForException();
                        JOptionPane.showMessageDialog(frame,
                                "Unable to upload file to Amazon S3: " + e.getMessage(),
                                "Error Uploading File", JOptionPane.ERROR_MESSAGE);
                    } catch (InterruptedException e) {}
                    break;
                }
            }
        };

        File fileToUpload = fileChooser.getSelectedFile();
        PutObjectRequest request = new PutObjectRequest(
                bucketName, fileToUpload.getName(), fileToUpload)
            .withProgressListener(progressListener);
        upload = tx.upload(request);
    }
}

private void createAmazonS3Bucket() {
    try {
        if (tx.getAmazonS3Client().doesBucketExist(bucketName) == false) {
            tx.getAmazonS3Client().createBucket(bucketName);
        }
    } catch (AmazonClientException ace) {
        JOptionPane.showMessageDialog(frame, "Unable to create a new Amazon S3 bucket: " + ace.getMessage(),
                "Error Creating Bucket", JOptionPane.ERROR_MESSAGE);
    }
}

private JPanel createContentPane() {
    JPanel panel = new JPanel();
    panel.add(button);
    panel.add(pb);

    JPanel borderPanel = new JPanel();
    borderPanel.setLayout(new BorderLayout());
    borderPanel.add(panel, BorderLayout.NORTH);
    borderPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
    return borderPanel;
    }
}

阅读 353

收藏
2020-06-08

共1个答案

一尘不染

将Java应用程序转换为jsp / servlet

取决于它是哪种程序,就像将其中包含该main()方法的类,使其成为该方法的子类HttpServlet并获取该main()方法中的所有内容并将其放入doGet() methodservlet一样简单。然后,将所有System.out.println()语句替换为语句,以HTML格式输出输出。如果它只是不带的命令行程序,则可以使用GUI (Graphical User Interface)

如果您的程序没有GUI,则可以在此处停止阅读。如果它确实具有GUI,那么它可能会复杂得多。根据程序的类型,可以执行以下操作之一:

1.将整个东西放在小程序中。

This is pretty simple. Instead of replacing a few lines to turn the program into a Servlet, you'd be replacing a few lines to turn it into an Applet. This you could do if you don't need the server to communicate with, like if you had a solitare game. Otherwise, you could do #2.

2.将GUI放在Applet中,并将后端保留在服务器上。

This is what you'd call a "client/server" application.

3.创建一个基于JSP / Servlet的网站。

The most complicated option, but if you don't want to use Applets this is the only way to go.Here you're changing from a Java based GUI to an HTML/CSS based GUI. You might also need some JavaScript. If you're not familiar with all this stuff, but you're comfortable making Java GUI's using things like Swing, you might want to check out GWT (Google Web Toolkit). This allows you to make rich websites using plain Java. The Java code "compiles" into HTML and Javascript.

另一个:

第一次调用JSP时,是在运行时完成的。 一些Web服务器还带有JSP编译器,允许在构建时执行此操作,它具有两个优点:

  1. 它允许在构建时而非运行时检测JSP语法错误。

  2. 它避免了第一次调用的时间损失(将JSP编译为Java,然后再将Java编译为字节码需要花费一些时间)。

2020-06-08