- 论坛徽章:
- 0
|
我目前正在学习jsp/servlet, 使用tomcat 4.1.29, jdk是:1.4.2_02
jdk,默认安装在/usr/java/j2sdk1.4.2_02下。
tomat 安装在/usr/local/server/tomcat,使用用户tomcat来管理这个服务器。
设置好了各种环境变量,而且已经能够运行jsp了。
但是在这里我有一个很难搞明白的问题。那就是bean和servlet小程序应该放在哪里。
有兄弟说是放在你的项目里的WEB-INF/classes目录下的。
直接将原程序拷到里面就ok了。
那么我现在的概念是这样的:任何bean和servlet小程序都放入到项目的WEB-INF/classes目录里的。
然后你可以通过如果下的url来访问你的servlet: ttp://127.0.0.1:8080/你的项目虚拟路径/servlet/你的servlet小程序名, 在jsp里通过直接引用bean的名字也可以访问bean,但是我象如下这样做,却出现了问题:
我新建了一个叫li的项目,然后向tomcat的conf目录里的server.xml文件中增加如下的行:
<Context path="/li" docBase="/home/ghw/workdir/li" debug="0" reloadable="true" workDir="/home/ghw/workdir/li/work">;
</Context>;
然后在/home/ghw/workdir/li这个目录下新建立如下的目录:
mkdir WEB-INF
cd WEB-INF
mkdir classes
在这里我们为了麻烦和减少错误,我直接将tomcat中自带的一个例子examples/WEB-INF/classes/HelloWorldExample.java拷到/home/ghw/workdir/lib/WEB-INF/classes中去。
我为了进一步得到些什么进入到这个目录里:/home/ghw/workdir/li/WEB-INF
手工编写了一个web.xml
内容如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>;
<web-app>;
<servlet>;
<servlet-name>;HelloWorldExample</servlet-name>;
<servlet-class>;HelloWorldExample</servlet-class>;
</servlet>;
<servlet-mapping>;
<servlet-name>;HelloWorldExample</servlet-name>;
<url-pattern>;/servlet/*</url-pattern>;
</servlet-mapping>;
</web-app>;
存盘后退出。
然后启动tomcat,
在浏览器里这样访问jsp没有任何问题,但是访问servlet,出现如下错误:
http://127.0.0.1:8080/li/servlet/HelloWorldExample
type Status report
message Servlet HelloWorldExample is currently unavailable
description The requested service (Servlet HelloWorldExample is currently unavailable) is not currently available.
然后我为了搞清楚到底是怎么回事。我去examples这个应用下,进入它的WEB-INF里,删除掉web.xml这个文件,然后运行servlet,运行正常。看来不关web.xml的事。
然后我将examples这个目录改名为myjsp,
删除掉tomcat 的conf里server.xml里关于examples的定义。自己手工加入一段:
<Context path="/myjsp" docBase = "myjsp" debug="0" reloadable="true" />;
保存后重启动tomcat,使用:http://localhost:8080/myjsp/servlet/HelloWorldExamples
也可以访问。那为什么我自己的项目就是不能访问呢?
问题到底出在哪里呢?是不是我的环境变量里没有引用servlet.jar这个位置呢?
echo $CLASSPAH 的确没有包括这个servlet的位置,但是这个和servlet有关系吗?
我的tomcat不是已经启动了吗?
现在我真是很困惑,请java高手指教。谢谢。 |
|