分享
 
 
 

初恋struts

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

标题:初恋struts

关键字:JSP struts MVC Apache Tomcat

作者:jrq

内容:

struts是男是女,是雌是雄,是什么花花草草,是什么东东就不多说了。

近日尝试做一Hello Struts,记录下遇到的些许问题,权且备忘。

如另对初学者有些许帮助,则善莫大焉,聊作一慰。[:D]

BTW:“初恋struts” means “初练struts”(咳咳~~ 笔误笔误~~ [:D])

如下这些文字仅适合初恋者。如果是热恋或已婚者,那么就没有读下去的必要了。

一、Win2k + JDK1.4 + Apache Tomcat 4.1.27 + jakarta-struts-1.1 环境

本例新建struts项目应用的存放路径为:TOMCAT_HOME\webapps\ROOT\StrutsWeb 。

(TOMCAT_HOME是Apache Tomcat 4.1.27在服务器的安装路径,根据具体情况而有所不同,StrutsWeb即是一个struts项目应用的保存路径)

1.访问JSP页面:http://127.0.0.1:8080/StrutsWeb/index.jsp ,出现类似下面的错误提示:

“org.apache.jasper.JasperException: File "/WEB-INF/struts-bean.tld" not found”

“org.apache.jasper.JasperException: File "/WEB-INF/struts-html.tld" not found”

解决办法:

*1*.

先检查struts应用的标签文件的配置情况,对应\jakarta-struts-1.1\lib\中的*.tld文件,看看\StrutsWeb\WEB-INF\中的*.tld文件是否完整。

如果不全,则需要从\jakarta-struts-1.1\lib\中,把全部*.tld文件copy至\StrutsWeb\WEB-INF\中。

然后重新启动Apache Tomcat,看看效果如何。

*.tld是标签库描述器文件,它们描述了多个struts标记库中的自定义标签。

*2*.

如果确认struts项目的标签文件配置无误,那么,在一般情况下,是需要把struts项目的这个WEB应用在Tomcat的服务应用中单独描述出来,

即需修改TOMAT_HOME\conf\server.xml文件,在server.xml中找到如下行:

<!-- Tomcat Root Context -->

<!--

<Context path="" docBase="ROOT" debug="0"/>

-->

然后在其下面加上这句:

<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

保存server.xml,然后重新启动Apache Tomcat,这样就可以访问这个WEB应用了。

即可这样访问:http://127.0.0.1:8080/mystruts/

http://127.0.0.1:8080/mystruts/index.jsp。

注意:“TOMCAT_HOME”的具体含义如前所述,是根据本机的情况而定的。

2.访问JSP页面:http://127.0.0.1:8080/mystruts/index.jsp ,出现如下的错误提示:

“org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection”

解决办法:

*1*

对应\jakarta-struts-1.1\lib\中的*.jar文件(struts1.1共有10个*.jar文件),看看\StrutsWeb\WEB-INF\lib\中的*.jar文件是否完整。

如果在\StrutsWeb\WEB-INF\lib\中只有一个struts.jar,那么将其他的*.jar文件也copy到\StrutsWeb\WEB-INF\lib\中。

然后重新启动Apache Tomcat即可访问。

struts.jar是一个重要的文件,它包含了struts中的所有Java类。

*2*

如果经过上面的一步还没有搞定,那么请耐心的检查或修改\StrutsWeb\WEB-INF\中的struts-config.xml配置文件。

看看struts配置情况是否写错,action-mappings的配置是否写错。

一定要注意区分字母的大小写。

请再检查一遍。

然后请再检查一遍。

不要烦躁,一定要像对待初恋情人一样对待它,不然会死的很难堪!

一定要好好检查。

这个MVC中的C很要命的,流程控制全靠它了,一定要小心呵护的。[:D]

还有,记得修改完毕后重新启动Apache Tomcat。

*3*

我在网上看到有人对这个问题说“试了千百回,改了千百次,就是不知道什么原因”。

如果你也恰好和struts是初恋,也恰好试了千百回,改了千百次,

“Cannot find ActionMappings or ActionFormBeans collection”的错误仍然涛声依旧,

那么,请不要灰心,

相信我,胜利的喜悦你马上就能体会到!

因为,这里有一个毕杀绝技!!!!!

请按照如下操作:

打开TOMAT_HOME\conf\server.xml文件,找到在上面提到过的加入WEB应用的那一行:

<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

然后对其修改成为:

<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true" privileged="true"/>

这样就加上一个参数:privileged="true",这个参数是至关重要的。

