gpt4 book ai didi

javascript - jsp 包括 CSS&JS <%@ include %> vs <script>

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:40 25 4
gpt4 key购买 nike

JSP 对我来说是个新手,我想知道这两个标签在导入 JSCSS 文件时的确切区别。

我测试过的是我们可以同时使用它们来在 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)

CSSJS 文件是否必须在WEB-INF 之外?文件夹?

而且我知道还有 <%@include file="../../*.jsp"/><jsp:include page="../../*.jsp"/>用于包含另一个 jsp。

谁能解释一下区别?

最佳答案

区别在于<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。在浏览器中查看源代码以了解差异。

Does the CSS & JS file has to be outside of the WEB-INF folder?

当然,WEB-INF 中的所有内容都可用于服务器端代码。但是除非在 web.xml 中映射,否则客户端无法直接访问 WEB-INF 下的任何内容,因此当您以需要浏览器进行另一次调用以获取它的方式引用 javascript/css(更可取的方式)时,如果您在 WEB-INF 下有 CSS/JS。

The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

您在尝试包含 jquery 库时遇到的错误是因为 JS 文件确实很大。这是最好引用 JS 文件并让浏览器单独下载它的原因之一。想象一下,如果您在站点的每个页面中都包含一个 65535 字节的 JS 文件的文本!但是,如果在每个页面中您都引用相同的内容并让浏览器自行下载,则浏览器可以缓存它而不必每次都下载。它节省了带宽。

关于javascript - jsp 包括 CSS&JS <%@ include %> vs &lt;script&gt;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com