java模拟web登录(java web怎么实现登录)

本篇文章给大家谈谈java模拟web登录,以及java web怎么实现登录对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、高分求教:如何实现java web 按钮点击弹出登陆界面,并登陆2、java web实现简单的用户登录需要哪些技术3、java web网页登录功能原理(最好有代码❳4、java web应用如何实现单点登录5、关于javaWeb单点登录6、如何用java模拟网页登入提交

高分求教:如何实现java web 按钮点击弹出登陆界面,并登陆

简单的js就可以啊。

在页面上写一个隐藏的div,里面放上登录用的表单,这个div是绝对定位在浏览器中间的,看起来比较好看。你还可以加个灰色透明的遮罩,这样用户就不能点击除登录界面外的东西了,这个主要在美工。

关于表单的提交,我想你应该是想在哪个页面登录的就,登录之后就还在哪个页面吧。

你可以加一个from的参数,表示当前页面的地址,登录成功后再跳转到这个页面。或者你用ajax提交表单,登录成功后把当前的页面reload一下。

java web实现简单的用户登录需要哪些技术

简单的话,就是jsp页面有个用户信息表单,点击提交就跑到后台servlet

然后后台就校验用户身份信息,信息可以从数据库拿,用jdbc连接数据库最简单了

完了之后就用response响应请求,或者是发request请求新的登录成功页面jsp

java模拟web登录(java web怎么实现登录)

java web网页登录功能原理(最好有代码❳

想要实现一个简单的登录功能的话,可以使用Servlet+jsp来实现,jsp编写登录界面和登录后的要出现信息界面和登录失败的信息界面,Servlet类用来对表单提交的用户名和密码进行判断和处理。

具体代码如下:

Servlet类:

public class DemoServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String loginname = request.getParameter(“loginname”);

String password = request.getParameter(“password”);

if(loginname.equals(“a”) password.equals(“a”)){

request.setAttribute(“msg”, “登录成功”);

request.getRequestDispatcher(“/loginsuccess.jsp”).forward(request, response);

}else{

request.setAttribute(“msg”, “登录失败”);

request.getRequestDispatcher(“/loginsuccess.jsp”).forward(request, response);

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

jsp页面:

%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%

!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

html

head

titleDemo/title

meta http-equiv=”pragma” content=”no-cache”

meta http-equiv=”cache-control” content=”no-cache”

meta http-equiv=”expires” content=”0″

meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″

meta http-equiv=”description” content=”This is my page”

/head

body

form action=”demoServlet” method=”post”

input type=”text” name=”loginname”/br/

input type=”password” name=”password”/br/

input type=”submit” value=”登录”/

/form

/body

/html

登录信息页面:

%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%

%@ taglib prefix=”c” uri=”标签库地址”%

!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

html

head

titleMy JSP ‘loginsuccess.jsp’ starting page/title

meta http-equiv=”pragma” content=”no-cache”

meta http-equiv=”cache-control” content=”no-cache”

meta http-equiv=”expires” content=”0″

meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″

meta http-equiv=”description” content=”This is my page”

/head

body

${msg }

/body

/html

需要介绍一下:登录信息的这个页面中的${msg }是使用jstl标签,需要在jsp页面中导入jstl标签库,使用这个标签库可以节省很多代码量。

java web应用如何实现单点登录

实现方式一:父域 Cookie

实现方式二:认证中心

实现方式三:LocalStorage 跨域

补充:域名分级

在 B/S 系统中,登录功能通常都是基于 Cookie 来实现的。当用户登录成功后,一般会将登录状态记录到 Session 中,或者是给用户签发一个 Token,无论哪一种方式,都需要在客户端保存一些信息(Session ID 或 Token ),并要求客户端在之后的每次请求中携带它们。在这样的场景下,使用 Cookie 无疑是最方便的,因此我们一般都会将 Session 的 ID 或 Token 保存到 Cookie 中,当服务端收到请求后,通过验证 Cookie 中的信息来判断用户是否登录 。

单点登录(Single Sign On, SSO)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。举例来说,百度贴吧和百度地图是百度公司旗下的两个不同的应用系统,如果用户在百度贴吧登录过之后,当他访问百度地图时无需再次登录,那么就说明百度贴吧和百度地图之间实现了单点登录。

单点登录的本质就是在多个应用系统中共享登录状态。如果用户的登录状态是记录在 Session 中的,要实现共享登录状态,就要先共享 Session,比如可以将 Session 序列化到 Redis 中,让多个应用系统共享同一个 Redis,直接读取 Redis 来获取 Session。

当然仅此是不够的,因为不同的应用系统有着不同的域名,尽管 Session 共享了,但是由于 Session ID 是往往保存在浏览器 Cookie 中的,因此存在作用域的限制,无法跨域名传递,也就是说当用户在 app1.com 中登录后,Session ID 仅在浏览器访问 app1.com 时才会自动在请求头中携带,而当浏览器访问 app2.com 时,Session ID 是不会被带过去的。实现单点登录的关键在于,如何让 Session ID(或 Token)在多个域中共享。

实现方式一:父域 Cookie

在将具体实现之前,我们先来聊一聊 Cookie 的作用域。

Cookie 的作用域由 domain 属性和 path 属性共同决定。domain 属性的有效值为当前域或其父域的域名/IP地址,在 Tomcat 中,domain 属性默认为当前域的域名/IP地址。path 属性的有效值是以“/”开头的路径,在 Tomcat 中,path 属性默认为当前 Web 应用的上下文路径。

如果将 Cookie 的 domain 属性设置为当前域的父域,那么就认为它是父域 Cookie。Cookie 有一个特点,即父域中的 Cookie 被子域所共享,换言之,子域会自动继承父域中的Cookie。

利用 Cookie 的这个特点,不难想到,将 Session ID(或 Token)保存到父域中不就行了。没错,我们只需要将 Cookie 的 domain 属性设置为父域的域名(主域名),同时将 Cookie 的 path 属性设置为根路径,这样所有的子域应用就都可以访问到这个 Cookie 了。不过这要求应用系统的域名需建立在一个共同的主域名之下,如 tieba.baidu.com 和 map.baidu.com,它们都建立在 baidu.com 这个主域名之下,那么它们就可以通过这种方式来实现单点登录。

总结:此种实现方式比较简单,但不支持跨主域名。

实现方式二:认证中心

我们可以部署一个认证中心,认证中心就是一个专门负责处理登录请求的独立的 Web 服务。

用户统一在认证中心进行登录,登录成功后,认证中心记录用户的登录状态,并将 Token 写入 Cookie。(注意这个 Cookie 是认证中心的,应用系统是访问不到的。)

应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,那么就将页面跳转至认证中心。由于这个操作会将认证中心的 Cookie 自动带过去,因此,认证中心能够根据 Cookie 知道用户是否已经登录过了。如果认证中心发现用户尚未登录,则返回登录页面,等待用户登录,如果发现用户已经登录过了,就不会让用户再次登录了,而是会跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统。

应用系统拿到 Token 之后,还需要向认证中心确认下 Token 的合法性,防止用户伪造。确认无误后,应用系统记录用户的登录状态,并将 Token 写入 Cookie,然后给本次访问放行。(注意这个 Cookie 是当前应用系统的,其他应用系统是访问不到的。)当用户再次访问当前应用系统时,就会自动带上这个 Token,应用系统验证 Token 发现用户已登录,于是就不会有认证中心什么事了。

这里顺便介绍两款认证中心的开源实现:

Apereo CAS 是一个企业级单点登录系统,其中 CAS 的意思是”Central Authentication Service“。它最初是耶鲁大学实验室的项目,后来转让给了 JASIG 组织,项目更名为 JASIG CAS,后来该组织并入了Apereo 基金会,项目也随之更名为 Apereo CAS。

XXL-SSO 是一个简易的单点登录系统,由大众点评工程师许雪里个人开发,代码比较简单,没有做安全控制,因而不推荐直接应用在项目中,这里列出来仅供参考。

总结:此种实现方式相对复杂,支持跨域,扩展性好,是单点登录的标准做法。

实现方式三:LocalStorage 跨域

前面,我们说实现单点登录的关键在于,如何让 Session ID(或 Token)在多个域中共享。

父域 Cookie 确实是一种不错的解决方案,但是不支持跨域。那么有没有什么奇淫技巧能够让 Cookie 跨域传递呢?

很遗憾,浏览器对 Cookie 的跨域限制越来越严格。Chrome 浏览器还给 Cookie 新增了一个 SameSite 属性,此举几乎禁止了一切跨域请求的 Cookie 传递(超链接除外),并且只有当使用 HTTPs 协议时,才有可能被允许在 AJAX 跨域请求中接受服务器传来的 Cookie。

不过,在前后端分离的情况下,完全可以不使用 Cookie,我们可以选择将 Session ID (或 Token )保存到浏览器的 LocalStorage 中,让前端在每次向后端发送请求时,主动将 LocalStorage 的数据传递给服务端。这些都是由前端来控制的,后端需要做的仅仅是在用户登录成功后,将 Session ID (或 Token )放在响应体中传递给前端。

在这样的场景下,单点登录完全可以在前端实现。前端拿到 Session ID (或 Token )后,除了将它写入自己的 LocalStorage 中之外,还可以通过特殊手段将它写入多个其他域下的 LocalStorage 中。

————————————————

版权声明:本文为CSDN博主「风水道人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

前端通过 iframe+postMessage() 方式,将同一份 Token 写入到了多个域下的 LocalStorage 中,前端每次在向后端发送请求之前,都会主动从 LocalStorage 中读取 Token 并在请求中携带,这样就实现了同一份 Token 被多个域所共享。

总结:此种实现方式完全由前端控制,几乎不需要后端参与,同样支持跨域。

补充:域名分级

从专业的角度来说(根据《计算机网络》中的定义),.com、.cn 为一级域名(也称顶级域名),.com.cn、baidu.com 为二级域名,sina.com.cn、tieba.baidu.com 为三级域名,以此类推,N 级域名就是 N-1 级域名的直接子域名。

从使用者的角度来说,一般把可支持独立备案的主域名称作一级域名,如 baidu.com、sina.com.cn 皆可称作一级域名,在主域名下建立的直接子域名称作二级域名,如 tieba.baidu.com 为二级域名。

关于javaWeb单点登录

描述:在A系统登录后,点击A系统的某个模块,登录到B系统。

解决思路:在B系统的后台代码获取B系统的用户名和密码,当点击A系统的某个模块时将用户名和密码通过url登录到B系统。
描述:点击A系统的退出按钮,同时退出B系统;

解决思路: 
在A系统的带有退出按钮的jsp页面,找到退出方法,将退出成功后执行的方法改为退出B系统。
描述:找到B系统的登录界面,通过js,执行页面加载完毕后执行

解决方案:Window.onload=function 在执行方法中执行A系统的登录接口,即可完成单点退出。

总结:A和B是两个工程,那就让A和B一个做客户端,一个做服务端,服务端可以把服务发布出来,客户端进行调用,就可以了啊,分布式开发。

如何用java模拟网页登入提交

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

我习惯使用Java,本能地开始寻找Java的解决方法,在Google中输入“Java自动登录”、“Java网页模拟登录”、“Java Post 登录”,结果倒是不少,内容也差不多,我尝试很多次终究也没有达到我预期的目标。后来,我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行。但这些代码确实管用。

我们先分析一下代码,

%@ page import=”java.util.*” %

%@ page import=”java.io.*” %

%@ page import=”java.net.*” %

String surl = “”;

URL url = new URL(surl);

URLConnection conn = url.openConnection();

conn.setDoOutput(true);

OutputStreamWriter out=new OutputStreamWriter(conn.getOutputStream());

String str = “username=yournamepassword=123456”;

out.write(str);

out.flush();

out.close();

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

String sling = “”;

String scontent = “”;

BufferedReader in = new BufferedReader(new InputStreamReader(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(“script type=”text/javascript”\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(“/script\r\n”);

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

你可能注意到参数url,他的值是经过加密的,内容是用户名和密码。当然,你也可以加上有效期,即在有效期内这个链接才是有效的,才可以实现自动登录。

java模拟web登录的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java web怎么实现登录、java模拟web登录的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月4日 16:18:51
下一篇 2024年4月4日 16:28:08

相关推荐

  • java模拟文件上传请求,JAVA文件上传进度条

    java上传文件怎么实现的 Web 端上传文件。在 Web 页面中添加上传输入项: 设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。 即使再多文件也是通过的单个文件逐次上传的(zip等压缩包实际上是一个文件)。 或者用现有的ftp等。1)开发一个web插件。用于上传文件。2)开发一个FT…

    2024年5月19日
    3800
  • java调用wmi,java调用c++动态库

    java如何获取客户端mac地址? 1、\x0d\x0ajava就能过这样的命令来获取。以下是示例。 2、以下代码实现浏览器中获取mac地址放入一个输入框或隐藏域,随登录信息一起提交到服务器。因为安全级别的关系可能会出现警告,可选择允许执行。长期使用的话建议用户将改站点加入信任站点或把安全级别调低。 java如何获取本机主板序列号?1、利用Runtime c…

    2024年5月19日
    3600
  • 关于opencv3.2.0java的信息

    javacv和opencv的依赖之间相互冲突吗 额 如果你用C++的话,推荐用微软的VS,一般在这上面用Opencv,环境也好配。如果你使用Java的话,有javacv。 java的opencv顶多调用摄像头用,图像处理都用c++的opencv。对于opencv的开发,不管从开发效率还是执行效率,绝对是c++。java版的opencv想都不要想。 可以调用O…

    2024年5月19日
    5100
  • java程序远程调试工具,java 远程调试

    学生程序都在用的10款提高效率的工具 ·Alfred查询和搜索工具 优点:被称作效率神器。Alfred是 Mac系统上一款专注于效率提升的著名应用,它能帮你快速打开网页、快速进行自定义搜索查看剪贴板历史、快速查询单词等等。 Tu leap是一款面向Dev Ops和敏捷开发团队的开源软 件开发与项目管理工具, 具有bug跟踪、文档管理、产品管理和应用程序生命周…

    2024年5月19日
    3600
  • java判断excel是不是合并单元,java判断cell是否为空

    怎样用javascript判断Excel的单元格是否为合并单元格 1、sheet页是否存在合并单元格。根据查询资料显示首先是判断当前sheet页是否存在合并单元格,使用getNumMergedRegions获取当前sheet页中的合并单元格总数。 2、If Set rgPrev = rgScan Next rgScan Range(rgFirst, rgPr…

    2024年5月19日
    4000
  • java微信支付接口沙箱,java微信支付接口流程图

    用Java怎么实现微信支付? 具体方法步骤:准备阶段:已认证微信号,且通过微信支付认证,这个可以看微信文档,很详细,这里就不再重复。配置授权目录,官方推荐使用https类型的url,不知道http能不能行,个人也推荐使用https的保证不会错。 打开“微信”程序,切换至“我”选项卡,点击“表情商店”项进入。 2接着点击任意一款表情右侧的支付项进入支付界面。 …

    2024年5月19日
    4300
  • javaendswith大小写,java大写还是小写

    java中区分大小写吗??? java里是区分大小的 如定义变量名 int A=1;和 int a=1; A和a 就是不同的变量。 不能以数字开头。不能包含空格。不能使用关键字和保留字,但是可以包含关键字和保留字。java严格区分大小写,但是长度无限制。 Java是一种区分字母的大小写(case-sensitive)的语言,下面举例说明Java语言中包、类、…

    2024年5月19日
    3800
  • java里的field是什么意思,javafields是什么意思

    java中JTextField什么意思? JTextField类的对象是一个文本组件,允许编辑单行文本,继承了JTextComponent类,JTextField与java.awt.TextField具有源代码兼容性,把字段文本用作针对ActionEvent的命令字符串。 文本输入框、密码输入框 文本输入框包括两种,单行文本输入框 (JTextField) …

    2024年5月19日
    3200
  • java-xss,javaxss漏洞

    alert报错stackoverflowerror原因 可能系统错误。是系统bug(安卓大版本升级期间可能会有),软件服务器出现故障,提示为网络异常(例如爱阅读),卸载了重新下载安装,首先用户打开苹果手机自带浏览器,搜索jm天堂官网。 原因如下:主机开机按钮的微动开关内部有接触不良现象,多按几次才会接通电路,主板上启动电路单元有些故障,多按几次按键,相当多次…

    2024年5月19日
    3100
  • java调用c的类,java能调用c的接口吗

    java如何调用c++里面的方法 对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。接上例子。 具体调用步骤如下:首先创建Java文件 HelloJni.java ,并创建native方法。编译Java文件并生成java头…

    2024年5月19日
    3300

发表回复

登录后才能评论



关注微信