「java实现验证自动登录」java登录界面随机生成验证码
本篇文章给大家谈谈java实现验证自动登录,以及java登录界面随机生成验证码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
怎样用java实现验证码
现在许多系统的注册 登录或者发布信息模块都添加的随机验证码功能 就是为了避免自动注册程序或者自动发布程序的使用
验证码实际上就是随机选择一些字符以图片的形式展现在页面上 如果进行提交操作的同时需要将图片上的字符同时提交 如果提交的字符与服务器session保存的不同 则认为提交信息无效 为了避免自动程序分析解析图片 通常会在图片上随机生成一些干扰线或者将字符进行扭曲 增加自动识别验证码的难度
在这里 我们使用java实现验证码
%@ page contentType= image/jpeg import= java awt * java awt image * java util * javax imageio * %
%!
Color getRandColor(int fc int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc ) fc= ;
if(bc ) bc= ;
int r=fc+random nextInt(bc fc);
int g=fc+random nextInt(bc fc);
int b=fc+random nextInt(bc fc);
return new Color(r g b);
}
%
%
//设置页面不缓存
response setHeader( Pragma No cache );
response setHeader( Cache Control no cache );
response setDateHeader( Expires );
// 在内存中创建图象
int width= height= ;
BufferedImage image = new BufferedImage(width height BufferedImage TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g setColor(getRandColor( ));
g fillRect( width height);
//设定字体
g setFont(new Font( Times New Roman Font PLAIN ));
// 随机产生 条干扰线 使图象中的认证码不易被其它程序探测到
g setColor(getRandColor( ));
for (int i= ;i ;i++)
{
int x = random nextInt(width);
int y = random nextInt(height);
int xl = random nextInt( );
int yl = random nextInt( );
g drawLine(x y x+xl y+yl);
}
// 取随机产生的认证码( 位数字)
String codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ;
String sRand= ;
for (int i= ;i ;i++){
int a=random nextInt(codeList length() );
String rand=codeList substring(a a+ );
sRand+=rand;
// 将认证码显示到图象中
g setColor(new Color( +random nextInt( ) +random nextInt( ) +random nextInt( )));//调用函数出来的颜色相同 可能是因为种子太接近 所以只能直接生成
g drawString(rand *i+ );
}
// 将认证码存入SESSION
session setAttribute( rand sRand);
// 图象生效
g dispose();
// 输出图象到页面
ImageIO write(image JPEG response getOutputStream());
out clear();
out = pageContext pushBody();
lishixinzhi/Article/program/Java/hx/201311/25536
用java程序实现自动登录
之前,也考虑过使用单点登录,几经尝试之后还是放弃了。
我习惯使用Java,本能地开始寻找Java的解决方法,在Google中输入"Java自动登录"、"Java网页模拟登录"、"JavaPost登录",结果倒是不少,内容也差不多,我尝试很多次终究也没有达到我预期的目标。后来,我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行。但这些代码确实管用。 我们先分析一下代码: URLurl=newURL(surl); URLConnectionconn=url.openConnection(); conn.setDoOutput(true); OutputStreamWriterout=newOutputStreamWriter(conn.getOutputStream()); Stringstr="username=yournamepassword=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"); 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,他的值是经过加密的,内容是用户名和密码。当然,你也可以加上有效期,即在有效期内这个链接才是有效的,才可以实现自动登录。
希望能解决您的问题。
java 如何实现同一账户登录验证
今天继续讨论?-0-#这个只需要session和application就好了,用户登录时,这样写:User
user
=
dao.login(userName,
password);//
数据库中判断用户名和密码if
(null
!=
user)
{//
表示用户存在
session.setAttribute("user",
user);//
把用户放进session中
application.setAttribute(userName,
session.getId());/*
把用户所在的sessionId放进application中,首先要明白一点,一个session对应一个浏览器,其次要注意一点,userName必须是唯一的*/}当用户访问到其他url的时候,可以在过滤器或你的拦截器中这样写:User
user
=
(User)
session.getAttribute("user");//
从session中取出用户if
(null
==
user)
{//
未登录或者登录已经过期
response.sendRedirect(request.getContextPath());//
跳转到首页或登录页面}String
sessionId
=
(String)
application.getAttribute(user.getUserName());if
(null
==
sessionId
||
!sessionId.equals(session.getId()))
{/*这说明用户已经在其他电脑或其它浏览器登录了,那么之前登录的session就无效了,自动被后面的登录给踢掉*/
response.sendRedirect(request.getContextPath());//
跳转到首页或登录页面}chain.doFilter(request,
response);//
通过验证,放行用户进入目标url这种方式是我的一个前辈想到的,我们公司的所有项目都采纳了这种方式,确保一个账号只能在一个浏览器中使用
Java如何实现网页程序自动登录
; 我不得不使用好几个系统 都是B/S结构的 每次登录都需要输入用户名和密码 觉得非常麻烦 考虑到其他同事也会有这样的需求 不妨就写个自动登录的程序吧 之前 也考虑过使用单点登录 几经尝试之后还是放弃了 我习惯使用Java 本能地开始寻找Java的解决方法 在Google中输入 Java自动登录 Java网页模拟登录 JavaPost登录 结果倒是不少 内容也差不多 我尝试很多次终究也没有达到我预期的目标 后来 我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行 但这些代码确实管用 我们先分析一下代码 Stringsurl= ; URLurl=newURL(surl) URLConnectionconn=url openConnection() conn setDoOutput(true) OutputStreamWriterout=newOutputStreamWriter(conn getOutputStream()) Stringstr= username=yournamepassword= ; out write(str) out flush() out close() 到这里 如果在C/S结构中 且参数正确 程序能够成功登录到这个oa系统 要看到结果 你可以通过下面的代码将系统服务器返回的结果System out println()出来 Stringsling= ; Stringscontent= ; BufferedReaderin=newBufferedReader(newInputStreamReader(conn getInputStream() UTF )) 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\ )[ ] value=yourname;\r\n ) out println( document getElementsByName(\ password\ )[ ] value= ;\r\n ) out println( document forms[ ] submit() \r\n ) out println( \r\n ) 原理很简单 通过login jsp将登录页面的全部源代码写在当前页面 然后使用javascript脚本将用户名和密码的值填充上 最后提交表单 这样中 终于实现了自动登录的目标 现在我通过一个特殊的网址 就可以自动访问这个oa了 你可能注意到参数url 他的值是经过加密的 内容是用户名和密码 当然 你也可以加上有效期 即在有效期内这个链接才是有效的 才可以实现自动登录 lishixinzhi/Article/program/Java/hx/201311/26114
Java实现网页自动登录
我不得不使用好几个系统 都是B/S结构的 每次登录都需要输入用户名和密码 觉得非常麻烦 考虑到其他同事也会有这样的需求 不妨就写个自动登录的程序吧 之前 也考虑过使用单点登录 几经尝试之后还是放弃了
我习惯使用Java 本能地开始寻找Java的解决方法 在Google中输入 Java自动登录 Java网页模拟登录 Java Post 登录 结果倒是不少 内容也差不多 我尝试很多次终究也没有达到我预期的目标 后来 我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行 但这些代码确实管用
我们先分析一下代码
String surl = ;
URL url = newURL(surl)
URLConnection conn= url openConnection()
conn setDoOutput(true)
OutputStreamWriterout=new OutputStreamWriter(conn getOutputStream())
String str = username=yournamepassword= ;
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 ))
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打印出来 然后接着打印以下代码
out println( \r\n )
out println( document getElementsByName(\ username\ )[ ] value=yourname;\r\n )
out println( document getElementsByName(\ password\ )[ ] value= ;\r\n )
out println( document forms[ ] submit() \r\n )
out println( \r\n )
原理很简单 通过login jsp将登录页面的全部源代码写在当前页面 然后使用javascript脚本将用户名和密码的值填充上 最后提交表单 这样中 终于实现了自动登录的目标 现在我通过一个特殊的网址 就可以自动访问这个oa了
lishixinzhi/Article/program/Java/hx/201311/25882
关于java实现验证自动登录和java登录界面随机生成验证码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。