已调用javascript但未在页面上加载

已调用javascript但未在页面上加载,java,javascript,servlets,web,controllers,Java,Javascript,Servlets,Web,Controllers,我正在对我们使用的工具进行更改,但在加载本地javascript文件时遇到了问题。jquery库链接工作得非常好: builder.append("<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>"); 查看fiddler和chrome工具,它显示了200个返回正确内容类型的响应,但传输了0个字节,在资源/脚本中显示了空白页。我建议,摆脱“基于u

我正在对我们使用的工具进行更改,但在加载本地javascript文件时遇到了问题。jquery库链接工作得非常好:

builder.append("<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>");

查看fiddler和chrome工具,它显示了200个返回正确内容类型的响应,但传输了0个字节,在资源/脚本中显示了空白页。

我建议,摆脱“基于uri路由请求的自定义控制器”,并使用URL重写过滤器,如

builder.append("<script src='/SessionInfo/js/session.js'></script>");
您的问题显然是自定义控制器无法工作。首先,看看这个:

else if ( lowerCaseUri.matches("/sessioninfo/js/.*") ) 
{
   response.setContentType("text/javascript");
}
如果有对javascript文件的请求,那么您对该请求所做的就是将内容类型设置为javascript。您没有读取javascript文件并为其提供服务

您正在做的是尝试构建您自己的url重写,这是没有必要的

您也可以从控制器中取出
/sessioninfo/js/*
。我假设这些只是普通的.js文件,对吗?那么,为什么要使用控制器来路由它们呢?控制器的用途是当您需要在视图上放置后端信息时,因此您首先将用户发送到控制器(即servlet),然后控制器设置请求属性,然后转发到JSP,JSP只显示这些属性。

用于附加这些源:

builder.append("<script src='" + request.getContextPath() + "/SessionInfo/js/session.js'></script>");
builder.append(“”);

没错,该代码的设计对未来的任何变化都缺乏远见。我只是添加了上面的控制器语句,因为有一个重定向捕获所有与特定路径不匹配的URI。那么,它捕获所有URI的控制器映射到了什么?会话信息?如果你把它映射到v1,你的js就会逃脱陷阱。但我仍然认为使用重写过滤器会更好。我加入了逻辑,用/images、/js目录中的任何内容绕过控制器。然后,这只是一个阅读的问题。如果我将来有增强任务,毫无疑问我会用url重写器进行重构。谢谢
builder.append("<script src='" + request.getContextPath() + "/SessionInfo/js/session.js'></script>");