抓取jsp网页源代码(JSP页面间传递参数的方式及解决办法(二))
优采云 发布时间: 2022-03-01 03:05抓取jsp网页源代码(JSP页面间传递参数的方式及解决办法(二))
在项目中经常需要在JSP页面之间传递参数,这应该算是web的基本功。
尝试总结各种方式,在需要权衡利弊时选择最合适的方式。
1. 在 URL 链接后附加参数
URL 后面追加参数
response.sendRedirect("next.jsp?paramA=A¶mB=B...")
window.location = "next.jsp?paramA=A¶mB=B..."
以上代码执行完毕后,会跳转到带参数的next.jsp页面。
在next.jsp页面中获取对应参数的方式如下:
//内嵌的 java 代码
//如果引入了 EL
{param.paramA}
优点:简单性和多浏览器支持(没有浏览器不支持 URL)。
缺点:
1)传输的数据只能是字符串,对数据类型和大小有一定的限制;
2)在浏览器地址栏中会看到传输数据的值,安全级别低。
2. 表格
在 next.jsp 页面中获取相应参数的方式类似于 (1).
优势:
1) 简单性和多浏览器支持(再次没有浏览器不支持表单);
2) 可以提交的数据量远大于URL方式;
3)传输的值会显示在浏览器的地址栏,但是有一点hack,也可以从页面源码中构造参数列表;
缺点:
1)传输的数据只能是字符串,对数据类型有一定的限制;
3. 设置 Cookie
使用客户端的认证凭证,一个小cookie,当然也可以实现JSP页面的值传递。
要读取 next.jsp 页面上的 cookie,请调用 request.getCookies() 方法以获取 javax.servlet.http.Cookie 对象数组。
然后遍历数组并使用 getName() 和 getValue() 方法来获取每个 cookie 的名称和值。
//内嵌的 java 代码
//EL 获取方式
${cookie.paramA.value}
优势:
1)cookie的值可以持久化,即使客户端机器关闭,下次打开时仍然可以获取到里面的值;
2) Cookies可以帮助服务器保存多个状态信息,但不需要在服务器上分配存储资源,减轻了服务器的负担。
缺点:
1)虽然相比URL和Form,安全性提升了很多,但是也有一些黑方法获取客户端cookie,暴露客户端信息。
4. 设置会话
个人认为session和cookie是服务器端一个,客户端一个。
在给它们添加键值对之后,它不仅提供了页面之间的传输,还提供了数据共享的解决方案。
在 next.jsp 中读取 session 的方式:
//内嵌java 片段
//EL 获取方式
{session.paramA}
Session的优缺点可以参考Cookies。