java - JSP 未检测到 javascript 文件

标签 java javascript jsp fusioncharts

从 servlet,我将请求转发到呈现 FusionChart 的 JSP 页面。 但我在加载图表时遇到问题。 JSP 文件未检测到 JavaScript 文件。文件夹结构为:

axis
 |
 WebContent
      |
     WEB-INF
        |
       classes
         |_ com 
         |_FusionCharts.js
         |_MyChartJsp.jsp
         |_Line.swf

和 JSP 代码:

<html>
<head>
<script language="text/javascript" src="/WEB-INF/classes/FusionCharts.js"></script>
</head>
<body bgcolor="#ffffff">
<div id="chartdiv" align="left">The chart will appear within
this DIV. This text will be replaced by the chart.</div>
<script type="text/javascript">

var foo = //value fetched from DAO
var myChart = new FusionCharts("/WEB-INF/classes/Line.swf",
            "myChartId", "1000", "500");

    myChart
            .setDataXML("<graph caption='aCaption' xAxisName='xAxis' yAxisName='yAxis' showNames='1' decimalPrecision='0' formatNumberScale='0'>"+foo+"</graph>");
    myChart.render("chartdiv");
</script>

</body>
</html>

转发请求的Servlet代码:

final RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB-INF/classes/MyChartJsp.jsp");
requestDispatcher.forward(request, response);

请求正在转发到 JSP。但图表未显示,因为它无法确定 FusionCharts 所在行

var myChart = new FusionCharts("/WEB-INF/classes/Line.swf",
                "myChartId", "1000", "500");

我试过了

src="/FusionCharts.js"

src="FusionCharts.js"

但运气不好。

与请求转发有关系吗?

最佳答案

您不能拥有 .js (或 .swf、.jpg 等)WEB-INF 中的文件- 它们不可公开访问。
移至/js/

没有理由在 WEB-INF 中隐藏静态资源(如脚本和 CSS) 。如果您坚持这样做,您应该创建一个 servlet,根据 js/css 的名称,从其位置读取它并将其作为响应。这就是访问静态资源时默认 servlet 所做的事情。

页面加载的流程如下:浏览器向servlet发送请求; Servlet 在内部转发到 JSP,JSP 被呈现为响应;然后浏览器解析<script>标记并向脚本发出另一个请求。如果无法通过 URL 访问该脚本,则不会加载该脚本。

然后,要使脚本 url 固定到 servlet 上下文根,请使用

src="<c:url value="/js/script.js" />"

无论当前 url 是什么,这都会起作用

关于java - JSP 未检测到 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831085/

相关文章:

java - 如何在不添加任何代码的情况下使类可配置?

java - 如何用jenkins部署java项目

java - Spring validator 抛出异常

java - 如何遍历 Java 列表并检查它是否等于多个字符串?

java - Java 中的 MCS 锁缓存未更新

javascript - 如何增加material-ui图标?

javascript - 滚动时试图使导航菜单停留在屏幕顶部

javascript - jQuery `[jQuery created Element].is(":hover")` Only Seems To Work In Chrome

java - 从 Servlet 中的 JSP 检索具有相同名称的多个文本框值

jsp - Struts 2 OGNL s :iterator vs JSTL c:forEach performance