您的位置:首页 > 职场人生

黑马程序员_Java实现网页程序自动登录

2012-08-07 16:05 543 查看
-----------android培训java培训、java+3G学习型技术博客、期待与您交流!------------
 Stringsurl="http://192.168.0.1:8888/oa/login.jsp";

   

    URLurl=newURL(surl);

   

    URLConnectionconn=url.openConnection();

   

    conn.setDoOutput(true);

   

    OutputStreamWriterout=newOutputStreamWriter(conn.getOutputStream());

   

    Stringstr="username=yourname&password=123456";

   

    out.write(str);

   

    out.flush();

   

    out.close();

   

    到这里,如果在C/S结构中,且参数正确,程序能够成功登录到这个oa系统,要看到结果,你可以通过下面的代码将系统服务器返回的结果System.out.println()出来。

   

    Stringsling="";

   

    Stringscontent="";

   

    BufferedReaderin=newBufferedReader(newInputStreamReader(conn.getInputStream(),"UTF-8"));

   

    while((sling=in.readLine())!=null)

   

    scontent+=in+"\r\n";

   

    System.out.println(scontent);

   

    在C/S结构下,可以到得到控制台输出了返回值,从返回内容里可以看出程序已经成功登录,但要是把这个网址浏览器打开,还是得重新登录,问题没有得到根本解决。如果只是恶意注册,到这里应该就达到目的了。

   

    看样子C/S结构下不容易实现网页程序自动登录,除非你在C/S程序中内嵌一个浏览器,直接在这个浏览器中自动访问系统,应该没有别的方法,主要问题在于我们没有办法共享Session.

   

    为了便于共享Session,我们只能在浏览器中实现网页自动登录,通过上面的代码在jsp页面中测试,达不到预期目标。

   

    网页自动登录,就是希望程序自动填充用户名和密码,然后以Post方式提交给登录页面的Form所指向的action页面或方法。我将系统的登录页面的源代码保存成一个网页,然后在username和password文本框中设置默认值,然后通过这网页登录系统,测试后,发现可行。接下来,你可能已经想到了解决方法。

   

    我们可以通过url.openConnection()建立连接,将返回的scontent打印出来,然后接着打印以下代码:

   

    out.println("\r\n");

   

    out.println("document.getElementsByName(\"username\")[0].value=yourname;\r\n");

4000
   

    out.println("document.getElementsByName(\"password\")[0].value=123456;\r\n");

   

    out.println("document.forms[0].submit();\r\n");

   

    out.println("\r\n");

   

    原理很简单,通过login.jsp将登录页面的全部源代码写在当前页面,然后使用javascript脚本将用户名和密码的值填充上,最后提交表单。这样中,终于实现了自动登录的目标。现在我通过一个特殊的网址,就可以自动访问这个oa了。

   

    你可能注意到参数url,他的值是经过加密的,内容是用户名和密码。当然,你也可以加上有效期,即在有效期内这个链接才是有效的,才可以实现自动登录。
-----------android培训java培训、java+3G学习型技术博客、期待与您交流!------------
详细请查看:http://net.itheima.com
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息