搜索
当前位置:首页 > 时尚 > jsp超链接

jsp超链接

发表于 2026-10-17 05:59:18 来源:烟消火灭网

点一下链接,链接浏览器地址栏里那串参数就暴露了。链接`userList.jsp?链接page=3&keyword=abc`,明晃晃的链接。这就是链接JSP超链接最原始的样子——用``标签拼字符串。别小看这个动作,链接里面坑多得很。链接

我见过一个项目,链接列表页每条记录后面跟个"编辑",链接链接写成``。用户ID是链接数字倒还好,换成用户名带空格呢?链接带中文呢?带`&`符号呢?浏览器直接给你截断。张三&李四,链接传到后台变成张三,链接李四没了。链接调试半天才发现是URL编码没做。正确写法得套一层`URLEncoder.encode()`,或者干脆用``标签。JSTL那个``会自动处理参数编码,还能把session ID重写进去,防止用户禁用cookie后会话丢失。很多人不知道这个细节,写了几年JSP还在手动拼`?`和`&`。

另一个常见问题是超链接的上下文路径。项目部署到Tomcat,context path是`/myapp`,你写``,浏览器直接跳到`localhost:8080/user/list.jsp`,404。得写``。每个链接都这么写?手酸。后来大家学乖了,在页面顶部定义`<% String ctx = request.getContextPath(); %>`,然后``。再后来有了JSTL,``自动加上context path。但注意,``默认不会把`;jsessionid`加进去,除非你设置``并配合`response.encodeURL()`。这层细节,面试问起来能刷掉一半人。

超链接传中文参数更是重灾区。``,Tomcat 8以前默认ISO-8859-1解码,后台`request.getParameter("name")`拿到乱码。解决办法要么改server.xml的URIEncoding,要么在JSP里先`new String(name.getBytes("ISO-8859-1"),"UTF-8")`。后者丑陋但管用。我见过一个老系统,每个接收中文参数的JSP顶部都有一行这个转码代码,像一排补丁。后来升级Tomcat 8,默认UTF-8了,那些补丁还在,没人敢删。

还有安全层面的东西。超链接里的参数直接拼SQL?``,后台`"select * from t where id=" + id`。用户把链接改成`detail.jsp?id=1 or 1=1`,整张表拖出来。更狠的是`id=1;drop table t--`。JSP超链接天然是GET请求,参数全在URL里,改起来零成本。所以后台必须用PreparedStatement,或者至少做参数校验。别指望前端JS验证,那玩意儿关掉浏览器就没了。

说到GET请求,超链接传参长度也有限制。IE当年限制2083个字符,Chrome宽松些但服务器端也有上限。你搞个超链接把整篇富文本内容传过去?等着被截断吧。这种场景就该用表单POST,或者先把数据存session再传个key。我见过有人用超链接传base64编码的图片数据,URL长到浏览器地址栏都显示不全,居然还能跑——因为没超过Tomcat默认的8KB maxHttpHeaderSize。但这是走钢丝。

实际开发中,JSP超链接最舒服的写法是配合MVC框架。比如Struts2的``,或者Spring MVC的``。框架帮你处理编码、context path、参数绑定。但底层原理还是那套:拼URL、发GET请求、服务器解析。理解了这个,出问题的时候才能一眼看穿是编码错了还是路径错了。

最后提一个冷门点:``和``的区别。前者会跳回页面顶部,后者不会。做单页应用或者AJAX按钮的时候,用`javascript:void(0)`更干净。但如果你用了`href="#"`又没阻止默认行为,用户点一下页面就滚上去了,体验极差。这种小细节,代码review的时候最容易漏。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by jsp超链接,烟消火灭网   sitemap

回顶部