如何在没有JEditor的情况下制作Java Web浏览器?
我对Java还是相当陌生,对于我的班级来说,我们必须制作一个没有JEditor的web浏览器。我只需要弄清楚当用户在JTextField中键入时如何使用套接字,然后将其转到该网站。此外,我只应该使用http://而不是https://如果这有区别的话。什么都行!谢谢如何在没有JEditor的情况下制作Java Web浏览器?,java,Java,我对Java还是相当陌生,对于我的班级来说,我们必须制作一个没有JEditor的web浏览器。我只需要弄清楚当用户在JTextField中键入时如何使用套接字,然后将其转到该网站。此外,我只应该使用http://而不是https://如果这有区别的话。什么都行!谢谢 import javax.swing.*; import java.awt.*; import javax.swing.JButton; import java.awt.GridLayout; import java.awt
import javax.swing.*;
import java.awt.*;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.awt.event.*;
import java.net.InetAddress;
import java.net.Socket;
import java.io.*;
public class WebPanel extends JPanel{
PrintWriter pw;
JTextField text = new JTextField("http://www.");
public WebPanel(){
//trying to connect to the website
try {
Socket s = new Socket(text, 80); //<<<---where the error is thrown
OutputStream os = s.getOutputStream();
pw = new PrintWriter(os, true);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
//set layout
setLayout(null);
ButtonHandler bh = new ButtonHandler();
text.addActionListener(bh);
text.setBounds(185, 10, 315, 25);
add(text);
//buttons
JButton goButton = new JButton("GO");
goButton.addActionListener(bh);
add(goButton);
goButton.setBounds(500, 10, 75, 25);
JButton backButton = new JButton("BACK");
backButton.addActionListener(bh);
add(backButton);
backButton.setBounds(2, 10, 75, 25);
JButton forwardButton = new JButton("FORWARD");
forwardButton.addActionListener(bh);
add(forwardButton);
forwardButton.setBounds(80, 10, 100, 25);
}
public class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
//buttons for later
if(e.getActionCommand().equals("GO")){
String input = text.getText();
System.out.println("You searched for: " + input);
pw.flush();
}else if(e.getActionCommand().equals("BACK")){
System.out.println("you pressed the back button");
pw.flush();
} else if(e.getActionCommand().equals("FORWARD")){
System.out.println("You pressed the forward button");
pw.flush();
}
}
}
}
}
import javax.swing.*;
导入java.awt.*;
导入javax.swing.JButton;
导入java.awt.GridLayout;
导入java.awt.event.*;
导入java.net.InetAddress;
导入java.net.Socket;
导入java.io.*;
公共类WebPanel扩展了JPanel{
印刷作家;
JTextField text=新的JTextField(“http://www.");
公共网页{
//正在尝试连接到网站
试一试{
Socket s=新套接字(文本,80);//对于简单的情况,您不需要使用套接字。您可以像这样使用URL类:
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.io.IOUtils;
public class URLReadTest {
public static void main(String[] args) throws Exception {
InputStream is = new URL("http://stackoverflow.com/").openStream();
String html = IOUtils.toString(is);
is.close();
System.out.println(html); // Parse HTML here
}
}
然后,您必须自己解析返回的HTML,然后才能将其可视化。对于简单的情况,您不需要使用套接字。您可以使用如下URL类:
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.io.IOUtils;
public class URLReadTest {
public static void main(String[] args) throws Exception {
InputStream is = new URL("http://stackoverflow.com/").openStream();
String html = IOUtils.toString(is);
is.close();
System.out.println(html); // Parse HTML here
}
}
当然,你必须自己解析返回的HTML,然后才能将其可视化。你的问题太宽泛了,就像问工程师“如何制造汽车?”。将您的问题分解为多个部分。获取用户输入。发出HTTP请求。显示页面。是否有效?您在哪里遇到问题?共享您目前正在使用的一些代码,或您正在尝试使用的一段代码。如果您可以发布更具体的问题,其他人将更容易提供帮助。我更新了它,t感谢您的帮助!那么为什么您要将JTextField的变量放入套接字构造函数中,而不是使用text.getText()
?另一件事是,当您使用套接字时,您不能使用您在JTextField
中定义的URL(我的意思是“http://...")。在套接字中定义主机名和端口。没有协议,没有相对的资源路径。所有这些都应该通过写入套接字本身来提供。你的问题太广泛了。这就像问工程师“如何制造汽车?”。将您的问题分解为多个部分。获取用户输入。发出HTTP请求。显示页面。是否有效?您在哪里遇到问题?共享您目前正在使用的一些代码,或您正在尝试使用的一段代码。如果您可以发布更具体的问题,其他人将更容易提供帮助。我更新了它,t感谢您的帮助!那么为什么您要将JTextField的变量放入套接字构造函数中,而不是使用text.getText()
?另一件事是,当您使用套接字时,您不能使用您在JTextField
中定义的URL(我的意思是“http://...")。在套接字中定义主机名和端口。无协议,无相对资源路径。所有这些都应通过写入套接字本身来提供。