include file 与 include page 的区别

来源:互联网 发布:高仿冲qb软件 编辑:程序博客网 时间:2024/04/29 23:22

写了一jsp文件Register.jsp,感觉代码太长了,想把其中一部分放到另一jsp页Register_2.jsp中,然后再把Register_2.jsp加到该页中来。Register_2.jsp页面代码如下:
<%
String UserName=null;
String Pwd=null;
String NickName=null;
try{
UserName=iso2gb.ISOtoGB(request.getParameter("UserName"));
Pwd=iso2gb.ISOtoGB(request.getParameter("Pwd"));
NickName=iso2gb.ISOtoGB(request.getParameter("NickName"));
}catch(NullPointerException e){out.println(e);}
if(Diqu.equals("中国")) Region=Province+City;//若所选地区是中国,则地区是省份+城市
%>

Register.jsp中使用编译命令<jsp:include page="Register_2.jsp">,可编译Register.jsp时报错,说找不到以上变量的定义。后来使用编译命令<%@ include file="Register_2.jsp"%>,就可以。上网查了下两个命令的区别如下:
<%@ include file=""%>指令在编写代码的时候一般放在最顶部,主要附加的是被重用的代码,这里所说的附加是指把源代码原封不动的附加过来,例如在jsp 程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含< html><body>这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。 

而应用<jsp:include>标签导入一个重用文件的时候,这个文件是经过编译的,通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。

呵呵,现在明白了,我要实现的效果应该是将Register_2.jsp中的代码原封不动的加进来,所以应该使用<%@ include file="Register_2.jsp"%>。
还有,由于Tomcat在默认情况下使用ISO8859-1编码,有时Tomcat不能正确根据外层JSP文件的编码解析include引入的文件,造成include引入文件的中文乱码。解决方法为在include文件的头部加入编译指令代码:<%@ page contentType="text/xml; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>,该编译指令应该与外层JSP文件的编译指令一致,否则Tomcat会报错。

原创粉丝点击