用户查询案例功能3:添加联系人、删除一列、修改一行(回显信息,隐藏域)

这篇博客探讨了在Java Web应用中如何进行联系人管理,包括添加联系人、删除列表项以及修改列表中的一项。通过示例代码解释了在list.jsp中设置href属性与隐藏域的方式,详细阐述了如何在findUserServlet中获取并处理请求参数,使用BeanUtils封装对象。提供的代码链接展示了具体的实现细节。

总的页面:
在这里插入图片描述

一、添加联系人

在这里插入图片描述

二、删除一列

在这里插入图片描述

三、修改一行(麻烦点)

在list.jsp中写:href=" p a g e C o n t e x t . r e q u e s t . c o n t e x t P a t h / f i n d U s e r S e r v l e t ? i d = {pageContext.request.contextPath}/findUserServlet?id= pageContext.request.contextPath/findUserServlet?id={user.id}"
然后你在findUserServlet这个servlet可以通过String id = request.getParameter(“id”);这样获取你的id。

(这里?(就起连接的作用吧)后面接的就是你定义的name,所以这里为id,后面${user.id}为你传递的参数值,getparameter就是这样获取参数的)(重点)
在这里插入图片描述

隐藏域

<input type="hidden" name="id" value="${user.id}">

然后你的servlet就可以以id(要以实体类命名一样,才能BeanUtils封装为对象)为名,用request.getParameterMap()来封装。

附上代码链接:
https://github.com/QLBF11/Java_small_important/commit/ca9c1439be1e96999849126c928088f092192e01#diff-c4ea928571e8da501978c22e459ad719405935b408e11b099f3a1d227d23999f

<think>嗯...用户这次问的是关于telnet.close()在交换机回显中的作用,需要结合之前提供的站内引用内容来分析。用户实际困惑点在于"为什么每次输入命令后要关闭连接来等待回显",这显然不符合常规操作逻辑。 仔细看用户引用的示例[^1],里面根本没有提到telnet.close()的操作,反而是教用户如何开启本地回显功能用户可能混淆了"关闭回显"和"关闭连接"两个概念。上次回复时我详细解释了telnet工作流程,但用户似乎还是存在误解。 用户身份应该是网络运维人员,正在调试交换机配置。ta的真实需求可能是想解决回显延迟问题,但错误地认为关闭连接能强制获取回显。其实引用[1]里第七步展示的"GET /trtest.html"示例已经证明,开启localecho后命令输入时就能立即看到回显,根本不需要关闭连接。 考虑到交换机telnet会话的特性,突然关闭连接反而会导致会话终止。需要强调两点:一是回显机制本身与连接状态无关,二是close()操作会直接破坏会话连续性。用户可能把TCP连接的流量控制机制和回显功能搞混了。 上次回复提到的"逐条命令处理"场景需要补充说明:某些老式交换机的确需要分次连接,但那是因为其单次会话限制,并非为了获取回显。不过现代设备基本都支持会话保持,这个操作已经过时了。 最后生成的问题要引导用户关注正确方向。第一个问题帮ta区分回显与连接的关系,第二个指向实际应用场景,第三个则提醒设备兼容性问题——毕竟用户引用的示例明显是Windows telnet客户端,而实际运维可能用SecureCRT等专业工具。 </think>在Telnet会话中,每次输入命令后使用`telnet.close()`来“等待交换机回显信息”的做法存在明显的误解和技术问题: ### 核心问题分析 1. **破坏会话连续性** `close()`会**直接终止TCP连接**(如图示),导致每次执行命令需重新建立连接、重新认证。这不仅无法保留上下文状态,还会显著增加延迟: ![Telnet连接关闭流程](https://example.com/telnet-close-flow.png) ```mermaid graph LR A[发送命令] --> B[立即关闭连接] B --> C{交换机尝试回显} C --> D[连接已中断 数据丢失] ``` 2. **回显机制的本质** - 交换机的回显是**设备自身行为**(如`line vty`配置中的`logging synchronous`) - Telnet连接仅提供传输通道,关闭连接**不会加速回显**,反而会丢弃未传输的数据 3. **正确等待回显的方法** ```python # Python telnetlib 示例 tn.write(b"show version\n") time.sleep(1) # 合理等待响应 output = tn.read_very_eager() # 非阻塞读取 ``` ### 实际应用场景 当需要处理**无回显设备**时(如某些工业交换机),应: 1. 开启本地回显(如引用[^1]所述`set localecho`) 2. 使用超时机制读取: ```python tn.read_until(b"#", timeout=5) # 等待提示符 ``` ### 运维建议 - **避免频繁连接**:单次会话完成批量操作(降低设备负载) - **异常处理**:添加重连机制应对网络抖动 - **协议选择**:优先使用SSH(加密+可靠会话保持) > ⚠️ 典型错误示例: > ```python > for cmd in commands: > tn = telnetlib.Telnet(host) > tn.write(cmd) # 命令未送达即中断 > tn.close() # 强制关闭连接 > time.sleep(2) # 无效等待 > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值