前几天别的项目组的要求说要那我们的项目出去演示,要做个能快速登录其B/S系统的东西。我就给写了一个html文件,在浏览器中打开这个文件之后,就可以自动跳转到我们系统的主界面。

我们的系统使用的是Spring Security那一套的权限控制机制,简单的自动登录比较简单,只要定义一个<form>表单,提交的action指向项目根目录下的j_spring_security_check页面,并在表单中定义两个字段,名字分别为j_username和j_password,并分别给定用户名和密码值,然后提交表单即可。这样的登录方式,相当于直接从系统的登录界面登录,只不过把登录过程自动化了而已。

后来,他们又提出登录之后,最好能把原系统的标题给替换掉,显示一个他们给定的名字;还想自动实现页面中的一些操作(这是一个车辆的GPS监控系统,他们想一登录就自动选上几辆车并开始监控)。琢磨之后发现第二个要求应该是不可能的,因为这样就相当于跨域访问了。关于第一部分,我使用了一个命名的iframe,也就是把我们的系统嵌入到一个另一个页面之中。并且为了正好练习一下javascript,我给这个页面加上了根据主窗口的大小调节iframe大小的功能,是跨浏览器的;这样,跟直接登录系统看到的界面是完全一样的,只不过可以自定义一个title,并且可以添加一些额外的js代码。全部的代码如下:

<html> <head> <title>GPS监控系统演示</title> </head> <body> <iframe id='i_iframe' name="n_iframe" frameborder="0"></iframe> <form target="n_iframe" name="loginform" method="post" action="http://***/GPSMonitor/j_spring_security_check"> <input name="j_username" type='hidden' value='NearEast' /><!-- sxys --> <input name="j_password" type='hidden' value='123' /> </form> <script type="text/javascript"> function addCookie(name, value) { var Days = 2; var exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires="+ exp.toGMTString(); } function GetPageSize() { var actW, actH; if(window.innerHeight && window.scrollMaxY) { // Mozilla actW = window.innerWidth + window.scrollMaxX; actH = window.innerHeight + window.scrollMaxY; } else if(document.body.scrollHeight > document.body.offsetHeight){ // all but IE Mac actW = document.body.scrollWidth; actH = document.body.scrollHeight; } else if(document.body) { // IE Mac actW = document.body.offsetWidth; actH = document.body.offsetHeight; } var winW, winH; if(window.innerHeight) { // all except IE winW = window.innerWidth; winH = window.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // IE 6 Strict Mode winW = document.documentElement.clientWidth; winH = document.documentElement.clientHeight; } else if (document.body) { // other winW = document.body.clientWidth; winH = document.body.clientHeight; } // for small pages with total size less then the viewport var pageW = (actW<winW) ? winW : actW; var pageH = (actH<winH) ? winH : actH; return {PageW:pageW, PageH:pageH, WinW:winW, WinH:winH}; } var frm = document.getElementById('i_iframe'); frm.style.position = "absolute"; frm.style.left="0px"; frm.style.top="0px"; window.onresize = function(){ info = GetPageSize(); frm.style.width=info.WinW; frm.style.height=info.WinH; }; window.onresize(); addCookie('mapType',2); loginform.submit(); setTimeout(sendAjax,5000); </script> </body> </html>

其中addCookie('mapType',2);这句是为了写登录过程中需要用到的一个cookie值。就这么简单!

另附两个封装好的获取和删除cookie值的函数,以及原来企图实现第二部分功能时参考的一个跨浏览器的发送Ajax请求的函数:

function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return unescape(arr[2]); else return null; } function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 2000000000); var cval = getCookie(name); if (cval != null) document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT"; } function sendAjax(){ var xmlhttp; var txt,x,i; if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else{// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ xmlDoc=xmlhttp.responseXML; txt=""; x=xmlDoc.getElementsByTagName("title"); for (i=0;i<x.length;i++){ txt=txt + x[i].childNodes[0].nodeValue + "<br />"; } document.getElementById("myDiv").innerHTML=txt; } } xmlhttp.open("POST","http://***/GPSMonitor/tiles/chooseVehicle.action",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send(); }

转载于:https://www.cnblogs.com/JPAORM/archive/2011/11/02/2509782.html

