Java傳入用戶名和密碼并自動(dòng)提交表單實(shí)現(xiàn)登錄到其他系統(tǒng)的實(shí)例代碼
不用單點(diǎn)登錄,模擬遠(yuǎn)程項(xiàng)目的登錄頁(yè)面表單,在訪問這個(gè)頁(yè)面的時(shí)候自動(dòng)提交表單到此項(xiàng)目的登錄action,就可以實(shí)現(xiàn)登錄到其他系統(tǒng)。
ssh框架項(xiàng)目
1.以下是本地系統(tǒng)的action代碼:
import java.io.IOException; import java.util.List; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; public class myLoginAction { /** * 查詢是否用戶已注冊(cè) * @return * @throws Exception */ public void checkUser() throws Exception{ Loginer loginer = (Loginer) request.getSession() .getAttribute("loginer"); String url = "http://www.youtest.com/login.php"; //遠(yuǎn)程系統(tǒng)登錄action地址 String param = "username=Tom&password=123456"; //參數(shù) String temp = "alert('用戶名或密碼錯(cuò)誤');"; //返回的信息,此處是錯(cuò)誤信息,用于比較。 視情況而定 boolean result =false ; //驗(yàn)證數(shù)據(jù)是否能登錄 result = sendPost(url, param, temp); if(result){ return "login"; }else{ return "register"; } } //訪問遠(yuǎn)程登錄action并獲取返回的信息 public static boolean sendPost(String url, String param, String temp) { PrintWriter out = null; BufferedReader in = null; boolean result = true; try { URL realUrl = new URL(url); // 打開和URL之間的連接 URLConnection conn = realUrl.openConnection(); // 設(shè)置通用的請(qǐng)求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 發(fā)送POST請(qǐng)求必須設(shè)置如下兩行 conn.setDoOutput(true); conn.setDoInput(true); // 獲取URLConnection對(duì)象對(duì)應(yīng)的輸出流 out = new PrintWriter(conn.getOutputStream()); // 發(fā)送請(qǐng)求參數(shù) out.print(param); // flush輸出流的緩沖 out.flush(); // 定義BufferedReader輸入流來讀取URL的響應(yīng) in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { if(temp.equals((line.trim()))) { System.out.println("錯(cuò)誤的line:"+line); result = false; } } } catch (Exception e) { result = false; logger.error("發(fā)送 POST 請(qǐng)求出現(xiàn)異常!"+e); System.out.println("發(fā)送 POST 請(qǐng)求出現(xiàn)異常!"+e); e.printStackTrace(); }finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } }catch(IOException ex){ logger.error(ex); ex.printStackTrace(); } } return result; } }
2.模擬的登錄頁(yè)面:
<html> <head></head> <body> <script type="text/javascript"> var iframe = document.createElement("iframe"); iframe.src = "http://www.youtest.com/login.php?UNAME=<%=userName%>&UPWD=<%=pwd%>"; iframe.style.display="none"; var sta="false;" if (iframe.attachEvent){ iframe.attachEvent("onload", function(){ window.location.; }); } else { iframe.onload = function(){ window.location.; }; } document.body.appendChild(iframe); </script> </body> </html>
以上所述是小編給大家介紹的Java傳入用戶名和密碼并自動(dòng)提交表單實(shí)現(xiàn)登錄到其他系統(tǒng),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)
用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實(shí)現(xiàn)最適合列寬。2013-11-11java中l(wèi)ambda表達(dá)式簡(jiǎn)單用例
讓我們從最簡(jiǎn)單的例子開始,來學(xué)習(xí)如何對(duì)一個(gè)string列表進(jìn)行排序。我們首先使用Java 8之前的方法來實(shí)現(xiàn)2016-09-09Java異常(Exception)處理以及常見異??偨Y(jié)
在《Java編程思想》中這樣定義異常,阻止當(dāng)前方法或作用域繼續(xù)執(zhí)行的問題,雖然java中有異常處理機(jī)制,但是要明確一點(diǎn),決不應(yīng)該用"正常"的態(tài)度來看待異常,這篇文章主要給大家介紹了關(guān)于Java異常(Exception)處理以及常見異常的相關(guān)資料,需要的朋友可以參考下2021-10-10Java?spring?通過注解方式創(chuàng)建對(duì)象的示例詳解
這篇文章主要介紹了java?spring?通過注解方式創(chuàng)建對(duì)象,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02Java如何使用HTTPclient訪問url獲得數(shù)據(jù)
這篇文章主要介紹了Java使用HTTPclient訪問url獲得數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09