标签:别不信 mytest 123 toCancel orderNo null servlet 参数值 页面
先贴出来简单得不能再简单的demo页面效果:
如下是spring mvc的Controller:
@RequestMapping("mytest") @Controller public class ZhangTestController { private Logger log = LogManager.getLogger(); @RequestMapping(value = "toCancel") public String toCancel( HttpServletRequest request, HttpServletResponse response, String orderNo){ log.info("orderNo={}",orderNo); request.setAttribute("orderNo", null); return "mytest/toCancel"; } }
如下toCancel.jsp页面,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@ page contentType="text/html;charset=UTF-8" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="${pageContext.request.contextPath}/static/yimei/js/jquery-1.10.2.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#chargeQuery").click(function () { $("#inputForm").submit(); }); }); </script> </head> <body> <form id="inputForm" action="" method="post" class="form-horizontal"> <input type="text" name="orderNo" id="orderNo" value="${orderNo}"/> </form> <span class="buyer pay-credit" id="chargeQuery">取消订单</span> </body> </html>
如上,当通过浏览器访问http://localhost:8083/mytest/toCancel?orderNo=123,通过log可知打印出来的orderNo=123,这没什么可质疑的。
but,然后,再点击页面上的“取消订单”,打印出来的日志你猜是什么?好奇的你,想知道答案就Ctrl+A吧~~orderNo=123,null
是不是完全出于你的意料?!
如何解释这种情况?
我的理解:servlet在解析请求参数的值时,会通过逗号拼接所有地方的请求。本例orderNo参数的取值,包括get方式的orderNo参数,还包括form表单里的name="orderNo"域的值,所以,点击按钮事件时,orderNo参数的值是“123,null”。
今天在对生产排障时,奇怪的发现,查单的sql语句里,orderNo的值是“123,null”或“123,123”,最后发现原来是页面和webcontroller交互处理不当导致的。本文记录下来,以备园子里其他同学做参考。
标签:别不信,mytest,123,toCancel,orderNo,null,servlet,参数值,页面
来源: https://www.cnblogs.com/buguge/p/11153677.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。