注册 登录
编程论坛 J2EE论坛

请教struts的一个小问题

ITMM 发布于 2007-03-22 16:12, 1388 次点击

参照精通struts.基于mvc的.java.web设计与开发这本书上面第二章的
小例子,helloapp应用打了一编,再运行的时候出现了问题
问题如下:
启动tomcat的时候有个信息显示如下:
信息:Missing application web.xml,using defaults only StandardEngine[Catalina].StandardHost[localhost].StandardContext[/helloapp]
把helloapp打包成helloapp.war后拷贝到E:\Tomcat 5.0\webapps\下以后
在浏览器中输入:http://localhost:8080/helloapp/helloapp/WebRoot/WEB-INF/hello.jsp以后
页面出错信息如下:

HTTP Status 500 -

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

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: File "/WEB-INF/struts-bean.tld" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:411)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:118)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:159)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:220)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Tomcat logs.


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

Apache Tomcat/5.0.18

小妹我是初次接触,不知道什么原因,请高手不吝赐教,先谢谢了

16 回复
#2
想你的天空2007-03-22 16:16
看懂代码就行了, 没必要运行之。


File "/WEB-INF/struts-bean.tld" not found
#3
黄袖标2007-03-22 16:31
web-xml看看标签配了没有
#4
ITMM2007-03-22 17:04


呵呵,提问二楼的:struts-bean.tld这个文件就在WEB-INF,这个目录下面,可是不知道为什么会出现找不到的文件的情况,先谢谢了
回答三楼的:,不好意思呢,不是很懂
照着书上的web-xml打了一遍,关于这个文件的说明如下:
配置文件web.xml应该对ActionServlet类进行配置,此外,还应该声明Web应用所使用的Struts标签库,本例中声明使用了三个标签库:Struts Bean,Struts HTML和Struts Logic标签库
这是web-xml的源文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems,Inc.//DTD Wen Application2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>HelloApp Struts Application</display-name>
<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>hello.jsp</welcome-file>
</welcome-file-list>

<!-- Struts Tag Library Descriptors-->
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</web-app>
谢谢了

#5
黄袖标2007-03-22 17:07
jsp里也要引如标签
#6
支离破碎2007-03-22 18:23
Missing application web.xml,using defaults only StandardEngine[Catalina].StandardHost[localhost].StandardContext[/helloapp]
#7
时空之蕊2007-03-22 21:10
哈哈,估计是打字打错了
#8
想你的天空2007-03-23 09:28
.JSP页面里引用的标签和你所放的STRUTS相对目录匹配?
#9
ITMM2007-03-23 14:12

呵呵,谢谢各位了
问题已经解决了,问题比较多的说:
1。好像有一些源文件确实是打错了
2。hello.jsp文件应该放到WebRoot文件里面,我当时放到WEB-INF里面去了
3。需要的struts-power.gif当时也没有放到WebRoot里面去
4。其中struts-config.xml文件里的设计图如下所示:

只有本站会员才能查看附件,请 登录

在浏览器里面输入:
http://localhost:8080/helloapp就可以正常显示了
不过还是不太明白,我的jsp文件明明是:hello.jsp
为什么却要输入helloapp项目名呢?然后再页面上输入一个名字后
页面变成:
http://localhost:8080/helloapp/HelloWorld.do
文件名变成HelloWorld.do,后缀名也变成 。do
同事说是因为我web.xml文件里,这句话的原因把hello.jsp映射成了HelloWorld.do的,相关代码如下:<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
呵呵,但愿我说的够明白了,呵呵

#10
支离破碎2007-03-23 15:14
你的web.xml文件中有一个welcome-file这样的东西,来设置首页。
所以你直接输出项目名字就可以自转到你的JSP页面了
#11
ITMM2007-03-23 15:28
呵呵,谢谢支离破碎
#12
支离破碎2007-03-23 15:51


还有这么多公司用struts..呵~

#13
ITMM2007-03-23 17:12
呵呵,你们公司也用的吗?
刚开始接触这个东东,
#14
支离破碎2007-03-23 17:35
我们公司不用这个东西。框架的东西都只是表层的,我们现在 这个模块在用JSF
#15
时空之蕊2007-03-23 17:36

:http://localhost:8080/helloapp/helloapp/WebRoot/WEB-INF/hello.jsp以后
看这个就知道你的问题大了阿,
第一次回帖看了那个错误File "/WEB-INF/struts-bean.tld" not found猜你的是打错了
这次看了这个:http://localhost:8080/helloapp/helloapp/WebRoot/WEB-INF/hello.jsp问题就大了
竟然有两个helloapp

不知道对于路径问题你们一般都怎么解决
我一般是使用那个创建jsp是保存变量path

#16
支离破碎2007-03-23 17:39
用框架的话有类可以直接得到当前的上下文环境的
#17
时空之蕊2007-03-23 17:45

可我说的是在jsp中解决路径问题,因为我的.do一般就是/XXX.do了,所以就定位到根路径下面去了,
我就用了那个
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
页面上就用这个basepath了
不知道有没有更好的办法!
上一楼的说的意思我还是不是很明白

[此贴子已经被作者于2007-3-23 17:46:09编辑过]

1