Javascript自动登录B/S系统的简单实现相关推荐

  1. Python桌面可视化+自动登录学校教务系统(含源码!!!)

    前言:通过Python爬虫与tkinter模块实现桌面快捷自动化登录教务系统 目录: 前言:通过Python爬虫与tkinter模块实现桌面快捷自动化登录教务系统 效果展示: 整体思路: 总体框架: ...

  2. win7自动登录进入桌面系统的配置方式

    Win7直接自动进入桌面的方法 == 步骤一:在打开命令编辑框,键入控制命令 == 先在Win7中按"Win+R"键打开运行对话框或者是点"开始"菜单(如下图) ...

  3. NodeBB实现登录企业账号系统(简单实现,非CAS登录)

    上面两篇文章是通过CAS中央认证系统实现的登录,方案有点复杂,而且有时需要不改Nodebb原有登录界面的情况下实现企业账号共享. 实现步骤: 一,企业服务实现登录api接口,提供接口,用于第三方登录. ...

  4. 用python脚本4行代码实现自动登录上网认证系统

    公司最近搞了个上网认证系统.每天开机要连上网络都要登录一下. 一直听说python啥事都能干,说得我这个美工心痒痒. 装好python,搜了一些教程,说简单的post发送就能搞定, 再往下,了解到了p ...

  5. python 自动登录网站_Windows系统中Python实现每日定时自动登录签到

    问题描述 在每天比如10点到11点之间定时自动登陆网站,签到 实现思路 使用fiddler抓包工具先登陆一遍,把请求的地址,header等信息都拿到. 使用python写一个脚本,模拟浏览器向服务器发 ...

  6. 我的世界服务器氪金系统怎么做,[经济]PPRMB销售系统 1.3.1 —— 地图扫码自动到账,氪金系统如此简单[全版本]...

    [PPRMB] 用户 "XXXX" 创建订单时发生错误, 原因: zfapi.yueli123.com [21:53:57] [Craft Scheduler Thread - 6 ...

  7. java学习笔记——众筹项目练习——项目中的忘记密码(密码找回)与记住我(自动登录)功能 和 返回json数据低版本浏览器显示下载问题的解决、众筹系统架构重构

                                          忘记密码(密码找回) 忘记密码(密码找回)这个功能可以说是目前所有为别人提供服务的软件系统都具备的基础功能啦!很普遍,因为总 ...

  8. Linux Ubuntu 自动登录

    我一直在用Ubuntu发型版本的Linux系统,很喜欢把它做得更加的方便易用,特别是Ubuntu的Server版本,因为没有Desktop的 GUI界面,也没有自动登录设置,无法通过简单的点击鼠标方式 ...

  9. c#自动登录网页,浏览页面

    需求:客户的数据同时存在在另外一个不可控的系统中,需要和当前系统同步. 思路:自动登录另外一个系统,然后抓取数据,同步到本系统中. 技术点:模拟用户登录:保存登录状态:抓取数据 程序非常简单: /// ...

最新文章

  1. 简单的Java双亲委派机制
  2. [导入]ASP.NET MVC框架开发系列课程(1):MVC模式与ASP.NET MVC框架概述.zip(8.80 MB)
  3. python 非线性多项式拟合_用python进行非线性回归-有什么简单的方法可以更好地拟合这些数据?...
  4. Bootstrap按钮支持的元素
  5. u9系统的使用方法仓库_windows7电脑系统远程桌面命令的使用方法
  6. 12、NIO--Path、、Paths、Files
  7. java string to bit_Java Convert String to Binary
  8. 计算机网络课程设计(一)--- VLAN划分和动静态基础配置及其思考
  9. 电脑网页长截图怎么弄的?电脑上怎么截图?
  10. 创新金融科技:从零到一构建新房交易供应链金融服务 PPT分享
  11. 基于微博热搜生成词云图
  12. githup用户名密码怎么看_水星无线路由器的密码忘了如何解决【解决方法】
  13. CSS3笔记(菜鸟教程)
  14. shell脚本--杀死进程
  15. 关于黑马视频String 与int之间相互转化
  16. apex哪个服务器稳定,apex哪个服务器
  17. opencv 旋转和平移的矩阵
  18. ZZULIOJ:1053: 正弦函数
  19. 由区块链引发的密码技术讨论(番外篇)共识
  20. CII-关键信息基础设施风险评估必要性

热门文章

  1. [转]Spring中的ContextLoaderListener使用
  2. IOS 预览pdf,word文档的集中方式
  3. 统一横轴墨卡托投影(UTM)
  4. 在C#中ParameterizedThreadStart和ThreadStart区别
  5. 【Java从0到架构师】Redis 基础 - 数据类型
  6. 前女友发来加密的 “520快乐.pdf“,我用python破解开之后,却发现。。。
  7. 我是如何入门、成长并进阶为数据分析师的?
  8. 量化交易策略matlab交易方案,【策略分享】Matlab量化交易策略源码分享
  9. 群签名和环签名的区别_苹果企业签名和苹果超级签名的区别
  10. vue3 src/main.js文件配置