Javascript 如何从作为web应用程序插件一部分的servlet中访问.js文件?
我找不到访问javascript文件的方法,我把它放在了一个插件的项目文件夹中,我正试图扩展这个插件。不幸的是,提供的解决方案不起作用。我希望这不是我为之编写插件的webapp所特有的(比方说它叫Javascript 如何从作为web应用程序插件一部分的servlet中访问.js文件?,javascript,java,servlets,web-applications,Javascript,Java,Servlets,Web Applications,我找不到访问javascript文件的方法,我把它放在了一个插件的项目文件夹中,我正试图扩展这个插件。不幸的是,提供的解决方案不起作用。我希望这不是我为之编写插件的webapp所特有的(比方说它叫thiswebappname)。 我首先扩展了一个现有的示例插件,该插件具有以下项目结构: 项目结构 myprojectsnamespace.myproject JRE系统库 插件依赖项 src myprojectsnamespace.myproject java META-INF 网络
thiswebappname
)。
我首先扩展了一个现有的示例插件,该插件具有以下项目结构:
项目结构
myprojectsnamespace.myproject
- JRE系统库
- 插件依赖项
- src
- myprojectsnamespace.myproject
- java
- myprojectsnamespace.myproject
- META-INF
- 网络应用
- WEB-INF
- javascript
- myScript.js
- javascript
- web.xml
- WEB-INF
- 构建属性
- plugin.xml
不知何故,我无法从MyServlet
加载myScript.js
的内容。servlet是由web.xml
发布的:
MyServlet
我的Servlet
myprojectnamespace.myproject.MyServlet
MyServlet
/加载脚本
在MyServlet.java
中,我尝试了以下方法,但都没有成功:
java
公共类MyServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
@凌驾
受保护的void doGet(HttpServletRequest-req、HttpServletResponse-resp)引发IOException{
分别为setContentType(“文本/html”);
resp.getWriter()println(“”);
resp.getWriter().println(新字符串(Files.readAllBytes(path.get(“getPopup.js”)),StandardCharsets.UTF_8));
//上面一行找不到文件。我还尝试了“myprojectsnamespace.myproject/webapp/WEB-INF/javascript/myScript.js”等,同样的问题
resp.getWriter()println(“”);
/*以下方法存在相同的问题,即找不到文件:
分别为setContentType(“文本/html”);
resp.getWriter()println(“”);
resp.getWriter()println(“”)*/
}
当我输入http://myserver/thiswebappname/LoadScript
在浏览器中,doGet()
确实会按预期从MyServlet
调用,但脚本没有加载。我是否缺少一些明显的内容?我还没有找到一种像在web.xml中使用MyServlet那样“发布”.js文件的方法。您可以使用:
ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/javascript/myScript.js");
或者,如果您只需要输入流:
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/javascript/myScript.js");
即使Servlet容器从未扩展WAR文件(如Tomcat),这也可以工作。我最终在块中使用了InputStream变量tyvm!作为将来的参考:
ServletContext context=request.getSession().getServletContext()
和String scriptTag=IOUtils.toString(context.getResourceAsStream(“/WEB-INF/javascript/myScript.js”),StandardCharsets.UTF_8);
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/javascript/myScript.js");