关于在jsp中,<a>标签在confirm为false之后,还能继续跳转的问题.

本文介绍如何修正HTML中确认对话框在选择“否”后仍会触发跳转的问题,并提供一种实用的解决方案。

首先贴上代码:

<a href="Delete_Servlet?de_name=<%=book.getName()%>" onclick="confirm('确定删除么?')">

这个是修改之前的代码,看起来好像没问题,前面是超链接,后面为判断.但是在测试的时候,发现,在跳出的对话框中选[否],还是会进行跳转,并进行相应的操作.我百思不得其解.


在网上搜过好多之后,才慢慢懂得了一点.先说一下出现这个问题的原因:

两者的执行顺序是先判断onClick,再执行href的跳转,但是在两者都定义了的时候,在href中定义的函数如果有返回值的话,当前页面的内容将被返回值代替.所以就会出现上述的问题.

解决方法:

在此处,我的代码中href的功能除了要实现跳转到新的servlet中,还要把jsp中的数据传到响应的servlet中,通过网上的方法,我自己变通了一下:

具体说来就是将点击之后是否跳转的判断,放到onclick的方法中,将要带走的值定义为<a>标签的name属性,就可以通过参数的形式拿走了.

首先先引入存放数据的Book实体类

Book book = new Book();
这是修改之后的<a>标签

<a name = "<%=book.getName()%>"  onclick="fun_cofm(this)">删除</a>

我加了一个name属性,用来存放从Book中拿到的数据
下面是方法:

<script>
		/* 声明onclick所执行的方法, */
		function fun_cofm(obj){
			var a = confirm("确定要删除吗?");
			if(a == false){
				return;
			}else{
				/* 当[确定]时,才调用href,就杜绝了之前的问题. */
				/* 调用<a>标签中的name属性,就可以拿到Book实体类中的值,从而传递到servlet业务层 */
			 	obj.href="Delete_Servlet?de_name="+obj.name;
			 	
			}
		}
	</script>



最后测试通过!


有一个小问题就是:

当点击[删除]的时候,鼠标不会再变成[手],所以需要再简单设置一下:

<style type="text/css">
		#aa{
			cursor:pointer;
		}
	</style>
<a id = "aa" name = "<%=book.getName() %>"  onclick="fun_cofm(this)" >删除</a>



以上!

