实现口令验证程序
我的程序如下:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class URLPassword extends Frame{
private TextField tf = new TextField("请输入url地址");
private TextArea ta = new TextArea();
public static void main(String[] args) {
// TODO, add your application code
Frame f=new URLPassword();
f.setSize(300,300);
f.setVisible(true);
} /**
* Method URLPassword
*
*
*/
public URLPassword() {
// TODO: Add your code here
super("url passwod test");
Authenticator.setDefault(new MyAuthenticator());
add(tf,BorderLayout.NORTH);
ta.setEditable(false);
tf.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String s=tf.getText();
if(s.length()!=0)
{ta.setText(fetchURL(s));}
}
}
);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
} /**
* Method URLPassword
*
*
* @param urlString
*
* @return
*
*/
private String fetchURL(String urlString) {
// TODO: Add your code here
StringWriter sw =new StringWriter();
PrintWriter pw=new PrintWriter(sw);
try{
URL url=new URL(urlString);
InputStream content=(InputStream)url.getContent();
BufferedReader in=new BufferedReader(new InputStreamReader(content) );
String line;
while((line=in.readLine())!=null)
{
pw.println(line);
}
}
catch(MalformedURLException e){
pw.println("invalid url");
}
catch(IOException e) {
pw.println("Error reading url");
}
return sw.toString();
}}class MyAuthenticator extends Authenticator {
/**
* Method getPasswordAuthentication
*
*
* @return
*
*/
protected PasswordAuthentication getPasswordAuthentication() {
// TODO: Add your code here
final Dialog jd=new Dialog(URLPassword.this,"Please input Password",true);
jd.setLayout(new GridLayout(0,1));
Label jl=new Label(getRequestingPrompt());
jd.add(jl);
TextField username =new TextField();
username.setBackground(Color.lightGray);
jd.add(username);
TextField password=new TextField();
password.setEchoChar('*');
password.setBackground(Color.lightGray);
jd.add(password);
Button jb=new Button("Yes");
jd.add(jb);
jb.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
jd.dispose();
}
}
);
jd.pack();
jd.setVisible(true);
return new PasswordAuthentication(username.getText(),password.getText().toCharArray());
}
}
结果输出如下:
C:\Program Files\Xinox Software\JCreatorV4\MyProjects\URLPassword\src\URLPassword.java:108: not an enclosing class: java.net.PasswordAuthentication
final Dialog jd=new Dialog(PasswordAuthentication.this,"Please input Password",true);
^
1 errorProcess completed.
我的程序如下:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class URLPassword extends Frame{
private TextField tf = new TextField("请输入url地址");
private TextArea ta = new TextArea();
public static void main(String[] args) {
// TODO, add your application code
Frame f=new URLPassword();
f.setSize(300,300);
f.setVisible(true);
} /**
* Method URLPassword
*
*
*/
public URLPassword() {
// TODO: Add your code here
super("url passwod test");
Authenticator.setDefault(new MyAuthenticator());
add(tf,BorderLayout.NORTH);
ta.setEditable(false);
tf.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String s=tf.getText();
if(s.length()!=0)
{ta.setText(fetchURL(s));}
}
}
);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
} /**
* Method URLPassword
*
*
* @param urlString
*
* @return
*
*/
private String fetchURL(String urlString) {
// TODO: Add your code here
StringWriter sw =new StringWriter();
PrintWriter pw=new PrintWriter(sw);
try{
URL url=new URL(urlString);
InputStream content=(InputStream)url.getContent();
BufferedReader in=new BufferedReader(new InputStreamReader(content) );
String line;
while((line=in.readLine())!=null)
{
pw.println(line);
}
}
catch(MalformedURLException e){
pw.println("invalid url");
}
catch(IOException e) {
pw.println("Error reading url");
}
return sw.toString();
}}class MyAuthenticator extends Authenticator {
/**
* Method getPasswordAuthentication
*
*
* @return
*
*/
protected PasswordAuthentication getPasswordAuthentication() {
// TODO: Add your code here
final Dialog jd=new Dialog(URLPassword.this,"Please input Password",true);
jd.setLayout(new GridLayout(0,1));
Label jl=new Label(getRequestingPrompt());
jd.add(jl);
TextField username =new TextField();
username.setBackground(Color.lightGray);
jd.add(username);
TextField password=new TextField();
password.setEchoChar('*');
password.setBackground(Color.lightGray);
jd.add(password);
Button jb=new Button("Yes");
jd.add(jb);
jb.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
jd.dispose();
}
}
);
jd.pack();
jd.setVisible(true);
return new PasswordAuthentication(username.getText(),password.getText().toCharArray());
}
}
结果输出如下:
C:\Program Files\Xinox Software\JCreatorV4\MyProjects\URLPassword\src\URLPassword.java:108: not an enclosing class: java.net.PasswordAuthentication
final Dialog jd=new Dialog(PasswordAuthentication.this,"Please input Password",true);
^
1 errorProcess completed.
解决方案 »
- 先装了jdk1.6,后又装上了1.5,但是java -version还是1.6
- buffer.capacity()方法到底是怎样计算的?
- java中怎样确定是目录或文件?
- hash的词频代码有吗?JAVA
- 从数据库读取字符串判断是否为非法字符,用正则替换。。。。急等!!
- 怎么二重遍历ArrayList
- 请问大家JFrame 和 Jpanel 的区别是什么?
- 很菜的具体输入问题,帮帮忙。
- ★在SUN 的网站上何处下载JDK? 我在 java.sun.com 上转了一个小时,也不知道哪个SDK 才是我该下载的!请指教★
- 这道考题题意是什么?应该选哪个?
- 请问winxp系统下怎么不能安装jdk1.6?
- 100分求答案(数据采集cookie)
//URLPassword.this?? 语法错误
final Dialog jd=new Dialog(URLPassword.this,"Please input Password",true);//可以修改成在URLPassword中调用时传递一个参数
//构造函数URLPassword中,生成MyAuthenticator对象时传入对象引用
Authenticator.setDefault(new MyAuthenticator(this));//为MyAuthenticator增加构造函数,保存传入的URLPassword的引用
class MyAuthenticator extends Authenticator {
private Frame frame; //增加一个Frame对象引用
public MyAuthenticator(Frame frame) {
super();
this.frame = frame;
System.out.println("MyAuthenticator done");
}
/**
* Method getPasswordAuthentication
* @return
*/
protected PasswordAuthentication getPasswordAuthentication() {
final Dialog jd=new Dialog(frame,"Please input password",true);
...
}
}是可以运行了,也可以获取到网站的数据了(html格式),但好像没有提示输入密码啊,这部分该怎么调用现在还不会;楼主调出来了也分享下呀~