当前位置: 代码迷 >> Java Web开发 >> 请教struts的一个小问题
  详细解决方案

请教struts的一个小问题

热度:159   发布时间:2007-03-22 16:12:54.0
请教struts的一个小问题

参照精通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

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

搜索更多相关主题的帖子: struts  

----------------解决方案--------------------------------------------------------
看懂代码就行了, 没必要运行之。


File "/WEB-INF/struts-bean.tld" not found

----------------解决方案--------------------------------------------------------
web-xml看看标签配了没有
----------------解决方案--------------------------------------------------------


呵呵,提问二楼的: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>
谢谢了


----------------解决方案--------------------------------------------------------
jsp里也要引如标签
----------------解决方案--------------------------------------------------------
Missing application web.xml,using defaults only StandardEngine[Catalina].StandardHost[localhost].StandardContext[/helloapp]

----------------解决方案--------------------------------------------------------
哈哈,估计是打字打错了
----------------解决方案--------------------------------------------------------
.JSP页面里引用的标签和你所放的STRUTS相对目录匹配?
----------------解决方案--------------------------------------------------------

呵呵,谢谢各位了
问题已经解决了,问题比较多的说:
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>
呵呵,但愿我说的够明白了,呵呵


----------------解决方案--------------------------------------------------------
你的web.xml文件中有一个welcome-file这样的东西,来设置首页。
所以你直接输出项目名字就可以自转到你的JSP页面了
----------------解决方案--------------------------------------------------------
  相关解决方案