Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于在Java应用程序中执行javascript post进程的问题_Java_Javascript_Prototype_Yui - Fatal编程技术网

关于在Java应用程序中执行javascript post进程的问题

关于在Java应用程序中执行javascript post进程的问题,java,javascript,prototype,yui,Java,Javascript,Prototype,Yui,传统上,我们总是在响应中使用xml,该响应由Javascript方法解析以执行后期处理。我提出了一个新的、更简单的实现,它使用requestAttribute设置的隐藏输入,并在ajax回调中执行 JSP: SERVLET代码: request.setAttribute("jsPostProcess", jsPostProcess); 它工作得很好,而且无论功能多么简单或复杂,向几乎任何调用添加js post进程都要简单得多。无需自定义js方法进行解析 好奇是否有人能发现它的任何潜在问题(如安

传统上,我们总是在响应中使用xml,该响应由Javascript方法解析以执行后期处理。我提出了一个新的、更简单的实现,它使用requestAttribute设置的隐藏输入,并在ajax回调中执行

JSP:

SERVLET代码:

request.setAttribute("jsPostProcess", jsPostProcess);
它工作得很好,而且无论功能多么简单或复杂,向几乎任何调用添加js post进程都要简单得多。无需自定义js方法进行解析


好奇是否有人能发现它的任何潜在问题(如安全问题?)或对其他替代方案提出任何建议。我们目前在前端使用Prototype和YUI 2。

首先,不需要令人不快的scriptlet代码:

<c:if test='${not empty jsPostProcess}'>
  <input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>

因为“type”属性是“text/plain”,浏览器不会尝试执行该代码,并且您可以随时获取
元素的“text”。

首先,不需要不愉快的scriptlet代码:

<c:if test='${not empty jsPostProcess}'>
  <input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>

由于“type”属性是“text/plain”,浏览器不会尝试执行该代码,您可以随时获取
元素的“text”。

感谢您的响应!!一旦我重新阅读了你的文章几次,我就把它都做好了(尽管我之前的评论是我编辑的lol!!)。非常好的建议。非常感谢!“仅仅对这样的值调用eval()似乎有点危险,尽管你可能很清楚它将是什么。”我也这么想,但我想不出任何方法可以恶意使用它,因为后处理几乎都是标准事件,不允许任何“黑客能力”而不是用户通常可能做到的。但我不是js安全问题专家!!;)只要这些东西没有任何用户提供的内容,你就可以了。如果有,那么也有一些方法可以保护你自己。谢谢你的回复!!一旦我重新阅读了你的文章几次,我就把它都做好了(尽管我之前的评论是我编辑的lol!!)。非常好的建议。非常感谢!“仅仅对这样的值调用eval()似乎有点危险,尽管你可能很清楚它将是什么。”我也这么想,但我想不出任何方法可以恶意使用它,因为后处理几乎都是标准事件,不允许任何“黑客能力”而不是用户通常可能做到的。但我不是js安全问题专家!!;)只要这些东西没有任何用户提供的内容,你就可以了。如果有,那么也有一些方法来保护你自己。
<c:if test='${not empty jsPostProcess}'>
  <input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>
<script id='jsPostProcess' type='text/plain'>
  ${jsPostProcess}
</script>