设计一个JAVA程序,下载由URL指定的网页的源代码,找出其中所有的超链接。

1、设计一个程序,下载由URL指定的网页的源代码,找出其中所有的超链接。2、设计一个程序,以支持找回密码服务,具体要求是:当用户输入自己的用户名和邮箱名后,检查对应的用户... 1、设计一个程序,下载由URL指定的网页的源代码,找出其中所有的超链接。
2、设计一个程序,以支持找回密码服务,具体要求是:当用户输入自己的用户名和邮箱名后,检查对应的用户名与邮箱是否存在。若存在,则生成一个由8位数字、字母及下划线组成的字符串作为该用户的新密码,并用该新密码覆盖原来的密码,同时将该密码发到该用户的邮箱中;若不存在,则提示相应的错误信息。
2选1,纯小白求高手= = 不想挂科,谢谢!
展开
 我来答
fuhaiwei
推荐于2016-04-09 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1390万
展开全部
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class HttpViewer extends JFrame {
    private JTextField urlInput;
    private JTextArea viewArea;

    public static void main(String[] args) {
        new HttpViewer();
    }

    public HttpViewer() {
        this.setTitle("Http Viewer");
        this.setSize(800, 600);
        this.setResizable(false);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        initPanel();
        initAction();
        this.setVisible(true);
    }

    // 这个方法用来设置窗口布局
    private void initPanel() {
        JPanel northPanel = new JPanel();
        JLabel urlInputLabel = new JLabel("URL:");
        urlInput = new JTextField(60);
        northPanel.add(urlInputLabel);
        northPanel.add(urlInput);
        this.add(northPanel, BorderLayout.NORTH);

        JPanel centerPanel = new JPanel();
        viewArea = new JTextArea(27, 60);
        centerPanel.add(new JScrollPane(viewArea));
        this.add(centerPanel);
    }

    // 这个方法用来设置事件
    private void initAction() {
        urlInput.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String text = urlInput.getText();
                if (text == null || text.length() == 0) {
                    viewArea.setText("您没有输入URL");
                    return;
                }
                try {
                    URL url = new URL(text);
                    String context = getContent(url);
                    if (context != null) {
                        searchFromText(context);
                    }
                } catch (MalformedURLException e1) {
                    viewArea.setText("您输入的URL不合法:" + text);
                }
            }
        });
    }

    private String getContent(URL url) {
        StringBuffer builder = new StringBuffer();

        int responseCode = -1;
        HttpURLConnection con = null;
        try {
            con = (HttpURLConnection) url.openConnection();
            con.setRequestProperty("User-Agent",
                    "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");// IE代理进行下载
            con.setConnectTimeout(60000);
            con.setReadTimeout(60000);

            // 获得网页返回信息码
            responseCode = con.getResponseCode();

            if (responseCode == -1) {
                viewArea.setText("连接失败:" + url.toString());
                return null;
            }

            if (responseCode >= 400) {
                viewArea.setText("请求失败,错误码:" + responseCode);
                return null;
            }

            InputStream is = con.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);

            String str = null;
            while ((str = br.readLine()) != null)
                builder.append(str);
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
            viewArea.setText("IOException: " + url.toString());
        } finally {
            con.disconnect();
        }
        return builder.toString();
    }

    private void searchFromText(String context) {
        viewArea.setText("查找URL中:\n");
        Pattern pattern = Pattern.compile("<a( [^>]+)*>(.*?)</a>");
        Matcher matcher = pattern.matcher(context);
        while (matcher.find()) {
            for (String prop : matcher.group(1).split(" ")) {
                int indexOf = prop.indexOf('=');
                if (indexOf > 0) {
                    if (prop.substring(0, indexOf).equals("href")) {
                        String url2 = prop.substring(indexOf + 2, prop.length() - 1);
                        viewArea.append(url2 + "\n");
                    }
                }
            }
        }
    }

}
力波鸿0i
2013-11-10 · TA获得超过1259个赞
知道小有建树答主
回答量:461
采纳率:100%
帮助的人:350万
展开全部
// 下载JSoup然后几行代码就可以
Document doc = Jsoup.connect("http://example.com").userAgent("Mozilla").get();
Elements links = doc.select("a[href]");
for (Element link : links) {
String linkHref =link.attr("href"); // 得到链接
String linkText =link.text(); // 得到显示的文字
}
追问
都说小白了,不知道怎么弄
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ccppv
2013-11-10 · TA获得超过2994个赞
知道大有可为答主
回答量:5074
采纳率:40%
帮助的人:2989万
展开全部
你交作业吧?

这应该是基础的东西吧?一个抓取,加正则,一个数据库读取写入。两个都不是太难的东西。。
追问
是的,我不会,时间也急
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式