将Java应用程序转换为jsp / servlet
我有一个接受分段上传的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;
}
}
回答:
取决于它是哪种程序,就像将其中包含该main()
方法的类,使其成为该方法的子类HttpServlet
并获取该main()
方法中的所有内容并将其放入doGet()
methodservlet一样简单。然后,将所有System.out.println()
语句替换为语句,以HTML格式输出输出。如果它只是不带的命令行程序,则可以使用GUI
(Graphical User Interface)。
如果您的程序没有GUI,则可以在此处停止阅读。如果它确实具有GUI,那么它可能会复杂得多。根据程序的类型,可以执行以下操作之一:
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.
This is what you'd call a "client/server" application.
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编译器,允许在构建时执行此操作,它具有两个优点:
以上是 将Java应用程序转换为jsp / servlet 的全部内容, 来源链接: utcz.com/qa/398461.html