Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
JSP未检测到javascript文件_Java_Javascript_Jsp_Fusioncharts - Fatal编程技术网

JSP未检测到javascript文件

JSP未检测到javascript文件,java,javascript,jsp,fusioncharts,Java,Javascript,Jsp,Fusioncharts,通过servlet,我将请求转发到呈现FusionChart的JSP页面。 但我在加载图表时遇到了一个问题。JSP文件未检测到JavaScript文件。文件夹结构为: axis | WebContent | WEB-INF | classes |_ com |_FusionCharts.js |_MyChartJsp.jsp |_Line.swf 和JSP代码: &

通过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>
请求被转发到JSP。但该图表无法显示,因为它无法计算出行中的
FusionCharts

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

src="/FusionCharts.js"

src="FusionCharts.js"
但是没有运气


这与转发的请求有关吗?

WEB-INF
中不能有
.js
(或.swf、.jpg等)文件-它们不能公开访问。
将其移动到
/js/

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

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

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

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

无论当前url是什么,这都会起作用。这不是问题的原因,但请注意,
元素不正确。应该是
我也面临同样的问题。在我的例子中,当我直接调用myFile.jsp时,它读取myFile.js

但是当通过login->myFile.jsp调用时,它没有读取myFile.js

通过开发工具:=>控制台分析路径后,我发现它插入了uri,因此最终路径不正确

最终解决方案:

我使用了所有.js和.css的绝对路径。现在到处都在呼唤它

我的项目结构是:

在我的servlet-context.xml中

i) <context:component-scan base-package="com.SBP.SHWeb" />

ii) <resources mapping="/resources/**" location="/resources/" />
i)
(ii)
include.js的旧路径是:/resources/MyJs/myfile.js===>它有时不会被调用

我的绝对路径,从所有地方调用的路径如下:

/SHweb/resources/MyJs/myfile.js==>它可以从任何地方调用


希望它能帮助您。

还应注意,Line.swf文件也将无法访问。像javascript文件一样,它应该从WEB-INF文件夹下移出。我已经从WEB-INF中移出了.js文件。但仍然没有成功。当我将JSP文件从WEB-INF中移出时,它确实起作用了。我放置的所有三个(.js、.JSP、.swf)文件“WebContent/FusionCharts/”都起作用了。如果我将JSP文件放在WEB-INF之外可以吗?在HTML5中,
类型
属性默认为
text/javascript
。因此,如果您使用的是HTML5 doctype,您可以安全地忽略它(即使如此,在HTML4中,w3c验证器将是唯一一个会出错的验证器;它可以在IE6及更高版本的所有浏览器中工作)。
i) <context:component-scan base-package="com.SBP.SHWeb" />

ii) <resources mapping="/resources/**" location="/resources/" />