background image

 

如何实现 Java 网页自动登录,你知道吗?

   我不得不使用好几个系统,都是 B/S 结构的,每次登录都需要输入用户名和密码,觉
得非常麻烦,考虑到其他同事也会有这样的需求,不妨就写个自动登录的程序吧。之前,
也考虑过使用单点登录,几经尝试之后还是放弃了。
    我习惯使用 Java,本能地开始寻找 Java 的解决方法,在 Google

中输入 Java 自动登

” “

录 、Java

” “

网页模拟登录 、Java Post 

登录 ,结果倒是不少,内容也差不多,我尝试很

多次终究也没有达到我预期的目标。后来,我都不知道这些代码应该在 jsp 页面中执行还
是在 c/s 结构的程序中执行。但这些代码确实管用。
    我们先分析一下代码,
    String surl ="http://192.168.0.1:8888/oa/login.jsp";
    URL url = newURL(surl);
    URLConnection conn= url.openConnection();
    conn.setDoOutput(true);
 

 

 

 

OutputStreamWriterout=new 

OutputStreamWriter(conn.getOutputStream());
    String str ="username=yourname&password=123456";
    out.write(str);
    out.flush();
    out.close();
    到这里,如果在 C/S 结构中,且参数正确,程序能够成功登录到这个 oa 系统,要看
到结果,你可以通过下面的代码将系统服务器返回的结果 System.out.println()出来。
    String sling ="";
    String scontent ="";
 

 

 

 

BufferedReader

 

in

 

=

 

new 

BufferedReader ( newInputStreamReader ( conn.getInputStream ( ) , "UTF-
8"));
    while ((sling = in.readLine())!= null)
    scontent += in + "\r\n";
    System.out.println(scontent);
    在 C/S 结构下,可以到得到控制台输出了返回值,从返回内容里可以看出程序已经成
功登录,但要是把这个网址浏览器打开,还是得重新登录,问题没有得到根本解决。如果
只是恶意注册,到这里应该就达到目的了。[nextpage]
    看样子 C/S 结构下不容易实现网页程序自动登录,除非你在 C/S 程序中内嵌一个浏览
器,直接在这个浏览器中自动访问系统,应该没有别的方法,主要问题在于我们没有办
法共享 Session。
    为了便于共享 Session,我们只能在浏览器中实现网页自动登录,通过上面的代码在
jsp 页面中测试,达不到预期目标。
    网页自动登录,就是希望程序自动填充用户名和密码,然后以 Post 方式提交给登录
页面的 Form 所指向的 action 页面或方法。我将系统的登录页面的源代码保存成一个网
页,然后在 username 和 password 文本框中设置默认值,然后通过这网页登录系统,
测试后,发现可行。接下来,你可能已经想到了解决方法。
    我们可以通过 url.openConnection()建立连接,将返回的 scontent 打印出来,
然后接着打印以下代码: