JSP对我来说是新手,我想知道这两个标签在导入 JS 或 CSS 文件时的区别。
我测试过的是我们可以使用它们来在JSP中包含文件。
但是
<script src = "../js/someJavaScript.js"></script>
文件必须 WEB-INF
文件夹,而
<%@include file = "../js/someJavaScript.js"%>
我可以访问WEN-INF文件夹中的 中的js文件,但是当我尝试包含jquery-library
时,
我收到了这个错误:
org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP:
An error occurred at line: 56 in the generated java file
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit
Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:443)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
CSS &amp; JS 文件必须在WEB-INF
文件夹之外?
我知道还有<%@include file="../../*.jsp"/>
和<jsp:include page="../../*.jsp"/>
包括另一个jsp。
有人可以解释这些差异吗?
答案 0 :(得分:2)
不同之处在于<script src = "../js/someJavaScript.js"></script>
将确切的HTML放在输出中,浏览器再次调用服务器来获取JS文件。虽然<%@include file = "../js/someJavaScript.js"%>
将JS文件的内容放在输出中,这意味着您需要在其周围包装脚本标记:<script><%@include file = "../js/someJavaScript.js"%></script>
。最好使用第一种方法,因为在HTML文件中打印一堆Javascript本身很混乱,看起来不专业,而且浪费带宽。当我说“HTML文件本身”时,我指的是主JSP返回给浏览器的HTML。在浏览器中查看您的来源以查看差异。
CSS&amp; JS文件必须在WEB-INF文件夹之外?
当然,WEB-INF中的所有内容都可用于服务器端代码。但除非在web.xml中映射,否则客户端可以直接访问WEB-INF下的任何内容,因此当您以需要浏览器进行另一次调用来获取它的方式引用javascript / css时(更好的方式),如果你在WEB-INF下有CSS / JS。
方法代码_jspService(HttpServletRequest,HttpServletResponse)超出65535字节限制
尝试包含jquery库时出现的错误是因为JS文件非常大。这是引用JS文件并让浏览器单独下载的一个原因。想象一下,如果您在网站的每个页面中直接包含65535字节JS文件的文本!但是,如果在每个页面中您引用了相同的内容并让浏览器自行下载,则浏览器可以缓存它,而不必每次都下载它。它节省了带宽。