2016-09-29 46 views
3

我正在用struts开发一个网站。我的文件夹结构如下:从WEB-INF内部包含JavaScript文件

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

你为什么把资源放在'/ WEB-INF/scripts'而不是直接'/ scripts'的任何原因? –

+0

你应该使用类似src =“$ {pageContext.request.contextPath} /scripts/jquery.validate.js” –

+0

@NicolasFilotto我不知道。我是struts和java的新手。我已经开始这一周了。你建议把JavaScript放在哪里?你能告诉我这种情况下的标准吗?那么我将如何访问它? – Rumel

回答

5

你应该将你的文件jquery.validate.jsWEB-INFwebapp/scripts,因为它是某种受保护的目录,因为该目录内的资源是默认的非公开的,那么你就可以用来访问它:

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

谢谢。您的解决方案正确运行我有一个问题。路径是否始终从webapp开始。我的意思是为什么我们不使用value =“/ webapp/scripts/jquery.validate.js />” – Rumel

+1

yes路径从webapp目录开始,或者更准确地说从上下文路径的根目录开始 –

3

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

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

另一种方法,是产生在html一<script>标签与JS文件的内容:

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

请注意你失去了浏览器缓存的好处,因为你是包括内容每次在HTML中的JS文件。