基于JSP/Servlet/Java,如何点击按钮获取对应用户手机号?
嘿,我来帮你解决点击按钮获取对应用户手机号的问题!结合你现有的JSP循环代码,给你两种实用的方案:
方案1:前端JavaScript直接获取(适合无需后端交互的场景)
在循环渲染表格行的时候,给每个按钮添加自定义data-phone属性,把当前用户的手机号存进去,然后通过JavaScript监听点击事件读取这个属性值。
<% ArrayList<HospitalDTO> list=(ArrayList<HospitalDTO>)request.getAttribute("arrayList"); for(HospitalDTO hsp:list) { long no=hsp.getNumber(); String name=hsp.getName(); Date nextDD=hsp.getNextDD(); Date lastDD=hsp.getLastDD(); %> <tr> <td><%= name %></td> <td><%= nextDD %></td> <td><%= lastDD %></td> <td> <!-- 给按钮绑定当前用户的手机号 --> <button class="phone-btn" data-phone="<%= no %>">查看手机号</button> </td> </tr> <% } %> <script> // 给所有手机号按钮绑定点击事件 document.querySelectorAll('.phone-btn').forEach(button => { button.addEventListener('click', function() { // 从自定义属性中获取手机号 const phone = this.dataset.phone; // 这里可以做任何你想做的操作,比如弹窗展示 alert(`该用户手机号:${phone}`); // 如果需要传给后端Servlet,也可以用AJAX /* fetch('YourServletPath', { method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: `phone=${phone}` }).then(res => res.text()) .then(msg => console.log(msg)); */ }); }); </script>
方案2:表单提交到Servlet(适合需要后端处理的场景)
如果点击按钮后需要把手机号传给Servlet做业务处理,可以给每行单独创建一个表单,用隐藏域存储手机号,按钮作为表单提交按钮。
JSP代码:
<% ArrayList<HospitalDTO> list=(ArrayList<HospitalDTO>)request.getAttribute("arrayList"); for(HospitalDTO hsp:list) { long no=hsp.getNumber(); String name=hsp.getName(); Date nextDD=hsp.getNextDD(); Date lastDD=hsp.getLastDD(); %> <tr> <td><%= name %></td> <td><%= nextDD %></td> <td><%= lastDD %></td> <td> <form action="PhoneHandleServlet" method="POST"> <!-- 隐藏域存储当前用户手机号 --> <input type="hidden" name="contactPhone" value="<%= no %>"> <button type="submit">提交手机号到后端</button> </form> </td> </tr> <% } %>
Servlet代码(处理请求):
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/PhoneHandleServlet") public class PhoneHandleServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取表单提交的手机号 String phoneNumber = request.getParameter("contactPhone"); // 这里写你的业务逻辑,比如打印、存数据库等 System.out.println("收到用户手机号:" + phoneNumber); // 返回响应给前端 response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("成功获取手机号:" + phoneNumber); } }
重要提醒
- 别用你注释掉的
session.setAttribute("contactNumber",no)!因为循环里会不断覆盖session中的值,最后所有按钮都会拿到最后一个用户的手机号,完全达不到区分用户的目的。 - 如果用方案1的AJAX,记得配置好Servlet的访问路径,避免404错误。
- 表单提交方式要注意表单的
action路径和Servlet的@WebServlet注解值一致。
内容的提问来源于stack exchange,提问作者Kislay1812
相关产品推荐
相关产品推荐

