在WEB-INF中包含javascript文件

时间:2016-09-29 09:45:25

标签: java jsp struts-1

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

enter image description here

现在,我有一个jsp页面register.jsp,我想在其中添加jquery.validate.js文件。我已按照以下链接提出建议:

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文件中访问它?

此致 坦维尔

2 个答案:

答案 0 :(得分:5)

您应该将文件jquery.validate.js移到WEB-INF webapp/scripts之外,因为它在某种程度上是受保护的目录,因为此目录中的资源默认不公开,然后您就可以访问它使用:

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

答案 1 :(得分:4)

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

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

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

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

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