You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:47