-
2021-02-28 08:31:22
登陆后,handle不变,定位登陆成功后跳转的页面元素定位不到,提示:org.openqa.selenium.NoSuchElementException: Unable to locate element
//点击登陆
driver.findElement(By.xpath("//*[@id='loginSubmit']")).click();
String currentWindow = driver.getWindowHandle();//获取当前窗口句柄
//等待页面加载完成
WebDriverWait wait = new WebDriverWait(driver, 70);
wait.until(new ExpectedCondition() {
public Boolean apply(WebDriver d){
boolean loadcomplete = d.switchTo().frame("right_frame").findElement(By.xpath("//center/div[@class='welco']/img")).isDisplayed();
return loadcomplete;
}
});
//定位跳转后页面上一个关闭按钮 元素
driver.findElement(By.xpath("//*[@id='closeX']/div/a")).click();
System.out.println("关闭宣传窗口");
更多相关内容 -
Java GUI 页面跳转示例程序
2019-04-26 22:44:45Java gui 页面 跳转页面的示例代码,也包含了Java gui 界面 的基本写法 -
JavaWeb登陆成功后跳转到上一个页面
2021-03-10 04:27:18JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面...JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面都有登录按钮,登录成功后需要刷新对应的登录信息。
图文并茂
1.场景1
2.场景2
代码实现
场景1的代码这次重点说明以下,场景2的代码可以参照本系列其他文章再谈ajax局部刷新
全局拦截器
public class LoginInterceptor implements Interceptor {
private static Logger logger = Logger.getLogger(LoginInterceptor.class);
@Override
public void intercept(Invocation inv) {
BaseController controller = (BaseController) inv.getController();
String lastRequestURL = controller.getRequest().getRequestURL().toString();
logger.info("请求地址:" + lastRequestURL);
Members loginMem = controller.getSessionAttr("username");
// 用户如果没有登录,那么就跳转到登录页面
if (loginMem == null || loginMem.equals("")) {
try {
controller.redirect("/mem/initLogin?forwardURL=" + URLEncoder.encode(lastRequestURL, "UTF-8"));
} catch (UnsupportedEncodingException e) {
logger.error(e.getMessage());
}
} else {
inv.invoke();
}
}
}
注意:
1. 全局拦截器可参照jfinal官方文档添加到config类中。
2. 如果用户没有登录,则跳转到登录页,并且将当前的url路径作为参数传递给form表单,至于form表单怎么获取,请看下个小节。
登录页
οnsubmit="return validateCallback(this, ajaxDone)">
注意:
1. action中增加callbackType=forward;
2. onsubmit中callback函数ajaxDone;
3. validateCallback函数中将上个小节中传递的参数进行添加;
4. 其余的可参照再谈ajax局部刷新
function validateCallback(form, callback, confirmMsg) {
var $form = $(form);
if (!$form.valid()) {
return false;
}
var _submitFn = function() {
$.ajax({
type : form.method || 'POST',
url : addForwardForUrl($form.attr("action")),
data : $form.serializeArray(),
dataType : "json",
cache : false,
success : callback || YUNM.ajaxDone,
error : YUNM.ajaxError
});
}
if (confirmMsg) {
$.showConfirm(confirmMsg, {
okCall : _submitFn
});
} else {
_submitFn();
}
return false;
}
function addForwardForUrl(url) {
var locationURL = location.href;
// URL中附带了跳转路径
var forwardIndex = locationURL.indexOf("forwardURL");
if (forwardIndex != -1) {
var forwardURL = locationURL.substring(forwardIndex);
// 说明已经有了跳转路径
if (url.indexOf("?") != -1) {
url += "&" + forwardURL;
} else {
url += "?" + forwardURL;
}
}
return url;
}
注意:
1. 如此之前拦截器中提供的url就可以作为参数传递给form的提交请求中。
login函数
@Clear({LoginInterceptor.class})
public void login() throws UnsupportedEncodingException {
logger.info("进行会员登录操作...");
// 获取用户名
String name = getPara("username");
// 获取密码
String password = getPara("password");
Members mem = Members.me.getMemByUsername(name);
if (mem != null) {// 用户不存在
// 密码不匹配
if (!mem.getStr("password").equals(CipherUtils.generatePassword(password))) {
ajaxDoneError("密码不正确!");
} else {
// 保存session
setSessionAttr("username", mem);
String forwardURL = getPara("forwardURL");
if (forwardURL == null || forwardURL.equals("")) {
forwardURL = "/";
} else {
forwardURL = URLDecoder.decode(forwardURL, "UTF-8");
}
ajaxDoneSuccess("登录成功!", forwardURL);
}
} else {
ajaxDoneError("用户不存在!");
}
}
1. login函数中,将forwardurl取出来,作为登录页中的callback函数的参数值;
2. 具体ajaxDoneSuccess方法可以参照以下内容
public void ajaxDoneSuccess(String message, String forwardURL) {
ajaxDone(200, message, forwardURL);
}
protected void ajaxDone(int statusCode, String message, String forwardURL) {
// 回调类型
if (getAttr("callbackType") == null) {
String callbackType = getPara("callbackType");
if (callbackType != null && !callbackType.equals("")) {
setAttr("callbackType", callbackType);
if (callbackType.equals("forward") || callbackType.equals("closeCurrentThenForward")) {
String contextPath = getRequest().getContextPath();
if (forwardURL.indexOf(contextPath) == -1) {
forwardURL = contextPath + forwardURL;
}
setAttr("forwardURL", forwardURL);
}
}
}
renderJson();
}
如果有callbacktype参数,则将forwardurl作为json数据传递到前端的ajaxdone方法中。
ajaxDone方法
function ajaxDone(json) {
YUNM.ajaxDone(json);
if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {
if ("forward" == json.callbackType) {
if (json.forwardURL) {
location.href = json.forwardURL;
}
}
跳转到上一个页面。
笑对现实的无奈,不能后退的时候,不再傍徨的时候,永远向前 路一直都在──陈奕迅《路一直都在》
本文出自:【沉默王二的博客】
当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面 ↩
还有一种情况,多个页面都有登录按钮,登录成功后需要返回到上一个界面。 ↩
-
java Servlet登录成功并跳转到其他页面
2021-01-21 20:49:27login_success.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here<...登录成功啦!...获取网站登录成功次数</a> </body> &login_success.html:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h2>登录成功啦!</h2> <a href="">获取网站登录成功次数</a> </body> </html>
LoginServlet.java:
package com.tx.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { /** * request:包含请求的信息 * * response:响应数据给浏览器,就靠这个对象 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1. 获取数据 String userName = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("userName="+userName+"password="+password); // 2. 校验数据 PrintWriter pw = response.getWriter(); if("admin".equals(userName) && "123".equals(password)){ // System.out.println("登录成功"); // pw.write("login success..."); // 成功就跳转到login_success.html // 设置状态码 302代表重新定位 response.setStatus(302); // 定位跳转的位置是哪一个页面 response.setHeader("Location", "login_success.html"); }else { // System.out.println("登陆失败"); pw.write("login failed..."); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
-
java登录跳转页面
2020-12-07 18:54:52java登录跳转页面 java文件的编辑方式,任意文本加.java后缀即可,一个java文件只能有一个主类,用public调用,如果要打包成程序包,每个文件前先声明包命,如com.QQH,调试单个文件可以直接java *.java,也可先 ...java登录跳转页面
java文件的编辑方式,任意文本加.java后缀即可,一个java文件只能有一个主类,用public调用,如果要打包成程序包,每个文件前先声明包命,如com.QQH,调试单个文件可以直接java *.java,也可先 javac *.java -encoding UTF-8 生成.class文件后,java *,不需要加class后缀即可自动识别
主类名必须大写并与文件名一致,调试单个文件需注释包名#javac Window.java #ls Window.java Window.class #java Window
每个文件的类里一般有两个public方法,一个是主方法如initWindow,一个public static void main(String[] args) {}用来初始化类并调用方法(初始化类并调用主方法,,如class Window:Window w1=new Window(),w1.initWindow)若主方法与类名相同,可省略w1.initWindow()
下图是一个简单的窗口实现//package com.QQH; import javax.swing.JFrame; public class Window extends JFrame{ public void initWindow(){ this.setTitle("test window"); this.setSize(600,400); this.setLocation(0,0); this.setVisible(true); } public static void main(String[] args){ Window w = new Window(); w.initWindow(); } }
用this.set来设置继承JFrame的Window窗口
接下来来实现一个略为复杂的界面,编辑Main.java//package com.QQH; import java.awt.event.ActionEvent; //event import java.awt.event.ActionListener; //listener import javax.swing.JButton; import javax.swing.JFrame; //frame import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; //import tcp.WindowClient; public class Main { public static void main(String[] args) { LoginWindow LW=new LoginWindow(); } } class LoginWindow extends JFrame{ private String username="root"; private String password="root"; JFrame window; JTextField user; JTextField pwd; JButton Login; public LoginWindow(){ window=new JFrame("Login"); window.setLayout(null); window.setSize(600, 600);//设置大小 window.setLocationRelativeTo(null);//设置居中 window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setLayout(null); window.setResizable(false);//设置窗口不可拉伸改变大小 JLabel username_label =new JLabel("user:"); username_label.setBounds(100,100,100,50); window.add(username_label); JLabel password_label =new JLabel("password"); password_label.setBounds(100,200,100,50); window.add(password_label); user=new JTextField(); user.setBounds(150, 100, 300, 50); window.add(user); pwd=new JPasswordField();//隐藏密码 pwd.setBounds(150, 200, 300, 50); window.add(pwd); Login=new JButton("Login in"); Login.setBounds(250, 300, 100, 50); window.add(Login); window.setVisible(true);//设置面板可见 } }
可以看到比起上个文本,这个有两个类,主类是Main初始化了继承JFrame的loginWindow,是com.QQH的主页面,先在loginWindow类里对窗口,文本和按钮进行了声明,并private赋值用户名与密码变量,
LoginWindow调用JFrame新建了一个名为Login的窗口,添加了JLabel,user初始化一个JTextField类,密码需要初始化JPasswordField类,步骤都是先初始化一个类,再往window窗口添加,并设置范围,最后一定要加上显示面板可见的setVisible(true)
参考以下博客
https://blog.csdn.net/qs17809259715/article/details/88936619?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160706214819726885871262%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160706214819726885871262&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-88936619.first_rank_v2_pc_rank_v29&utm_term=java%E4%BA%8B%E4%BB%B6%E7%9B%91%E5%90%AC
可以把下面的直接运行试试
编辑ActionListenerSelf.javaimport java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ActionListenerSelf implements ActionListener{ public static void main(String[] args) { ActionListenerSelf als = new ActionListenerSelf(); als.init(); } public void init(){ JFrame f = new JFrame(); JPanel p = new JPanel(); JButton btn = new JButton("click me"); btn.addActionListener(this); p.add(btn); f.add(p); f.setSize(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("event 1"); } }
编辑ActionListenerInner.java
//package com.QQH import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ActionListenerInner { public static void main(String[] args) { ActionListenerInner ali = new ActionListenerInner(); ali.init(); } public void init(){ JFrame f = new JFrame(); JPanel p = new JPanel(); JButton btn = new JButton("click me"); InterfaceDemoB b = new InterfaceDemoB(); btn.addActionListener(b); p.add(btn); f.add(p); f.setSize(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } public class InterfaceDemoB implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("event 2"); } } }
编辑AnonymousInner.java
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class AnonymousInner { public static void main(String[] args) { AnonymousInner ani = new AnonymousInner(); ani.init(); } public void init(){ JFrame f = new JFrame(); JPanel p = new JPanel(); JButton btn = new JButton("click me"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("AnonymousInner"); } }); p.add(btn); f.add(p); f.setSize(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
接下来实现一个引用了外部类的事件监听方式,可以把引用类打包成jar文件放到java的决定包的jre的\lib\ext里方便引用,也可放一个文件夹下
编辑ExternelclassListener.javaimport java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ExternelclassListener { public static void main(String[] args) { JFrame f = new JFrame(); //创建窗体 JPanel p = new JPanel(); //创建面板 JButton btn = new JButton("点我"); //创建一个按钮 ExternelInterface a = new ExternelInterface(); //初始化外部类当接口事件 btn.addActionListener(a);//给bnt添加监听并把新建的事件当触发事件 p.add(btn); f.add(p); f.setSize(400,300); //设置窗体的大小 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗体的后台 f.setVisible(true); //设置窗体可见 } }
编辑ExternelInterface.java
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class ExternelInterface implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("execternelListener"); } }
一般直接直接编译ExternelclassListener.java文件就能直接调用,接口文件与类名正确的话,会把ExternelInterface.java文件一起编译成class文件
接着实现一个带跳转的页面如调用LoginWindow.java,在接口类加入LoginWindow LW=new LoginWindow();
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class ExternelInterface implements ActionListener { public void actionPerformed(ActionEvent e) { LoginWindow LW=new LoginWindow(); } }
成功跳转
-
Java WEB 第8章 登录功能实现-登录成功跳转主页面
2021-02-12 21:32:14第8章 登录功能实现-登录成功跳转主页面8.1涉及的技术知识点1) Session会话 CookieJSTL标签8.2Cookie1) HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出... -
用java怎样编写登录页面,成功登录跳转到下一个页面,求代码
2021-02-12 15:28:32} } // * 上述代码,你可以参考下我的方法,我也很久没做JAVA开发了,我现在从事前端UI开发,本来我想在写一个用struts 2登录的程序的,可我现在忘得差不多了,上面我所用到的属性建议你自己好好的研究一下,往后你... -
如何实现登录成功后跳转的页面?
2020-09-05 16:01:58我登录成功后想要跳转到loding.html页面中,应该如何实现? ``` $(document).ready(function () { $(".button").on("click",function(){ if(login()){ $.ajax({ type: "post", url: ... -
JAVA实现数据库前端与后台的连接,显示登录成功并且跳转至后台数据库-附件资源
2021-03-05 15:18:10JAVA实现数据库前端与后台的连接,显示登录成功并且跳转至后台数据库-附件资源 -
4.给系统添加注册成功后跳转到登录页面的功能
2021-07-20 14:31:55给系统添加注册成功后跳转到登录页面的功能 需求: ①跳转的地址要求可配置 ②需要在五秒后进行跳转 实现: 先在配置文件中配置测试网址 loginUrl=http://www.baidu.com/ 在配置类中获取这个配置参数的值,并通过... -
Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转
2018-04-13 15:50:28该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明 -
Java实现注册登录跳转
2021-07-07 16:48:47创建数据库,创建一个登录表login存储用户的用户名和密码,使用sql insert语句将注册的信息插入到数据库中,使用sql select... 依赖 <dependencies> <dependency> <groupId>...mysql-connector-java&l -
springboot 登录成功后自动跳转原页面
2022-02-10 19:47:57比如用户信息页面,在访问前我们就可以拦截请求,判断用户是否已经登录,如果已登录那么放行,如果没有那么跳转到登录页面,并且要将当前页面记录到session,那么当用户成功登录后我们就可以跳转到这个页面。... -
Intent传递数据并跳转页面
2021-01-03 17:56:29Intent传递数据并跳转页面 4.9作业登陆app 要求: 1、实现Intent调整和传递数据的功能。 2、在MainAcitvity界面输入账号和密码信息,传递到DetailActivity界面显示。 步骤: 1、新建DetialActivity.java ... -
登陆成功跳转到指定页面
2019-12-20 13:13:30"登陆失败" ) } } , error : function ( ) { alert ( "12" ) } } ) ; } function regist ( ) { location . href = "../page/regist" } < / script > < / html > ... -
java swing 登陆界面+跳转界面
2017-05-26 22:02:25java swing+RS232通信持续更新 -
Selenium-java 登录后重定向页面(页面跳转后)刷新页面,获取cookie
2021-01-18 00:02:40chromeDriver是ChromeDriver对象的实例 final String beforeUrl = chromeDriver.... // 页面没有跳转就让他等待,等待自己重定向到登录后的页面,然后再获取cookie时就是正确的cookie } // 到这里说明页面进行了跳转 // -
SpringBoot 登陆后跳转到index页面
2021-12-21 14:19:131. 如果不作任何配置,在static或templates文件夹中放入index.html,会自动跳转index.html 原因: (4条消息) Spring Boot 默认跳转到index.html的二种方式_NULL-CSDN博客_springboot 默认index.html 2. 在... -
spring security认证成功后跳转页面显示404
2020-09-19 00:58:39spring security认证成功后跳转页面显示404 查看Controller 的使用的注解 @RestController //注意该地方的注解是@RestController 不是 @Controller public class HelloClontroller { @RequestMapping("/hello") ... -
创建登陆页面实现页面跳转——初学Android
2022-03-28 16:15:23由于是小白,找了好多资料也没学明白怎么实现的页面跳转。今天仔仔细细写写清楚。 1、新建一个Project,选择empty Activity,编辑完activity_main.xml后,增加一个activity_login.xml. 【新增方法】是在layout右键... -
用jsp实现登录,登录成功则跳转到登录成功页面,失败则跳转到失败页面
2021-06-10 08:28:05charset=utf-8" pageEncoding="utf-8"%> Insert title here 欢迎 ("loginUsername") %>,登录成功!!!! login_failure.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf... -
springboot2 security 登陆成功后无法跳转到指定页面,还是默认页面
2018-08-26 22:42:33一开始用的这个 http .formLogin() .defaultSuccessUrl("/login/success") 后来改成了这个就好了 http.formLogin().successForwardUrl("/login/success") 找到的资料 ... -
页面跳转的简单实现(单点登录)
2021-03-14 13:44:05编辑UserController@Controller@RequestMapping("/user")public class UserController {/*** 实现用户模块跳转* url1:http://www.jt.com/user/login.html 页面:login.jsp* url2:http://www.jt.... -
shiro实现登录成功后跳转到之前的页面
2020-05-19 11:01:02前言: 通常情况下,系统登录成功之后会进入指定的页面,比如说系统首页。但是有时候会根据项目的需求进行调整,比如:给用户一个url,如果用户是第一次在浏览器中输入这个url,那么会要求先进行登录,登录成功之后再... -
JAVA登录注册页面实现前端与后台数据连接
2018-11-08 15:56:03JAVA登录注册页面实现前端与后台数据连接 登录成功则跳转至数据列表 登录不成功则弹出“登录失败提示框” -
springboot 2.0.8 跳转html页面
2021-03-13 00:48:02springboot 成功创建了后,继续写一下跳转到html页面的方法, 这里我把 jsp和html 分开两篇文章。然后再写一个两种方式整合的这篇 是跳转到html文件的1创建目录结果和html文件 2配置return 返回模版 3.... -
JAVA CAS 单点登录 登录成功后 跳转指定URL的问题
2018-10-15 10:20:42访问app1 ,重定向到cas认证, 认证成功后重定向到app2 (app2类似于门户系统) 该操作只在登录时执行 目前 CAS 默认是重定向回app1 app1系统使用Spring Security集成 CAS 可通过 SecurityConfig 实现 @Bean ... -
Javaweb---成功登陆后自动跳转jsp页面
2017-12-02 14:50:57通过ajax技术让用户输入的用户名与密码得到验证,验证通过后(即登录成功)自动跳转到主页界面; 首先学习一些能实现自动转页面的方法,择需选择。 使用href超链接标记 客户端跳转 使用javascript 客户端跳转 ... -
session失效后跳转到登陆页面
2021-06-13 09:09:58一、编写Filter拦截器类package ...import java.io.IOException;import java.io.PrintWriter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRespon...