首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

初学者有关问题之二: include 指令和 include 动作有啥区别

2012-12-19 
菜鸟问题之二: include 指令和 include 动作有啥区别?%@ include filexxx.txt%说是静态包含进来,如果

菜鸟问题之二: include 指令和 include 动作有啥区别?
<%@ include file="xxx.txt"%>
说是静态包含进来,如果被包含文件变化了,只有重新编译主文件才能看到变化,

<jsp:include page="xxx.txt"/>
一个是动态包含,只有主文件执行时才会包含进来,一旦被包含的变化了,主文件立即就能看到变化,不用从新编译,

可是我试了,两者都一样,不需要从新编译啊,子文件改了之后立即就看到变化了,

求解
[最优解释]
首先,楼主要明白,JSP其实是Servlet.
那么,楼主只需要找到这个JSP对应的Servlet类,看一下代码,比较一下就OK了。
[其他解释]
静态包含中被包含的页面和主页面在编译期间就合成一个.class文件,所以其request是同一个。而动态包含仍然是编译成各自的.class文件,动态包含两个页面的request也是不一样的。需要注意的是,包含与被包含的页面编码要一
[其他解释]
1、这里有篇文章讲的比较详细
http://meiowei.iteye.com/blog/413976

2、页面乱码问题可以检查下jsp文件编码和jsp页面制定的编码。
[其他解释]

引用:
还有 include 指令和 动作 好像效果都一样,只要修改了被包含文件,再刷新主页面,那么变化立即就看到,并不是书上说的还要把主页面再保存一次,然后才能看到变化


你项目肯定是自动编译模式,修改之后,保存,相当于重新编译了。
[其他解释]
补充一下:为什么 我的页面输出只要被包含文件内容是中文都会乱码?无论主页面是UTF 还是 GB2312 的编码
[其他解释]
引用:
1、这里有篇文章讲的比较详细
http://meiowei.iteye.com/blog/413976

2、页面乱码问题可以检查下jsp文件编码和jsp页面制定的编码。



response.setContentType("text/html;charset=utf-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      "", true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n");
      out.write("<html xmlns="http://www.w3.org/1999/xhtml">\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r\n");

 servlet 里编码跟页面编码都是 utf-8 啊,可是为啥输出会乱码呢?
[其他解释]
 out.write("<body>\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("è??é????ˉè¢??????????????-?");
      out.write("\r\n");
      out.write("\r\n");

servlet 这里输出语句为什么会是乱码呢? 搞不明白,已经设置了 
content-type:text/html;charset=utf-8 了啊
[其他解释]
还有 include 指令和 动作 好像效果都一样,只要修改了被包含文件,再刷新主页面,那么变化立即就看到,并不是书上说的还要把主页面再保存一次,然后才能看到变化
------其他解决方案--------------------


引用:
引用:
还有 include 指令和 动作 好像效果都一样,只要修改了被包含文件,再刷新主页面,那么变化立即就看到,并不是书上说的还要把主页面再保存一次,然后才能看到变化

你项目肯定是自动编译模式,修改之后,保存,相当于重新编译了。



可是这个模式在哪里看得到? 我修改的是被包含的文件,并没修改主文件
[其他解释]
还有更奇怪的,同一个主页面,

<%@ include file="inc.txt"%>
<jsp:include page="inc.txt" />

包含同一个txt,输出结果是上面那个include 正常, 下面那个jsp 动作 输出是乱码
[其他解释]
引用:
首先,楼主要明白,JSP其实是Servlet.
那么,楼主只需要找到这个JSP对应的Servlet类,看一下代码,比较一下就OK了。

[其他解释]
引用:
引用:
首先,楼主要明白,JSP其实是Servlet.
那么,楼主只需要找到这个JSP对应的Servlet类,看一下代码,比较一下就OK了。



难道会出现 标签没错,而 servlet  代码出错的情况?
[其他解释]
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "inc.txt", out, false);

这行代码 会导致乱码么?
[其他解释]
总结了一下:

1)include 动作标签 会各自生成一个类文件 而 include 指令会把所有的都生成在同一个类文件里.
2)include 动作标签包含的文件,必须要有字符编码,否则会出乱码(自行总结的经验)

热点排行