(我花N多时间找了N多帖子问了N个人才搞定的,可见struts的初恋有多辛苦了!! [:(])

然后重新启动Apache Tomcat,这样访问JSP页面就没有问题了。[:D]

*4*

我在网上查找了一些struts应用的配置说明资料,一些配置资料上只提到把struts.jar这个文件copy到\WEB-INF\lib\中,

而并没有说需要把sturts的全部*.jar文件进行copy。

上面提到过,struts.jar包含了struts中的所有Java类。故我有此一试。

(当然,如果连struts.jar都没有了,那就没有搞头了。[:(] )

我只把struts.jar文件copy到\StrutsWeb\WEB-INF\lib\中,然后启动Apache Tomcat(当然,web.xml和struts-config.xml已经配置完毕)。

一试,果然不爽。

访问JSP页面时,看到提示错误:

“org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection”

傻眼了。

又折腾了半天,发现上面提到的privileged="true"在这种情况下也可以发挥作用,

即修改server.xml文件,在<Context>的描述中加上参数privileged="true",使之变成这样:

<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true" privileged="true"/>

这样就可以访问JSP页面并且运行无误,没有错误提示了。[^ō^]

所以可以得出这样一个东东:

如果在\StrutsWeb\WEB-INF\lib\中只有一个struts.jar而没有其他的*.jar文件,那么,在server.xml文件中把相对的WEB应用的描述进行修改,在其中加入privileged="true"参数,就可以使struts项目的应用正常运行且访问无误。

二、Win2k + JDK1.4 + Apache Tomcat 5.0.13 + jakarta-struts-1.1 环境

用Tomcat5作为JSP的容器,上述问题在struts中也会经常遇到,解决方法也都大致相同,privileged="true"对Tomcat5也同样有效。[:D]

下面主要说一下不同的地方。

平时对Apache Tomcat没有仔细研究,这次发现了几点,简略记录一下。

*1*

与Apache Tomcat4比较,Apache Tomcat5在其conf文件夹中增加了Catalina目录及子目录,其详细路径为:TOMCAT_HOME\conf\Catalina\localhost\,在localhost文件夹中全部是*.xml文件。

每个*.xml文件对应一个Tomcat的WEB应用的名字。

localhost文件夹中,Apache Tomcat5自动生成的有两个文件,即admin.xml和manager.xml文件。

当Apache Tomcat5启动后,就可以这样访问了:

http://127.0.0.1:8080/admin/

http://127.0.0.1:8080/manager/

其中,访问http://127.0.0.1:8080/admin/ ,通过用户名和密码的验证后,就可以进入Tomcat的WEB服务管理器(TOMCAT WEBSERVER ADMINISTRATION TOOL)了。

*2*

在Tomcat4中新增一个WEB应用项目的访问,是在TOMAT_HOME\conf\server.xml文件中增加一个<Context>描述,在server.xml中找到如下行:

<!-- Tomcat Root Context -->

<!--

<Context path="" docBase="ROOT" debug="0"/>

-->

然后在其下面加上这句:

<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

保存server.xml后重新启动Apache Tomcat4,就可以通过http://127.0.0.1:8080/mystruts/ 来访问这个WEB应用了。

在Tomcat5中同样的也可以这么做。

同样的,在TOMAT_HOME\conf\server.xml文件中增加一个<Context>描述,重新启动Tomcat服务后就可以用来访问了。

需要特别指出的是,当在在Tomcat5的server.xml文件中增加一个<Context>描述后,重新启动Tomcat时,会自动在TOMCAT_HOME\conf\Catalina\localhost\路径下生成一个xml文件,这个xml文件的名称和<Context>描述中所写的WEB应用的名字是一样的。

如果server.xml文件中的这个<Context>描述有所改动的话(增加属性或修改属性),重新启动Tomcat时,这些改动变化都会及时的反映在同名的xml文件中(这样就做到了同步一致)。

例如上面在server.xml中所写的

<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

当Tomcat5启动后,会在\Catalina\localhost\下生成一个名字为“mystruts.xml”的文件。

其内容和server.xml中所写的一样,为:

<Context docBase="TOMCAT_HOME/webapps/ROOT/StrutsWeb" path="/mystruts" reloadable="true">

</Context>

所以,我们可以这样说:如果要在Apache Tomcat5中新增WEB应用服务的话,就可以直接在TOMCAT_HOME\conf\Catalina\localhost\路径下编辑生成一个xml文件,在这个xml文件中写上相对应的<Context>描述即可,而不需要在server.xml中增加或编辑其他东东了。[^ō^]

*3*

另外,需要说明的是,Apache Tomcat正常安装后的启动方式有多个:

** 可以在TOMCAT_HOME\bin\中点击startup.bat来启动Tomcat服务。

** 可以在“开始”-->“程序”-->“Apache Tomcat”菜单中点击“Start Tomcat”来运行Tomcat服务。

但是,Tomcat4和Tomcat5的服务运行形式是不一样的。

Tomcat4无论从“startup.bat”点击运行还是从“Start Tomcat”点击运行,都会出现黑屏白字的命令提示符窗口(类DOS窗口),用来提示说明Tomcat服务的运行情况和一些日志信息。

Tomcat5从“startup.bat”点击运行后,出现的是黑屏白字的命令提示符窗口,而从“Start Tomcat”点击运行后,服务窗口不会出现,而只会在屏幕的右下方出现一个带绿色三角的托盘图标([:D]乍一看,这个图标和MS SQLSERVER服务管理器的图标几乎一模一样)。

*4*

使用Apache Tomcat5做服务,特别需要指出的是,如果在TOMAT_HOME\conf\server.xml文件中增加一个<Context>描述,

用“startup.bat”方式启动Tomcat服务时,在命令提示符窗口上会显示出如下信息(但是不会影响struts的使用)

------------------------------

警告: Error storing config file

java.io.FileNotFoundException: ..\..\conf\Catalina\localhost\mystruts.xml (系统找

不到指定的路径。)

------------------------------

并且\Catalina\localhost\下对应的xml文件不会得到更新。

从“Start Tomcat”点击运行Tomcat5服务是不会有这种情况的(这个可以察看Tomcat的日志文件)。

*5*

再来关注一下<Context>描述中的参数“privileged="true"”。

在路径TOMCAT_HOME\conf\Catalina\localhost\下,找到Apache Tomcat5自动生成的有两个文件,即admin.xml和manager.xml文件。

打开xml文件,能分别找到如下内容:

------------------------------

<Context path="/admin" docBase="../server/webapps/admin"

debug="0" privileged="true">

</Context>

<Context path="/manager" docBase="../server/webapps/manager"

debug="0" privileged="true">

</Context>

------------------------------

呵呵,看明白了吗?

Apache Tomcat5自动生成的xml文件中,对<Context>的描述中,都有一个参数,即privileged="true" 。

[完毕]

By jrq

2004年10月19日夜 于石市

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有