如何在JSP/JSTL变量混合到其中的JSP中缩小/混淆JavaScript代码?

Osc*_*nes 8 javascript java obfuscation jsp jstl

arrays.jsp:

//...
var x = <c:out value="${x}"/>
<c:if test="${empty doExternal}">
processExternalArrays();
</c:if>
//...
Run Code Online (Sandbox Code Playgroud)

我想缩小/混淆大型JSP文件中包含的JavaScript,其中许多JSP/JSTL变量混合到JavaScript代码中,例如上面的代码片段.

代码依赖于使用服务器端逻辑填充的变量,然后传递给客户端代码,如上所述.

我已经使用YUI压缩器缩小了我的JS文件,但我不知道如何处理我的JSP中的JavaScript代码.

是否有可能缩小/混淆这段代码,因为它是动态创建的?

Bal*_*usC 0

除了借助 Ajaxical 功能结合 Servlet 将工作完全委托给纯 JS 之外,我没有看到其他方法,该 Servlet 在 Ajax 请求上返回所需的信息(以 JSON 的形式?)。

例如在 Servlet 中

Map<String, Object> data = new HashMap<String, Object>();
data.put("doExternal", doExternal);
data.put("x", x);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(new Gson().toJson(data)); // Gson is a Java-JSON converter.
Run Code Online (Sandbox Code Playgroud)

以及在 JS 中(几乎没有jQuery的帮助,因为它使 Ajax 的工作变得不那么冗长)

$.getJSON('servleturl', function(data) {
    var x = data.x;
    if (!data.doExternal) {
        processExternalArrays();
    }
});
Run Code Online (Sandbox Code Playgroud)

这样你最终会得到干净的 JS,没有服务器端特定的混乱。