将java应用程序转换为jsp/servlet
我有一个接受多部分上传的java应用程序,我的问题是我希望有一个HTML/JSP前端,而不是仅仅在服务器上工作。根据我提供的代码,实现这一点的最佳方法是什么。这让我有点困惑,因为我不确定如何将文件上传部分引入html/jsp页面。任何建议都会有帮助 多谢各位, 语气将java应用程序转换为jsp/servlet,java,jsp,servlets,Java,Jsp,Servlets,我有一个接受多部分上传的java应用程序,我的问题是我希望有一个HTML/JSP前端,而不是仅仅在服务器上工作。根据我提供的代码,实现这一点的最佳方法是什么。这让我有点困惑,因为我不确定如何将文件上传部分引入html/jsp页面。任何建议都会有帮助 多谢各位, 语气 将Java代码放入JSP是一种已经被质疑了10年的做法。在moderne JSP中,使用JSTL和EL来代替糟糕的Java代码 您可能会发现这有助于学习如何构建现代web应用程序。您可以使用JSP提供UI(即浏览和上载文件)。您可以
将Java代码放入JSP是一种已经被质疑了10年的做法。在moderne JSP中,使用JSTL和EL来代替糟糕的Java代码
您可能会发现这有助于学习如何构建现代web应用程序。您可以使用
JSP
提供UI(即浏览和上载文件)。您可以使用HTML的多部分表单和文件标记进行相同的操作。更多关于这个
此外,您还可以使用Servlet
将控件委托给处理该文件的适当业务类
这样,您就可以清楚地区分模型、视图和控制器。您在这里使用的是swing for GUI。代替SwingGUI,您可以使用JSP进行查看或GUI,通过使用JSP可以捕获用户输入并在JSP上填充数据。对于处理业务逻辑,您可以使用servlet 希望它能帮助你 将java应用程序转换为jsp/servlet 根据它是什么样的程序,可以很容易地将包含
main()
方法的类作为HttpServlet
的子类,并将main()
方法中的所有内容放入servlet的doGet()方法
。然后将所有System.out.println()
语句替换为以HTML格式打印输出的语句。如果它只是一个没有GUI(图形用户界面)
的命令行程序,那么它就可以工作
如果您的程序没有GUI,那么您可以停止阅读此处。如果它确实有一个GUI,那么它可能会复杂得多。根据程序的类型,您可以执行以下操作之一:
1。将整个内容放入小程序中。
这很简单。与其替换几行代码将程序转换为Servlet,不如替换几行代码将其转换为Applet。
如果您不需要与服务器通信,就可以这样做,就像您有一个solitare游戏一样。否则,您可以执行#2。
2。将GUI放入小程序中,并将后端保留在服务器上。
这就是所谓的“客户机/服务器”应用程序。
3。创建基于JSP/Servlet的网站。
这是最复杂的选项,但如果您不想使用applet,这是唯一的选择。这里您将从基于Java的GUI更改为基于HTML/CSS的GUI。您可能还需要一些JavaScript。如果您不熟悉所有这些东西,但对使用Swing之类的东西制作JavaGUI感到满意,那么您可能需要查看GWT(GoogleWebToolkit)。
这允许您使用纯Java创建丰富的网站。Java代码“编译”成HTML和Javascript。
另一个:
这是在运行时完成的,当JSP第一次被调用时。一些web服务器还附带JSP编译器,允许在构建时执行此操作,这有两个优点:
Java Swing应用程序以何种方式接受多部分表单上载?你想干什么?您发布的代码看起来像一个Amazon S3示例应用程序。嗨,Elliott,是的,这是一个AWS S3示例。我可以在eclipse中以java应用程序的形式成功运行该应用程序,但是我希望上传方面成为html页面的一部分,这样我就可以在ec2实例上托管它。TransferManager是一个高级api,其中内置了多部分上载。现在该应用程序作为java应用程序运行,我正在尝试从浏览器运行它。谢谢
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;
}
}