`
alfusen_xiong
  • 浏览: 2798 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

保存用户网址,并对网址进行校验

 
阅读更多
package com.alfusen.client;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import com.alfusen.utl.GeneralTools;

/**
* 网址输入框
* @author  Administrator
* @version  [版本号, 2012-9-10]
*/
public class ClientAddrDialog extends JDialog implements ActionListener
{
   
    /**
     * 序列号
     */
    private static final long serialVersionUID = -7024012529868588166L;
   
    Client client = null;
   
    public ClientAddrDialog(Client jf, String name)
    {
        this.setTitle(name);
        this.client = jf;
        try
        {
            init();
        }
        catch (ClassNotFoundException e)
        {
        }
       
    }
   
    public JTextArea jta = null;
   
    public JButton jbt = new JButton("确定");
   
    public JButton clear = new JButton("取消");
   
    public JLabel jlb = new JLabel("请输入网址:");
   
    public JLabel lable = new JLabel("最多只能输入三个网址");
   
    public JPanel jpanel = new JPanel();
   
    public JPanel jpane_north = new JPanel();
   
    public void init() throws ClassNotFoundException
    {
        GeneralTools.setIcon(this);
       
        this.setModal(true);
        this.setResizable(false);
       
        //屏幕置中
        //setLocationRelativeTo(null);
        this.setLocation(400, 320);
       
        if (!client.getAppList().isEmpty())
        {
            List<String> list = client.getAppList();
            jta = new JTextArea();
            for (int i = 0; i < list.size(); i++)
            {
                if (i == 0)
                {
                    jta.setText(list.get(i));
                }
                else
                {
                    jta.setText(jta.getText() + "\n" + list.get(i));
                }
            }
        }
        else
        {
            jta = new JTextArea("http://");
        }
        jta.setLineWrap(true);
       
        //添加确定和取消按钮
        jpanel.add(jbt);
        jpanel.add(clear);
       
        Container contentPane = getContentPane();
        contentPane.add(jlb, BorderLayout.NORTH);
        contentPane.add(new JScrollPane(jta), BorderLayout.CENTER);
        contentPane.add(jpanel, BorderLayout.SOUTH);
       
        this.setSize(415, 200);
       
        //添加事务
        jbt.addActionListener(this);
        clear.addActionListener(this);
    }
   
    public void close()
    {
        this.dispose();
    }
   
    /**
     * 事务监听
     * @param e 监听器
     */
    public void actionPerformed(ActionEvent e)
    {
        Object obj = e.getSource();
        if (obj == jbt)
        {
            String addrs = jta.getText();
            if (null == addrs || "".equals(addrs.trim()))
            {
                JOptionPane.showMessageDialog(jta,
                        "请输入网址",
                        "请输入网址",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }
           
            //网址数组
            String[] addr = addrs.split("\n");
           
            String[] addrDest = null;
           
            if (addr.length > 0 && "".equals(addr[addr.length - 1].trim()))
            {
                addrDest = new String[addr.length - 1];
                System.arraycopy(addr, 0, addrDest, 0, addr.length - 1);
            }
            else
            {
                addrDest = addr;
            }
           
            //判断长度
            if (addrDest.length > 3)
            {
                JOptionPane.showMessageDialog(jta,
                        "最多只能输入三个网址,谢谢!",
                        "请输入网址",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }
           
            List<String> list = new ArrayList<String>();
            for (int i = 0; i < addrDest.length; i++)
            {
                if ("".equals(addrDest[i].trim())
                        || addrDest[i].trim().matches("\r\n")
                        || addrDest[i].trim().matches("\n"))
                {
                    JOptionPane.showMessageDialog(jta,
                            "网址不合法,中间不能空行",
                            "请输入网址",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (!addrDest[i].trim().matches("http://[^/]+/.*"))
                {
                    JOptionPane.showMessageDialog(jta,
                            "网址" + addrDest[i] + "不合法,必须http://开头",
                            "请输入网址",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                }
                if (addrDest[i].length() > 255)
                {
                    JOptionPane.showMessageDialog(jta,
                            "网址" + addrDest[i] + "不合法,\n长度必须小于255",
                            "请输入网址",
                            JOptionPane.WARNING_MESSAGE);
                    return;
                }
                list.add(addrDest[i]);
            }
           
            //检测网址是否能访问
            if (!checkAddr(list))
            {
                JOptionPane.showMessageDialog(jta,
                        "网址不合法,\n请确认地址输入正确",
                        "请输入网址",
                        JOptionPane.WARNING_MESSAGE);
                return;
            }
           
            //清空原来的值原来的值
            client.getAppList().clear();
           
            //重新添加网址
            client.getAppList().addAll(list);
           
            if (list.size() < 3)
            {
                for (int i = 3; i > list.size(); i--)
                {
                    GeneralTools.saveCfg(client.getPs(), "addr" + i, "");
                }
            }
           
            //写入mm.cfg文件中
            for (int i = 0; i < list.size(); i++)
            {
                GeneralTools.saveCfg(client.getPs(),
                        "addr" + (i + 1),
                        list.get(i));
            }
           
            //关闭窗口
            close();
        }
        else if (clear == obj)
        {
            close();
        }
    }
   
    /**
     * 检查地址是否可以用
     * @param list
     * @return [参数说明]
     *
     * @return boolean [返回类型说明]
     * @exception throws [违例类型] [违例说明]
     * @see [类、类#方法、类#成员]
     */
    private boolean checkAddr(List<String> list)
    {
        for (String string : list)
        {
            URL url;
            URLConnection con;
            try
            {
                url = new URL(string);
                con = url.openConnection();
               
                //con.connect();
                InputStream input = con.getInputStream();
               
                if (input.available() == 0)
                {
                    return false;
                }
            }
            catch (MalformedURLException e)
            {
                return false;
            }
            catch (IOException e)
            {
                return false;
            }
        }
        return true;
    }
   
}
分享到:
评论

相关推荐

    网址请求校验工具

    - **日志记录**:为了便于追踪和分析,用户可以开启日志记录功能,保存每次校验的详细信息。 - **更新与支持**:定期检查工具是否有更新,以获取最新的功能和修复的bug,同时关注开发者提供的技术支持和社区资源,...

    11.7 产品参数掉电保存与校验.rar

    - 家用电器:例如智能家电,保存用户偏好设置。 - 无线传感器网络:断电后保持最后的测量值,便于数据分析。 6. **学习与实践**: - 开发者可以从源码中学习如何在GD32F303上实现这类功能,了解相关API的使用。 ...

    struts用户注册登录用校验器校验信息

    这样,当用户提交表单时,Struts框架会自动调用配置的校验器进行数据验证。 数据库部分,虽然描述中提到使用的是SQL Server 2005,但具体实现细节如表结构、存储过程或DAO(Data Access Object)设计并未提供。通常...

    struts2输入校验

    本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...

    文件校验工具 MD5 校验王 5.9.8.0 绿色中文免费版.zip

    MD5 效验王 5.9 绿色中文版是一款提取自 2345 好压 5.9 版本的 MD5 效验工具,不占用资源,可帮助用户来快速的对网络下载的文件进行MD5值的效验,通过效验可查看程序的完成性及是否被篡改。 文件校验工具 MD5 校验...

    Android对资源和权限进行校验的代码例子

    下面我们将深入探讨如何在Android中对资源和权限进行校验,并通过代码示例进行详细解析。 首先,资源校验涉及到对硬件资源、存储资源以及网络资源的检查。硬件资源如电池状态、内存使用情况等,需要在执行某些耗能...

    校验和计算工具

    2. 存档保护:在备份重要文件或存档时,计算并保存校验和,以后可以定期检查存档文件,确认它们未发生任何改变。 3. 系统完整性检查:操作系统或软件更新后,可以计算新版本的校验和,与官方提供的值进行比对,以...

    CRC modbus校验工具

    CRC的工作原理基于多项式除法,它将待校验的数据看作一个二进制数,用预定义的CRC多项式对其进行除法运算,得到的余数就是CRC校验码。在Modbus协议中,通常使用16位CRC校验,对应的多项式是X^16 + X^12 + X^5 + 1,...

    验证码校验servlet实现

    4. **验证码校验**:当用户提交表单时,服务器端的另一个Servlet负责校验输入的验证码。这一步包括: - 从Session中获取之前保存的验证码。 - 比较用户输入的验证码与Session中的验证码是否一致。 - 如果一致,...

    LRC校验码生成工具

    - 用户界面:提供友好的图形用户界面(GUI),让用户可以输入或导入待校验的数据,并显示生成的LRC校验码。 - 文件操作:支持读取和保存数据文件,方便批量处理。 - 错误检测:自动比较发送和接收的LRC,提示用户...

    Struts2的输入校验

    首先,Struts2的输入校验机制允许开发者在不编写额外代码的情况下,对用户的输入进行验证。它内置了多种校验器,能够处理大部分常见的校验需求,如必填、长度限制、数据类型检查等。此外,对于更复杂的校验规则,...

    CMOS校验和算法

    CMOS校验和的计算方式一般比较简单,它通常是对存储在CMOS中的所有字节进行求和,然后取反得到一个校验值。这个校验和会存储在CMOS的一个特定位置。在系统启动时,会重新计算当前CMOS数据的校验和并与存储的校验和...

    CheckSum 校验和工具

    1. 文件校验:CheckSum工具可以计算并显示文件的校验和,用户可以通过比较新旧文件的校验和来判断文件是否一致。 2. 记录管理:CheckSum工具通常会保存校验和记录,便于日后比对。这些记录可以是文本文件,易于读取...

    CRC校验 全代码型

    这个过程包括对数据每一位进行异或操作,如果结果为1,则进行左移一位后再与生成多项式异或,直到所有位都被处理。 Qt的国际化(i18n)支持可以帮助开发出多语言版本的应用。通过使用`QTranslator`和`QLocale`类,...

    ISO文件校验工具

    压缩包子文件的文件名称列表中,"HashMyFiles.cfg"可能是该校验工具的配置文件,保存用户自定义的设置;"HashMyFiles.chm"是帮助文件,包含关于软件的使用指南和信息;"HashMyFiles.exe"是程序的可执行文件,用户...

    文件校验工具

    文件校验和是通过对文件内容进行数学运算而得出的一串固定长度的数字摘要。常见的校验和算法有MD5(Message-Digest Algorithm 5)和SHA系列(Secure Hash Algorithm),包括SHA-1、SHA-256、SHA-512等。这些算法能够...

    校验和算法(C#)校验和算法(C#)

    此外,解决方案文件(wg011.sln)和用户选项文件(wg011.suo)也是项目的重要组成部分,它们可能包含对开发环境的设置和项目配置。为了保护这些文件不被意外更改,可以定期计算它们的校验和,并在版本控制系统中记录...

    springMVC3.2实现后台校验

    // 保存用户信息到数据库 } } ``` 在上面的例子中,`@Valid`注解会触发对`User`对象的校验,如果校验失败,`BindingResult`对象将包含校验错误信息。我们可以检查`BindingResult`来决定是否继续处理请求,或者向...

    vc实现MD5文件校验

    MD5的主要应用是对数据的完整性进行验证,确保文件在传输或存储过程中没有被篡改。 在"vc实现MD5文件校验"这个项目中,我们看到一个基于Visual C++ (VC) 的应用程序,它的功能是计算并显示文件的MD5校验和。用户...

    易语言密码校验1源码,易语言密码校验1.0

    易语言是一种专为中国人设计的编程语言,它以简化的语法和中文编程为特色,旨在降低编程门槛,让更多的人能够参与到编程中来。...通过深入研究,我们可以提升自己的编程技能,同时对网络安全有更深入的理解。

Global site tag (gtag.js) - Google Analytics