<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%> <%@ page import=“javaBean.Student”%> <% String path = request.getContextPath(); String basePath = request.getScheme()+“😕/”+request.getServerName()+“:”+request.getServerPort()+path+“/”; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'StudentList.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"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h2 align="center">学生管理系统</h2> <table align="center" border="1px"> <tr> <td>学号</td> <td>姓名</td> <td>年龄</td> <td align="center">操作</td> </tr> <% List slist= (ArrayList)request.getAttribute("sList"); //获取servlet传过来的学生数据 for(int i=0;i<slist.size();i++){ Student s = (Student)slist.get(i); %> <tr> <td><%=s.getSid()%></td> <td><%=s.getSname()%></td> <td><%=s.getSage()%></td> <td><a href="Student.jsp">添加<a href="Update.jsp">修改<a href="Delete.jsp">删除</td> </tr> <% } %> </table> </body> </html>现在得在这个view层写一个点击删除弹出一个弹窗,这个该怎么写,给点思路-这个没怎么学,我记得是一个confirm的关键字
11-14
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <% HttpSession session1 = request.getSession(); String username = (String) session1.getAttribute("username");//获取session中的账号 String realname = (String) session1.getAttribute("realname");//获取session中的姓名 //判断用户是否已经登录,如未登录则强制跳转(重定向)到登录界面 //if(username==null) response.sendRedirect("login.jsp"); %> <html> <head> <title>系统首页</title> <link rel="stylesheet" href="css/index.css"> </head> <body> <header> <div class="left"> <%-- 无LOGO--%> <span class="title">智能电器综合管理</span> </div> <div class="right"> <%-- =realname 相当于 out.println(username); --%> <span class="userinfo"><%=realname%>(<% out.println(username); %>)</span> <span class="logout" onclick="logout()">注销</span> </div> </header> <%-- 中间有效区域 S--%> <div class="main"> <!-- 菜单区域 S --> <div class="left"> <div class="top">系统菜单</div> <div class="first-menu"> <div>用户管理</div> <ul> <li url="user/list.jsp">家庭成员管理</li> </ul> </div> <div class="first-menu"> <div>系统管理2</div> <ul> <li url="living/list.jsp">客厅</li> </ul> </div> </div> <!-- 菜单区域 E --> <!-- 内容区域 S --> <div class="right"> <!-- 打开一个新的页面 iframe:专门用于嵌套显示网页 显示百度:https://www.baidu.com --> <iframe id="iframe" src="welcome.jsp"></iframe> </div> <!-- 内容区域 E --> </div> <%-- 中间有效区域 E--%> <footer></footer> <%-- 引用jquery代码库 --%> <script src="js/jquery-3.5.1.min.js"></script> <script> //注销功能 function logout() { //跳转到登录界面 //window.location.href="login.jsp"; //确认提示:点击确定才真正跳转,否则不做任何处理 if(confirm("确定要退出系统吗?")) window.location.href="login.jsp"; } let nowClickUl = null; //点击一级菜单,显示对应的二级菜单,再次点击则隐藏对应的二级菜单 $('.main .left .first-menu > div').on('click', function () { //显示对应的二级菜单 let ul = $(this).parent().find('> ul'); if(nowClickUl && $(this).html() !== nowClickUl.parent().find('> div').html()) { nowClickUl.hide(); } nowClickUl = ul; //判断ui当前的显示状态:隐藏-》显示 显示-》隐藏 //:hidden隐藏 true=隐藏 false=显示 //if(ul.is(':hidden')) ul.show();//当前为隐藏状态,显示 //else ul.hide(); //当前为显示状态,隐藏 ul.toggle();//根据当前的显示状态,做相反操作 }); //点击二级菜单,在内容区域显示对应的网页 $('.main .left .first-menu > ul li').on('click', function () { let url = $(this).attr('url');//获取元素中的文本内容 $('#iframe').attr('src', url); }); </script> </body> </html>
07-06
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <title>电影管理</title> <script> // 删除电影记录的函数 function deleteMovie(movieId) { if (confirm('确定要删除这部电影吗?')) { // 创建表单进行删除操作 var form = document.createElement('form'); form.method = 'post'; form.action = 'deleteMovie.jsp'; var input = document.createElement('input'); input.type = 'hidden'; input.name = 'id'; input.value = movieId; form.appendChild(input); document.body.appendChild(form); form.submit(); } } // 添加电影跳转 function addMovie() { window.location.href = 'movieAdd.jsp'; } </script> </head> <body> <h1 align="center">电影列表</h1> <!-- 添加电影按钮 --> <div align="center" style="margin-bottom: 15px;"> <button onclick="addMovie()">添加新电影</button> </div> <% Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch(Exception e) { out.print(e); } String url = "jdbc:mysql://localhost:3306/movie"; String user = "root"; String pass = "123456"; String moviename = request.getParameter("mvname"); String strSql = "SELECT * FROM movies"; %> <div align="center"> <table border="1"> <tr> <th width="50">id</th> <th width="200">title</th> <th width="150">director</th> <th width="300">description</th> <th width="150">duration</th> <th width="50">编辑</th> <th width="50">删除</th> </tr> <% try { con = DriverManager.getConnection(url, user, pass); stmt = con.createStatement(); rs = stmt.executeQuery(strSql); while(rs.next()) { out.print("<tr>"); out.print("<td>" + rs.getString("id") + "</td>"); out.print("<td>" + rs.getString("title") + "</td>"); out.print("<td>" + rs.getString("director") + "</td>"); out.print("<td>" + rs.getString("description") + "</td>"); out.print("<td>" + rs.getString("duration") + "</td>"); // 编辑按钮 out.print("<td><a href='movieEdit.jsp?id=" + rs.getString("id") + "'>编辑</a></td>"); // 删除按钮 out.print("<td><a href='javascript:void(0);' onclick='deleteMovie(" + rs.getString("id") + ")'>删除</a></td>"); out.print("</tr>"); } con.close(); } catch(SQLException e) { out.print(e); } finally { // 关闭资源 try { if (rs != null) rs.close(); } catch (Exception e) {} try { if (stmt != null) stmt.close(); } catch (Exception e) {} try { if (con != null) con.close(); } catch (Exception e) {} } %> </table> </div> <br/> <div align="center"> <form action="searchmovie.jsp" method="post"> 请输入电影名:<input type="text" name="mvname"><input type="submit" value="查询"> <a href="adminIndex.jsp">返回</a> </form> </div> </body> </html> 能否根据这个movieManage.jsp仿写一个scheduleManage.jsp,数据库schedules表中有6列,id,movie_id,start_time,end_time ,theater_id,price
最新发布
12-13
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <title>电影管理</title> <script> // 删除电影记录的函数 function deleteMovie(movieId) { if (confirm('确定要删除这部电影吗?')) { // 创建表单进行删除操作 var form = document.createElement('form'); form.method = 'post'; form.action = 'deleteMovie.jsp'; var input = document.createElement('input'); input.type = 'hidden'; input.name = 'id'; input.value = movieId; form.appendChild(input); document.body.appendChild(form); form.submit(); } } // 添加电影跳转 function addMovie() { window.location.href = 'movieAdd.jsp'; } </script> </head> <body> <h1 align="center">电影列表</h1> <!-- 添加电影按钮 --> <div align="center" style="margin-bottom: 15px;"> <button onclick="addMovie()">添加新电影</button> </div> <% Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch(Exception e) { out.print(e); } String url = "jdbc:mysql://localhost:3306/movie"; String user = "root"; String pass = "123456"; String moviename = request.getParameter("mvname"); String strSql = "SELECT * FROM movies"; %> <div align="center"> <table border="1"> <tr> <th width="50">id</th> <th width="200">title</th> <th width="150">director</th> <th width="300">description</th> <th width="150">duration</th> <th width="50">编辑</th> <th width="50">删除</th> </tr> <% try { con = DriverManager.getConnection(url, user, pass); stmt = con.createStatement(); rs = stmt.executeQuery(strSql); while(rs.next()) { out.print("<tr>"); out.print("<td>" + rs.getString("id") + "</td>"); out.print("<td>" + rs.getString("title") + "</td>"); out.print("<td>" + rs.getString("director") + "</td>"); out.print("<td>" + rs.getString("description") + "</td>"); out.print("<td>" + rs.getString("duration") + "</td>"); // 编辑按钮 out.print("<td><a href='movieEdit.jsp?id=" + rs.getString("id") + "'>编辑</a></td>"); // 删除按钮 out.print("<td><a href='javascript:void(0);' onclick='deleteMovie(" + rs.getString("id") + ")'>删除</a></td>"); out.print("</tr>"); } con.close(); } catch(SQLException e) { out.print(e); } finally { // 关闭资源 try { if (rs != null) rs.close(); } catch (Exception e) {} try { if (stmt != null) stmt.close(); } catch (Exception e) {} try { if (con != null) con.close(); } catch (Exception e) {} } %> </table> </div> <br/> <div align="center"> <form action="searchmovie.jsp" method="post"> 请输入电影名:<input type="text" name="mvname"><input type="submit" value="查询"> <a href="adminIndex.jsp">返回</a> </form> </div> </body> </html> 能否直接在movieManage里面直接修改(只改核心代码,页面保持不变)
12-13
.制作一个注册表单,表单元素要包含文本框、密码框、多行文本框,单选按钮、下拉菜单,复选框等。提交到另一个jsp页面,在该页面中输出上述表单元素输入或选择的值(如果在提交之前能进行JS验证更好)。 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>输入表单</title> </head> <body> <form action="outputResult.jsp" method="post"> 请输入内容: <input type="text" name="inputText"><br><br> <input type="submit" value="提交"> </form> </body> </html> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>结果页面</title> </head> <body> <% // 获取表单提交的数据 String inputText = request.getParameter("inputText"); if (inputText != null && !inputText.isEmpty()) { out.println("您输入的内容是:" + inputText); } else { out.println("未接收到任何输入!"); } %> </body> </html> <%@ page language="java" contentType="text/html; charset=gb2312"%> <html> <body> 请您输入自己的信息进行注册 <form action="checkForm_result.jsp" method="post"> 请您选择您的爱好: <input name="fav" type="checkbox" value="sing">唱歌 <input name="fav" type="checkbox" value="dance">跳舞 <input name="fav" type="checkbox" value="ball">打球 <input name="fav" type="checkbox" value="game">打游戏<BR> <input type="submit" value="注册"> </form> </body> </htmI> <%@ page language="java" contentType="text/html; charset=gb2312"%> <html> <body> <% String[] fav = request.getParameterValues("fav"); out.println("爱好为:"); for(int i=0;i<fav.length;i++){ out.println(fav[i]); } %> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <body> <form action="loginchuli.jsp" method="POST"> 请输入用户名:<input type="text" name="username"><br> 请输入密码:<input type="password" name="pwd"><br> <input type="submit" value="登录"> </form> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <body> <% String username = request.getParameter("username"); String password = request.getParameter("pwd"); // 添加空值检查和安全验证 if(username != null && password != null) { if ("1921801z".equals(username)) { // 避免NullPointerException session.setAttribute("loginname", username); out.println("登录成功!即将跳转到测试页面..."); // 添加自动跳转 response.setHeader("Refresh", "3;url=test1.jsp"); } else { response.sendRedirect("login.jsp"); } } else { response.sendRedirect("login.jsp"); } %> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <% String login = (String)session.getAttribute("loginname"); if(login == null) { response.sendRedirect("login.jsp"); } %> <body> <h2>测试页面</h2> <p>欢迎, <%= login %>!</p> <p>只有登录用户才能看到此内容</p> </body> </html>
06-13
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值