[JQuery]关于使用jsp:include标签及<%@ include标签时要注意的事项

本文介绍了在JSP项目中集成JQuery时遇到的路径问题及解决方法。通过使用绝对路径代替相对路径,确保了公共JSP文件中的资源能够正确加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先回忆一下二者的区别(对于此篇文章而言,二者在用法上没有区别)

jsp:include是先编译一下included.jsp文件,然后再包含        先编译,后包含
@ include是先把文件包含就来,然后统一编译                   先包含,后编译

今天下午想把Jquery集成到项目中,发现怎么样都会出问题。原因就是路径问题。

在集成时,我的思路是写一个公共JSP文件,里面包含一些常用的js文件,当然此处我用的就是Jquery插件了。

但写完发现单独测试公共JSP是可以使用的,但包含公共JSP页面的页面却始终不能使用JQuery,开始还以为是加载顺序的问题。

几经测试,终于发现了其中的问题。


由于做的项目文件较多,故文件都不放在一个文件夹下:在公共JSP页面中,有

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<script type="text/javascript" src="js/jquery132min.js"></script>

<script type="text/javascript">
$(function(){
alert('hello1');
});
</script>


在调用它的时候,有:

<%@ include file="../../common_ext.jsp"%>

但这样很可能导致错误。


原因是,include之后,公共JSP被加载到自己的JSP,则JQueryr的相对位置已经发生了变化。即公共JSP把JQuery的相对位置传给了自己的JSP,但自己的JSP以自身为标准,通过路径就找不到Jquery插件了。简单地说,就是如果用相对路径,则公共JSP中的路径就应该是相对自己jSP的路径了。


但这样显然失去了它是公共JSP的意义,因此在这里用绝对路径来做:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%
String tPath = request.getContextPath();
String tBasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+tPath+"/";
%>

<script type="text/javascript" src="<%=tBasePath%>js/jquery132min.js"></script>
<script type="text/javascript">

$(function(){
alert('hello1');
});

</script>


这样,只要在自己的jSP页面中引入公共JSP就可以了。


<think>好的,我现在需要帮助用户了解如何在JSP中正确使用<jsp:include>标签及其page属性。根据用户提供的引用内容,我需要整理相关信息,确保回答准确并符合格式要求。 首先,我应该回顾用户提供的引用,特别是引用[1]到[5]。这些引用提到了<jsp:include>的基本语法、与<jsp:param>的搭配使用、与<%@ include %>的区别,以及可能遇到的bug,比如重复加载脚本的问题。 接下来,我需要按照系统指令的要求组织回答。用户的问题是关于如何正确使用这个标签,所以应该分步骤说明,包括基本语法、路径设置、参数传递、动态包含的特点,以及注意事项,如避免重复引入资源。 要注意使用中文回答,行内数学表达式用$...$,但这里可能用上。独立公式可能需要用$$...$$,JSP标签可能需要数学公式,所以可能可以忽略这一点。需要确保LaTeX语法正确,但这里主要涉及代码示例,所以重点放在代码块的正确格式上。 用户要求生成相关问题,所以我需要想几个相关问题,比如基本用法、与静态包含的区别、参数传递的方法、常见错误等。 然后检查每个引用的使用,确保在适当的地方添加引用标识。例如,当提到语法格式引用[1],提到参数传递引用[2],提到与静态包含的区别引用[4],提到注意事项引用[5]。 需要注意,引用[3]提到的是执行顺序,可能在动态包含的部分提到。引用[5]提到的是bug,所以注意事项部分需要提到避免重复引入JavaScript库。 最后,确保回答结构清晰,分步骤说明,代码示例正确,并自然地插入引用标识。同生成的相关问题要围绕用户可能关心的扩展点展开。</think>### JSP中正确使用`<jsp:include>`标签的步骤说明 #### 1. **基本语法与功能** `<jsp:include>`标签用于将其他资源(如JSP、HTML)的输出内容插入到当前页面中,**动态包含**的特性使其在请求执行目标文件,而非编译合并[^1]。 语法格式为: ```jsp <jsp:include page="relativeURL" flush="true|false" /> ``` - `page`:必填属性,指定目标资源的相对路径,如`"header.jsp"`或`"/WEB-INF/sidebar.jsp"`。 - `flush`:可选属性,默认为`false`,表示是否在包含前刷新输出缓冲区。 #### 2. **路径设置规则** - **相对路径**:以当前JSP文件所在目录为基准,例如`"components/footer.jsp"`。 - **绝对路径**:以Web应用的根目录(`/`)为基准,例如`"/shared/navigation.jsp"`[^4]。 #### 3. **传递参数** 通过嵌套`<jsp:param>`标签向被包含的页面传递参数,例如: ```jsp <jsp:include page="sum.jsp"> <jsp:param name="number" value="300" /> </jsp:include> ``` 被包含的页面(如`sum.jsp`)可通过`request.getParameter("number")`获取参数值[^2]。 #### 4. **动态包含与静态包含的区别** - **动态包含**(`<jsp:include>`):目标文件在请求独立执行,结果合并到当前页面。适用于需要动态更新的内容。 - **静态包含**(`<%@ include file="..." %>`):在编译将目标文件内容直接合并到当前页面。适用于静态代码片段(如公共头部)。 #### 5. **注意事项** - **避免资源重复加载**:若被包含页面引入了JavaScript库(如jQuery),需确保主页面会重复引入,否则可能引发脚本冲突[^5]。 - **作用域限制**:动态包含的页面无法直接访问主页面中定义的局部变量,需通过`request`、`session`等作用域共享数据。 #### 示例代码 ```jsp <%@ page contentType="text/html; charset=UTF-8" %> <html> <body> <jsp:include page="/header.jsp" /> <h1>主页面内容</h1> <jsp:include page="footer.jsp"> <jsp:param name="year" value="2023" /> </jsp:include> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值