【问题标题】:My method for hidden parameters using response.sendRedirect().. is it ok?我使用 response.sendRedirect() 隐藏参数的方法.. 可以吗?
【发布时间】:2016-06-27 15:54:50
【问题描述】:

我需要使用 response.sendRedirect 传递隐藏参数(在某些情况下我不想使用转发)。

因为我不想使用 GET 参数,例如 ?par1=val1&par2=val2&,... 我正在使用这样的会话对象:

session.setAttribute("error_message", "Error: e-mail is null");
response.sendRedirect(targetURL);

当“targetURL”被加载(它将是一个 JSP 文件)时,我读取了该值,然后删除了该会话属性:

if(session.getAttribute("error_message") != null) {%>
   <h4><%=session.getAttribute("error_message").toString()%></h4> <%
   session.removeAttribute("error_message");
}
%>

您认为这是一种合理/可靠的方式吗?对性能不利吗?你怎么看待这件事?继续下去还是修改代码?

谢谢!

【问题讨论】:

    标签: jsp servlets parameters response.redirect


    【解决方案1】:

    在你的情况下使用 session 是可以的。 您需要记住的是会话不是线程安全的,一旦同一浏览器窗口中的另一个选项卡删除该属性,用户就会收到错误消息。

    这对性能来说还不错。

    如果您不想通过 URL 传递数据并且您正在使用 response.sendRedirect(),那么会话范围对您来说是一个不错的选择。

    【讨论】:

    • 非常感谢@AndrewRibeiro! :-)
    • 用锁包裹查询/修改会话的部分是否合理?
    • 总的来说,一旦会话范围不是线程安全的。常用的是synchronized方法
    • 再次感谢您! :)
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多