现在的位置: 首页 > 综合 > 正文

JSP学习日记 – 2

2014年02月03日 ⁄ 综合 ⁄ 共 1218字 ⁄ 字号 评论关闭

2005年11月28日:

这两天为了JSP文件存放位置的问题而烦恼。

如果是单独的JSP文件,放在TOMCAT的ROOT目录下就可以运行了。这个没有什么疑问。

问题是,如果把其中的某部份写成一个类,生成一个JAVA文件,那么这个文件要放哪里才可以用呢?

这两天我加了好多个Q群,没一个能回答(没几个人理我这个菜鸟)。上GOOLE也没找到相关说明。几乎绝望,几乎想放弃JSP。

终于给我找到一篇文章了,虽没直接说,但也解决了我的问题。

首先像我这样子的处理,就是使用了 JavaBean 的方法。要使用JavaBean,首先要生成一个类,把这个类用 Javac 编译,编译后把生成的 class 文件放到TOMCAT的 ROOT下的 WEB-INF/classes目录下。

最后,最关键的一点是:在配置完class文件后,TOMAT需要重新启动,这些JavaBean才能生效。

之前由于不知道这一点,尽管把该放的文件放在了正确的位置上,可是编译也是没有通过。

并且由此让我了解了JSP站点目录结构:

  1. WEB-INF:站点根目录下的WEB-INF目录是一个有重要意义的目录,它不仅像ASP。NET的BIN目录一样,是可执行的,而且也是外部不能访问的一个目录。在这里可以存放不能下载的文件,比如配置文件、组件、数据库文件、资源文件等。另外一点是,当使用getResource时,这个目录是资源文件的根目录。
  2. classes:在使用import时,WEB-INF里面的 classes 目录是 class 文件的根目录。
  3. JSP文件:可以存放在根目录下除了WEB-INF目录外的任意一层目录里,并可以被解析被读取。

编译后的 class 文件放到了classes目录下后,需要重启TOMCAT才能生效。这个对虚拟主机用户来讲是相当的不便,但同时我发现了一个解决的方法(不知道可不可取):

<%! %> 用于JSP声明, 在这里面可以定义一个或多个类,这点跟一般的JAVA类文件是不同的。

一般的JAVA类文件只能声明一个类,比如 hello.java 里面只能声明类: hello 而不能声明其他类,甚至文件名跟类名必须一致,大小写不同也不行。

而用<%! %>来定义类的话,可以把相关的类写在一起。

还有,更重要的认识是,这一部份的声明可以写到另一个JSP文件里。并且用 <%@ page include="xxx.jsp"%>或用<jsp:include file="xx.jsp"></jsp:include>来导入,就像ASP文件里的 <!-- #Include ... 命令一样。

实在不能重启TOMCAT的话,就用这个方法好了。

而且,从导入编译好的类 import 到导入文件 include 的改变不会很大。在以后条件许可的情况下,可以把外部的JSP文件编译成class文件,放到 classes 目录下,然后把主JSP文件里的 include 命令改换成 import命令即可。不会影响程序的布署。。

以上言论只是JSP初学者的体会,仅供参考。

抱歉!评论已关闭.