从 WEB-INF 中包含 javascript 文件

Include javascript file from inside WEB-INF

我正在 struts 开发一个网站。我的文件夹结构如下:

现在,我有一个 jsp 页面 register.jsp,我想在其中添加 jquery.validate.js 文件。我遵循了以下 link 的建议:

Can not include javascript file from WEB-INF directory in JSP.

我的代码如下:

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Insert title here</title>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://use.fontawesome.com/0c2573c7d6.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript"  src='<c:url value="/WEB-INF/scripts/jquery.validate.js"/>'></script>

以上代码生成了以下内容 html :

<script type="text/javascript"  src='/LoginApp/WEB-INF/scripts/jquery.validate.js'></script>

jsp 文件无法访问 javascript 文件 jquery.validate.js。如何从我的 jsp 文件访问它?

此致, 坦维尔

您应该将文件 jquery.validate.js 移到 webapp/scripts 中的 WEB-INF 之外,因为它在某种程度上是受保护的目录,因为此目录中的资源默认情况下是非 public,然后您将能够使用以下方式访问它:

<script type="text/javascript" src='<c:url value="/scripts/jquery.validate.js"/>'></script>

WEB-INF 不可公开访问,您的 HTML 页面无法访问 WEB-INF 中的 JS 文件。

可能最好的方法是将您的 JS 文件移到 WEB-INF 之外,并将 link 更改为该位置。

另一种方法是在 html 中使用 JS 文件的内容生成一个 <script> 标签:

<script>
<%@include file="/WEB-INF/scripts/jquery.validate.js" %>
</script>

请注意,您正在失去浏览器缓存的好处,因为您每次都在 HTML 中包含 JS 文件的内容。