加感叹号跟不加感叹号有何区别!!<%! String s="aadsada" ;%>跟<% String s="aadsada" ;%> 好像再定义变量的时候加上!就是jsp语法不加,是 javascript语法,我也记不清了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 %! 是一个静态变量,所有的session使用的画面用同一个变量 那使用它的目的是不是: 同一个session 不同页面 之间 数据共享? "我另外写了一个jsp,里面不声明d的话,就不能编译 " 在Tomcat4.17中(在E:\Tomcat4.1\webapps\test\)hello.jsp=========<%@ page contentType="text/html; charset=gb2312" %><HTML><HEAD><TITLE></TITLE></HEAD><BODY><%! String hello = "hello"; %><% String world = "world";%></BODY></HTML>所生成对应的java文件(E:\Tomcat4.1\work\Standalone\localhost\test\)hello_jsp.java==============package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;import org.apache.jasper.runtime.*;public class hello_jsp extends HttpJspBase { String hello = "hello"; private static java.util.Vector _jspx_includes; public java.util.List getIncludes() { return _jspx_includes; } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { JspFactory _jspxFactory = null; javax.servlet.jsp.PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; try { _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html; charset=gb2312"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("\r\n"); out.write("<HTML>\r\n"); out.write("<HEAD>\r\n"); out.write("<TITLE>"); out.write("</TITLE>\r\n"); out.write("</HEAD>\r\n"); out.write("<BODY>\r\n"); out.write("\r\n"); String world = "world"; out.write("\r\n"); out.write("</BODY>\r\n"); out.write("</HTML>"); } catch (Throwable t) { out = _jspx_out; if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (pageContext != null) pageContext.handlePageException(t); } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); } }} 加叹号声明的变量可以在整个jsp页面调用,不加叹号只能在该定义域使用。全局变量跟局部变量差别 如果你在JSP页面中定义的函数,此函数用到一局变量时就要用了.即加!表全局变量 <%!是动态全局变量,我一般会在里面直接申明方法当内在函数用比如:<%! public void foo(){}%><% foo();//前面申明的方法能直接用%> liad() 的方法很好,在编译的java文件中找出差别 看了jsp对应的java文件后,明白了:<%! %>里声明的变量和方法都是作为类的属性和方法存在的而<% %>里声明的变量则是作为_jspService这个方法的内部属性(这也决定了<% %>里不能声明方法)希望没搞错! test1.jsp:----------------------<% int i=0;%><% ++i; out.println(i);%>用户A访问结果:1用户B访问结果:1test2.jsp:----------------------<%! int i=0;%><% ++i; out.println(i);%>用户A访问结果:1用户B访问结果:2用户A访问结果:3 liad() ( ) 贴的代码经典!现在小个结:一.jsp运行过程:客户端IE发送请求 -> web服务器接收请求 ->当请求为.jsp文件时,就会自动将请求交给应用服务器处理(应用服务器有很多种,如tomcat,resin,weblogic等)->应用服务器 找到用户请求的.jsp文件,解释jsp文件,产生相应的servlet类(又称java程序)->编绎servlet类(又称java程序) ->运行java程序->由java程序 处理用户请求的参数,返回html文本->html文本由java程序回送到应用服务器,再由应用服务器回送到web服务器,由web服务器回送到客户端IE->客户端ie对接收到的html文本 进行 显示二.jsp语法jsp页面 | --------element(元素) | | | -------directive | | | -------actions | | | --------scripting( 脚本,分三种:声明,执行语句,表达式) | --------comments(分纯html的注释,java的注释,回送到客户端的注释三种) | --------Template Data(模板数据,指html的内容)必须清楚,应用服务器并非将jsp文件直接把脚本内容替换一下就返回给客户端了,这种理解大错特错。应用服务器会针对每个jsp文件 生成一个相应的servlet类,又称java程序。servlet类一般在work目录下,具体位置很容易找到。最终要理解的就是 jsp文件 一定会被 转化成一个类,jsp文件的jsp元素,注释,html数据 最终都被封装成一个servlet类,例如;public class _index1__jsp extends com.caucho.jsp.JavaPage{ private boolean _caucho_isDead; private static int GlobalVar1=0 ; public void _jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { .... out.write(_jsp_string8, 0, _jsp_string8.length); ....这个类 接收用户的请求参数,并产生输出与回送。用户接收到的数据来自于这个servlet类,所以servlet类又称为 java程序,或称为 一个服务。简言之: jsp文件对应的是一个服务,即servlet类,又称java程序。附:当用户请求某个jsp文件,只有第一次请求时 会解释生成,编译,运行 java程序以后请求此文件时直接从 此java程序返回结果,所以你可以看到第一次访问一个网页很慢,而以后奇快! 下面贴一个.jsp文件 与其对应的servlet(.java文件)环境 resin + jdk 1.4.2.jsp文件 C:\Resin\webapps\test2\subpath1\index1.jsp 内容如下;<% response.setHeader("Refresh","500") ;%><html><head><title>welcome title</title><body><%-- 最正规的注释,不会被翻译成java注释 --%><% // 被翻译成java注释 %><% /* 被翻译成java注释 */ %><% /** 被翻译成java注释 **/ %><!-- 发回到客户端的注释 --><!-- --><h3><!-- 全局变量 --><%! private static int GlobalVar1=0 ; %><%out.println("全局变量GlobalVar1的值:");%><%=GlobalVar1 %><%GlobalVar1++;%></h3><h3><!-- 局部变量 --><% int PrivateVar1=0 ; %><%out.println("局部变量PrivateVar1的值:");%><%=PrivateVar1 %><%PrivateVar1++;%></h3><h3><%out.println("hello,world");%></h3><h1>当前时间</h1><%=new java.util.Date() %><h3><%//=HelloWorld.GetString()%></h3></body></html>==================================================================对应的servlet类的源文件 :C:\Resin\webapps\test2\WEB-INF\work\_subpath1\_index1__jsp.java 由应用服务器自动生成,内容如下(贴不下,最后不重要的部分省略了)======================================================================/* * JSP generated by Resin 3.0.3 (built Mon Sep 22 15:54:15 PDT 2003) */package _subpath1;import javax.servlet.*;import javax.servlet.jsp.*;import javax.servlet.http.*;public class _index1__jsp extends com.caucho.jsp.JavaPage{ private boolean _caucho_isDead; private static int GlobalVar1=0 ; public void _jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { com.caucho.jsp.PageContextImpl pageContext = com.caucho.jsp.QJspFactory.allocatePageContext(this, request, response, null, true, 8192, true); javax.servlet.jsp.JspWriter out = (javax.servlet.jsp.JspWriter) pageContext.getOut(); javax.servlet.ServletConfig config = getServletConfig(); javax.servlet.Servlet page = this; javax.servlet.http.HttpSession session = pageContext.getSession(); javax.servlet.ServletContext application = pageContext.getServletContext(); response.setContentType("text/html"); try { response.setHeader("Refresh","500") ; out.write(_jsp_string0, 0, _jsp_string0.length); out.write(_jsp_string1, 0, _jsp_string1.length); // \u00b1\u00bb\u00b7\u00ad\u00d2\u00eb\u00b3\u00c9java\u00d7\u00a2\u00ca\u00cd out.write(_jsp_string2, 0, _jsp_string2.length); /* \u00b1\u00bb\u00b7\u00ad\u00d2\u00eb\u00b3\u00c9java\u00d7\u00a2\u00ca\u00cd */ out.write(_jsp_string2, 0, _jsp_string2.length); /** \u00b1\u00bb\u00b7\u00ad\u00d2\u00eb\u00b3\u00c9java\u00d7\u00a2\u00ca\u00cd **/ out.write(_jsp_string3, 0, _jsp_string3.length); out.write(_jsp_string2, 0, _jsp_string2.length); out.println("\u00c8\u00ab\u00be\u00d6\u00b1\u00e4\u00c1\u00bfGlobalVar1\u00b5\u00c4\u00d6\u00b5:"); out.print((GlobalVar1 )); out.write(_jsp_string2, 0, _jsp_string2.length); GlobalVar1++; out.write(_jsp_string4, 0, _jsp_string4.length); int PrivateVar1=0 ; out.write(_jsp_string2, 0, _jsp_string2.length); out.println("\u00be\u00d6\u00b2\u00bf\u00b1\u00e4\u00c1\u00bfPrivateVar1\u00b5\u00c4\u00d6\u00b5:"); out.print((PrivateVar1 )); out.write(_jsp_string2, 0, _jsp_string2.length); PrivateVar1++; out.write(_jsp_string5, 0, _jsp_string5.length); out.println("hello,world"); out.write(_jsp_string6, 0, _jsp_string6.length); out.print((new java.util.Date() )); out.write(_jsp_string7, 0, _jsp_string7.length); //=HelloWorld.GetString() out.write(_jsp_string8, 0, _jsp_string8.length); } catch (java.lang.Throwable _jsp_e) { pageContext.handlePageException(_jsp_e); } finally { com.caucho.jsp.QJspFactory.freePageContext(pageContext); } } private com.caucho.java.LineMap _caucho_line_map; private java.util.ArrayList _caucho_depends = new java.util.ArrayList(); public boolean _caucho_isModified() { if (_caucho_isDead) return true; if (com.caucho.util.CauchoSystem.getVersionId() != 1174304625) return true; for (int i = _caucho_depends.size() - 1; i >= 0; i--) { com.caucho.make.Dependency depend; depend = (com.caucho.make.Dependency) _caucho_depends.get(i); if (depend.isModified()) return true; } return false; } public long _caucho_lastModified() { return 0; } public com.caucho.java.LineMap _caucho_getLineMap() { return _caucho_line_map; } public void destroy() { _caucho_isDead = true; super.destroy(); } public void init(com.caucho.java.LineMap lineMap, com.caucho.vfs.Path appDir) throws javax.servlet.ServletException { com.caucho.vfs.Path resinHome = com.caucho.util.CauchoSystem.getResinHome(); com.caucho.vfs.MergePath mergePath = new com.caucho.vfs.MergePath(); mergePath.addMergePath(appDir); mergePath.addMergePath(resinHome); com.caucho.loader.DynamicClassLoader loader; loader = (com.caucho.loader.DynamicClassLoader) getClass().getClassLoader(); String resourcePath = loader.getResourcePathSpecificFirst(); mergePath.addClassPath(resourcePath); _caucho_line_map = new com.caucho.java.LineMap("_index1__jsp.java", "foo"); _caucho_line_map.add("/subpath1/index1.jsp", 20, 13); _caucho_line_map.add(1, 28); _caucho_line_map.add(1, 28); _caucho_line_map.add(12, 31); _caucho_line_map.add(12, 31); _caucho_line_map.add(13, 33); _caucho_line_map.add(13, 33); _caucho_line_map.add(14, 35); _caucho_line_map.add(14, 35); _caucho_line_map.add(20, 37); _caucho_line_map.add(21, 38); _caucho_line_map.add(21, 39); _caucho_line_map.add(21, 40); _caucho_line_map.add(22, 41); _caucho_line_map.add(27, 43); _caucho_line_map.add(27, 43); _caucho_line_map.add(28, 45); _caucho_line_map.add(28, 45); _caucho_line_map.add(28, 46); _caucho_line_map.add(28, 47); _caucho_line_map.add(29, 48); _caucho_line_map.add(34, 50); _caucho_line_map.add(34, 50); _caucho_line_map.add(39, 52); _caucho_line_map.add(39, 53); _caucho_line_map.add(42, 54); _caucho_line_map.add(42, 54); com.caucho.vfs.Depend depend; depend = new com.caucho.vfs.Depend(mergePath.lookup(".//c:/resin/webapps/test2/subpath1/index1.jsp"), "ZuLzbop0USGXdISiNaF9Dg==", false); _caucho_depends.add(depend); } ..... 老兄,进步真不少呀 :)小弟跟着你学习ing... 求算法 数据库 链接不上 急! java代码实现数据库备份和恢复 问一个hibernate查询的问题 请求帮忙 哇哈哈哈!怪事年年有,今年特别多 有几个问题请教大家,先谢过~ 求教高人:ssh环境的问题 Jsp一个简单问题 怎么用getProperty从bean中取得属性值的问题? JSP用FORM传变量时出现乱码的问题??急! File组件的值怎么取?????????
hello.jsp
=========
<%@ page contentType="text/html; charset=gb2312" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%! String hello = "hello"; %>
<%
String world = "world";
%>
</BODY>
</HTML>所生成对应的java文件(E:\Tomcat4.1\work\Standalone\localhost\test\)hello_jsp.java
==============
package org.apache.jsp;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;public class hello_jsp extends HttpJspBase { String hello = "hello"; private static java.util.Vector _jspx_includes; public java.util.List getIncludes() {
return _jspx_includes;
} public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException { JspFactory _jspxFactory = null;
javax.servlet.jsp.PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
try {
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html; charset=gb2312");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out; out.write("\r\n");
out.write("<HTML>\r\n");
out.write("<HEAD>\r\n");
out.write("<TITLE>");
out.write("</TITLE>\r\n");
out.write("</HEAD>\r\n");
out.write("<BODY>\r\n");
out.write("\r\n"); String world = "world"; out.write("\r\n");
out.write("</BODY>\r\n");
out.write("</HTML>");
} catch (Throwable t) {
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
out.clearBuffer();
if (pageContext != null) pageContext.handlePageException(t);
} finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
}
}
}
比如:<%!
public void foo(){}
%><%
foo();//前面申明的方法能直接用
%>
的方法很好,
在编译的java文件中找出差别
<%! %>里声明的变量和方法都是作为类的属性和方法存在的
而<% %>里声明的变量则是作为_jspService这个方法的内部属性
(这也决定了<% %>里不能声明方法)希望没搞错!
----------------------
<% int i=0;%>
<% ++i;
out.println(i);
%>
用户A访问结果:
1
用户B访问结果:
1
test2.jsp:
----------------------
<%! int i=0;%>
<% ++i;
out.println(i);
%>
用户A访问结果:
1
用户B访问结果:
2
用户A访问结果:
3
现在小个结:
一.jsp运行过程:客户端IE发送请求 ->
web服务器接收请求 ->
当请求为.jsp文件时,就会自动将请求交给应用服务器处理(应用服务器有很多种,如tomcat,resin,weblogic等)->
应用服务器 找到用户请求的.jsp文件,解释jsp文件,产生相应的servlet类(又称java程序)->
编绎servlet类(又称java程序) ->运行java程序
->由java程序 处理用户请求的参数,返回html文本
->html文本由java程序回送到应用服务器,再由应用服务器回送到web服务器,由web服务器回送到客户端IE
->客户端ie对接收到的html文本 进行 显示二.jsp语法jsp页面
|
--------element(元素)
| |
| -------directive
| |
| -------actions
| |
| --------scripting( 脚本,分三种:声明,执行语句,表达式)
|
--------comments(分纯html的注释,java的注释,回送到客户端的注释三种)
|
--------Template Data(模板数据,指html的内容)必须清楚,应用服务器并非将jsp文件直接把脚本内容替换一下就返回给客户端了,这种理解大错特错。应用服务器会针对每个jsp文件 生成一个相应的servlet类,又称java程序。servlet类一般在work目录下,具体位置很容易找到。
最终要理解的就是 jsp文件 一定会被 转化成一个类,jsp文件的jsp元素,注释,html数据 最终都被封装成一个servlet类,例如;public class _index1__jsp extends com.caucho.jsp.JavaPage{
private boolean _caucho_isDead; private static int GlobalVar1=0 ;
public void
_jspService(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException
{
....
out.write(_jsp_string8, 0, _jsp_string8.length);
....这个类 接收用户的请求参数,并产生输出与回送。
用户接收到的数据来自于这个servlet类,所以servlet类又称为 java程序,或称为 一个服务。
简言之: jsp文件对应的是一个服务,即servlet类,又称java程序。
附:当用户请求某个jsp文件,只有第一次请求时 会解释生成,编译,运行 java程序
以后请求此文件时直接从 此java程序返回结果,所以你可以看到第一次访问一个网页很慢,而以后奇快!
下面贴一个.jsp文件 与其对应的servlet(.java文件)
环境 resin + jdk 1.4.2.jsp文件 C:\Resin\webapps\test2\subpath1\index1.jsp 内容如下;
<% response.setHeader("Refresh","500") ;%>
<html>
<head>
<title>
welcome title
</title><body><%-- 最正规的注释,不会被翻译成java注释 --%><% // 被翻译成java注释 %>
<% /* 被翻译成java注释 */ %>
<% /** 被翻译成java注释 **/ %><!-- 发回到客户端的注释 -->
<!-- -->
<h3>
<!-- 全局变量 -->
<%! private static int GlobalVar1=0 ; %>
<%out.println("全局变量GlobalVar1的值:");%><%=GlobalVar1 %>
<%GlobalVar1++;%>
</h3><h3>
<!-- 局部变量 -->
<% int PrivateVar1=0 ; %>
<%out.println("局部变量PrivateVar1的值:");%><%=PrivateVar1 %>
<%PrivateVar1++;%>
</h3>
<h3>
<%out.println("hello,world");%>
</h3>
<h1>
当前时间
</h1>
<%=new java.util.Date() %><h3>
<%//=HelloWorld.GetString()%>
</h3></body></html>
==================================================================
对应的servlet类的源文件 :C:\Resin\webapps\test2\WEB-INF\work\_subpath1\_index1__jsp.java 由应用服务器自动生成,内容如下(贴不下,最后不重要的部分省略了)
======================================================================/*
* JSP generated by Resin 3.0.3 (built Mon Sep 22 15:54:15 PDT 2003)
*/package _subpath1;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.http.*;public class _index1__jsp extends com.caucho.jsp.JavaPage{
private boolean _caucho_isDead; private static int GlobalVar1=0 ;
public void
_jspService(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException
{
com.caucho.jsp.PageContextImpl pageContext = com.caucho.jsp.QJspFactory.allocatePageContext(this, request, response, null, true, 8192, true);
javax.servlet.jsp.JspWriter out = (javax.servlet.jsp.JspWriter) pageContext.getOut();
javax.servlet.ServletConfig config = getServletConfig();
javax.servlet.Servlet page = this;
javax.servlet.http.HttpSession session = pageContext.getSession();
javax.servlet.ServletContext application = pageContext.getServletContext();
response.setContentType("text/html");
try {
response.setHeader("Refresh","500") ;
out.write(_jsp_string0, 0, _jsp_string0.length);
out.write(_jsp_string1, 0, _jsp_string1.length);
// \u00b1\u00bb\u00b7\u00ad\u00d2\u00eb\u00b3\u00c9java\u00d7\u00a2\u00ca\u00cd
out.write(_jsp_string2, 0, _jsp_string2.length);
/* \u00b1\u00bb\u00b7\u00ad\u00d2\u00eb\u00b3\u00c9java\u00d7\u00a2\u00ca\u00cd */
out.write(_jsp_string2, 0, _jsp_string2.length);
/** \u00b1\u00bb\u00b7\u00ad\u00d2\u00eb\u00b3\u00c9java\u00d7\u00a2\u00ca\u00cd **/
out.write(_jsp_string3, 0, _jsp_string3.length);
out.write(_jsp_string2, 0, _jsp_string2.length);
out.println("\u00c8\u00ab\u00be\u00d6\u00b1\u00e4\u00c1\u00bfGlobalVar1\u00b5\u00c4\u00d6\u00b5:");
out.print((GlobalVar1 ));
out.write(_jsp_string2, 0, _jsp_string2.length);
GlobalVar1++;
out.write(_jsp_string4, 0, _jsp_string4.length);
int PrivateVar1=0 ;
out.write(_jsp_string2, 0, _jsp_string2.length);
out.println("\u00be\u00d6\u00b2\u00bf\u00b1\u00e4\u00c1\u00bfPrivateVar1\u00b5\u00c4\u00d6\u00b5:");
out.print((PrivateVar1 ));
out.write(_jsp_string2, 0, _jsp_string2.length);
PrivateVar1++;
out.write(_jsp_string5, 0, _jsp_string5.length);
out.println("hello,world");
out.write(_jsp_string6, 0, _jsp_string6.length);
out.print((new java.util.Date() ));
out.write(_jsp_string7, 0, _jsp_string7.length);
//=HelloWorld.GetString()
out.write(_jsp_string8, 0, _jsp_string8.length);
} catch (java.lang.Throwable _jsp_e) {
pageContext.handlePageException(_jsp_e);
} finally {
com.caucho.jsp.QJspFactory.freePageContext(pageContext);
}
} private com.caucho.java.LineMap _caucho_line_map;
private java.util.ArrayList _caucho_depends = new java.util.ArrayList(); public boolean _caucho_isModified()
{
if (_caucho_isDead)
return true;
if (com.caucho.util.CauchoSystem.getVersionId() != 1174304625)
return true;
for (int i = _caucho_depends.size() - 1; i >= 0; i--) {
com.caucho.make.Dependency depend;
depend = (com.caucho.make.Dependency) _caucho_depends.get(i);
if (depend.isModified())
return true;
}
return false;
} public long _caucho_lastModified()
{
return 0;
} public com.caucho.java.LineMap _caucho_getLineMap()
{
return _caucho_line_map;
} public void destroy()
{
_caucho_isDead = true;
super.destroy();
} public void init(com.caucho.java.LineMap lineMap,
com.caucho.vfs.Path appDir)
throws javax.servlet.ServletException
{
com.caucho.vfs.Path resinHome = com.caucho.util.CauchoSystem.getResinHome();
com.caucho.vfs.MergePath mergePath = new com.caucho.vfs.MergePath();
mergePath.addMergePath(appDir);
mergePath.addMergePath(resinHome);
com.caucho.loader.DynamicClassLoader loader;
loader = (com.caucho.loader.DynamicClassLoader) getClass().getClassLoader();
String resourcePath = loader.getResourcePathSpecificFirst();
mergePath.addClassPath(resourcePath);
_caucho_line_map = new com.caucho.java.LineMap("_index1__jsp.java", "foo");
_caucho_line_map.add("/subpath1/index1.jsp", 20, 13);
_caucho_line_map.add(1, 28);
_caucho_line_map.add(1, 28);
_caucho_line_map.add(12, 31);
_caucho_line_map.add(12, 31);
_caucho_line_map.add(13, 33);
_caucho_line_map.add(13, 33);
_caucho_line_map.add(14, 35);
_caucho_line_map.add(14, 35);
_caucho_line_map.add(20, 37);
_caucho_line_map.add(21, 38);
_caucho_line_map.add(21, 39);
_caucho_line_map.add(21, 40);
_caucho_line_map.add(22, 41);
_caucho_line_map.add(27, 43);
_caucho_line_map.add(27, 43);
_caucho_line_map.add(28, 45);
_caucho_line_map.add(28, 45);
_caucho_line_map.add(28, 46);
_caucho_line_map.add(28, 47);
_caucho_line_map.add(29, 48);
_caucho_line_map.add(34, 50);
_caucho_line_map.add(34, 50);
_caucho_line_map.add(39, 52);
_caucho_line_map.add(39, 53);
_caucho_line_map.add(42, 54);
_caucho_line_map.add(42, 54);
com.caucho.vfs.Depend depend;
depend = new com.caucho.vfs.Depend(mergePath.lookup(".//c:/resin/webapps/test2/subpath1/index1.jsp"), "ZuLzbop0USGXdISiNaF9Dg==", false);
_caucho_depends.add(depend);
} .....
小弟跟着你学习ing...