随笔-34  评论-1965  文章-0  trackbacks-0

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:

  • MVC 2模型的使用
  • 功能齐全的标志库(Tag Library)
  • 开放源代码

但是,所谓“金无赤金,人无完人”,Struts自身也有不少的缺点:

  • 需要编写的代码过多,容易引起“类爆炸”
  • 单元测试困难

这些缺点随着Web的发展越来越明显。这就促生了Struts 2.0,它的诞生能很好的解决上述问题。 好啦,废话就不多说了,现在就让我们感受一下的Struts 2.0的魅力吧。

  1. 搭建开发和运行环境
    1. 到Apache下载Struts 2.0包

    2. 打开Eclipse 3.2新建Web工程

      点击菜单File\New\Project,出现如图1所示对话框
      图1 新建工程对话框
      图1 新建工程对话框
      选择Web\Dynamic Web Project,点击“Next”,出现图2对话框

      图2 新建动态Web工程对话框
      图2 新建动态Web工程对话框
      在“Project Name”中键入Struts2_HelloWorld,点击“New”,出现以下对话框

      图3 新建服务器运行时对话框
      图3 新建服务器运行时对话框
      选择“Apache\Apache Tomat v5.5”,点击“Next”,出现以下对话框

      图4新建服务器运行时对话框
      图4新建服务器运行时对话框
      点击“Finish”,关闭对话框。

    3. 将Struts 2.0 lib下的jar文件加到工程的构建路径(build path)

      图5 Struts 2.0的lib目录
      图5 Struts 2.0的lib目录
      按ctr+a全选,复制,再转到Eclipse窗口,在“Project Explorer”子窗口中选中Struts2_HelloWorld\WebContent\WEB-INF\lib,然后粘贴。经过Eclipse自动刷新“Project Explorer”子窗口,刚才所粘贴的jar文件应该会出现在Struts2_HelloWorld\Java Resources: src\Libraries\Web App Libraries下,如图6所示:

      图6 Project Explorer子窗口
      图6 Project Explorer子窗口

    4. 打开web.xml文件,将其修改为以下代码:
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
      <web-app>
          
      <display-name>Struts 2.0 Hello World</display-name>
          
      <filter>
              
      <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
          
      </filter>
          
      <filter-mapping>
              
      <filter-name>struts2</filter-name>
              
      <url-pattern>/*</url-pattern>
          
      </filter-mapping>
          
      <welcome-file-list>
              
      <welcome-file>index.html</welcome-file>
          
      </welcome-file-list>
      </web-app>

    5. 新建struts.xml文件

      右键点击,Struts2_HelloWorld\Java Resources: src,出现如图7所示菜单
      图7 新建Other菜单
      图7 新建Other菜单
      点击“Other”,出现新建对话框,如图8所示

      图8 新建对话框
      图8 新建对话框
      点击“Next”,出现新建文件对话框,如图9所示

      图9 新建文件对话框
      图9 新建文件对话框
      在“File name”中键入sturts.xml,点击“Finish”,然后将struts.xml的内容修改为:

      <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
      >
      <struts>
          
      <include file="struts-default.xml"/>
      </struts>

    6. 新建index.html文件

      右键点击Struts2_HelloWorld\WebContent,出现如图10所示的菜单
      图10 新建Other菜单
      图10 新建Other菜单
      点击“Other”,出现新建对话框,如图11所示

      图11 新建对话框
      图11 新建对话框
      选择Web\HTML,点击“Next”出现如图12所示的对话框

      图12 新建HTML页面对话框
      图12 新建HTML页面对话框
      在“File Name”中键入index.html,点击“Next”,出现如图13所示的对话框

      图13 模板选择对话框
      图13 模板选择对话框
      点击“Finish”,将index.html的内容修改为以下内容:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Hello World</title>
      </head>
      <body>
      <h3>Hello World!</h3>
      </body>
      </html>

    7. 将应用程序打包到tomcat上

      右键点击Struts_HelloWorld,出现如图14所示的菜单
      图14 工程菜单
      图14 工程菜单
      点击“Export\WAR file”,出现如图15所示的对话框

      图15 输出对话框
      图15 输出对话框
      选择“Web\WAR file”,点击“Next”,出现如图16所示的对话框

      图16 输出路径对话框
      图16 输出路径对话框
      输入war文件的路径(如%tomcat%\webapps\Struts2_HelloWorld.war),点击“Finish”关闭对话框。

    8. 启动tomcat,运行应用程序

      打开你的Internet Explorer,键入http://localhost:8080/Struts2_HelloWorld/,窗口输出如图17所示
      图17 Hello World窗口
      图17 Hello World窗口

  2. 第一个Struts 2.0应用程序——Hello World
    1. 新建类包(package)

      右键点击Struts2_HelloWorld\Java Resources: src,出现如图18所示菜单
      图18 新建菜单
      图18 新建菜单"
      点击“New\Package”,出现如图19所示对话框

      图19新建Java类包对话框
      图19新建Java类包对话框
      在“Name”键入tutorial,点击“Finish”关闭对话框。

    2. 新建HelloWorld.java文件

      右键点击Struts2_HelloWorld\Java Resources: src\tutorial,出现如图20所示菜单
      图20 新建菜单
      图20 新建菜单
      点击“New\Class”,出现如图21所示对话框

      图21 新建Java类对话框
      图21 新建Java类对话框
      在“Name”中键入HelloWorld,在“Superclass”中键入com.opensymphony.xwork2.ActionSupport,点击“Finish”关闭对话框。将HelloWorld.java的内容修改为:

      package tutorial;

      import com.opensymphony.xwork2.ActionSupport;

      public class HelloWorld extends ActionSupport {
          
      private String name;
          
          
      public String getName() {
              
      return name;
          }

          
          
      public void setName(String name) {
              
      this.name = name;
          }

          
          
      public String execute() {
              name 
      = "Hello, " + name + "!"
              
      return SUCCESS;
          }

      }

    3. 在struts.xml中添加action映射(mapping)
      <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
      >
      <struts>
          
      <include file="struts-default.xml"/>
          
      <package name="tutorial" extends="struts-default">
              
      <action name="HelloWorld" class="tutorial.HelloWorld">
                  
      <result>HelloWorld.jsp</result>
              
      </action>
          
      </package>
      </struts>

    4. 新建SayHello.jsp

      参考“新建index.html文件”步骤,弹出如图22所示对话框
      图22 新建对话框
      图22 新建对话框
      点击“Next”, 进入下一步,如图23所示

      图23 新建JSP对话框
      图23 新建JSP对话框
      在“File name”键入SayHello.jsp,点击“Next”进入下一步,如图24所示

      图24 模板选择对话框
      图24 模板选择对话框
      点击“Finish”关闭对话框,并将SayHello.jsp的内容修改为:

      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
          
      <head>
              
      <title>Say Hello</title>
          
      </head>
          
      <body>
              
      <h3>Say "Hello" to: </h3>
              
      <s:form action="HelloWorld">
                  Name: 
      <s:textfield name="name" />
                  
      <s:submit />
              
      </s:form>
          
      </body>
      </html>

    5. 新建HelloWorld.jsp(请参考上一步),HelloWorld.jsp的内容为:
      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib prefix="s" uri="/struts-tags" %>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
          
      <head>
              
      <title>Hello</title>
          
      </head>
          
      <body>
              
      <h3><s:property value="name" /></h3>
          
      </body>
      </html>

    6. 重新打包发布应用程序

      先停止tomcat, 再将tomcat里webapps下的Struts2_HelloWorld.war和Struts2_HelloWorld文件夹删除,参照“将应用程序打包到tomcat上”重新发布应用程序。

    7. 启动tomcat,运行测试

      打开Internet Explorer,键入http://localhost:8080/Struts2_HelloWorld/SayHello.jsp,窗口输出如图25所示
      图25 SayHello.jsp
      图25 SayHello.jsp
      在“Name”键入字符串(如World),点击Submit,转到HelloWorld.jsp页面,如图26所示

      图26 HelloWorld.jsp
      图26 HelloWorld.jsp

  3. 单元测试Hello World

    在文章开始的时候提及,单元测试困难是Struts一大缺点。现在让我们在体验一下,在Struts 2.0中是如何进行测试的。

    1. 新建JUnit单元测试

      右键点击Struts2_HelloWorld\Java Resources: src\tutorial,弹出如图27所示对话框
      图27 新建菜单
      图27 新建菜单
      点击“Next\Other”

      图28 新建对话框
      图28 新建对话框
      选择“Java\JUnit\JUnit Test Case”,点击“Next”

      图29 新建JUnit 测试用例对话框
      图29 新建JUnit 测试用例对话框
      选择“New JUnit 4 test”,在“Name”中键入HelloWorldTest,在“Class under test”键入tutorial.HelloWorld,点击“Next”

      图30 选择方法对话框
      图30 选择方法对话框
      选中HelloWorld\execute方法,点击Finish。如果生成的HelloWorldTest.java文件的图标(Icon)出现红色交叉标志,请进行以下步骤添加JUnit 4的jar包。

      右键点击Struts2_HelloWorld,出现如图所示菜单。 图31 新建菜单
      图31 新建菜单
      点击“Build Path\Add Libararis”,弹出图32对话框

      图32 添加库对话框
      图32 添加库对话框
      选中“JUnit”,点击“Next”

      图33 选择版本对话框
      图33 选择版本对话框
      选择“JUnit 4”,点击“Finish”关闭对话框,并将HelloWorldTest.java的内容修改为:

      package tutorial;

      import static org.junit.Assert.assertTrue;

      import org.junit.Test;

      import com.opensymphony.xwork2.ActionSupport;

      public class HelloWorldTest {

          @Test
          
      public void testExecute() {
              HelloWorld hello 
      = new HelloWorld();
              hello.setName(
      "World");
              String result 
      = hello.execute();
              
              assertTrue(
      "Expected a success result!", ActionSupport.SUCCESS.equals(result));
              
              
      final String msg = "Hello, World!";
              assertTrue(
      "Expected the default message!", msg.equals(hello.getName()));
          }


      }

    2. 运行单元测试

      右键点击Struts2_HelloWorld\Java Resources: src\tutorial\HelloWorldTest.java,弹出如图34所示菜单
      图34 运行为菜单
      图34 运行为菜单
      点击“Run As\JUnit Test”,出现JUnit子窗口如图35所示

      图35 JUnit子窗口
      图35 JUnit子窗口
      图35的绿色矩形表示,所有单元测试通过。

  4. 总结

    上面的例子简单地演示了,Web 应用程序的基本操作,也即是,页面输入->Action处理->再输出到另外页面。Struts 2.0的简单易用、方便测试相信也会给大家留下不错的印象吧。我相信,Struts 2.0作为一个全新的Web架构,将会再次掀起Web开发的热潮。 不过,Struts 2.0还在测试中,正式版的发布还需些时日,所以文档方面可能有所欠缺。请大家继续留意我的博客,我会尽我所能为大家写更多关于Struts 2.0的文章。

posted on 2006-10-10 18:35 Max 阅读(125898) 评论(345)  编辑  收藏 所属分类: Struts 2.0系列
评论共4页: 上一页 1 2 3 4 下一页 

评论:
# re: 为Struts 2.0做好准备 2007-07-20 16:44 | jarwang
还一点,是这样的.前二次按submit中文绝对乱码.但有时连续提交三次后,就正常了..非常奇怪...  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-07-24 00:03 | Max
# re: 为Struts 2.0做好准备[未登录] 2007-07-25 09:48 | Yong
是不是必须在Tomcat 5.5 上进行运行  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-07-25 09:51 | Yong
严重:Error filterStart

严重:Content[/Struts2_HelloWorld]startup failed due to previous errors

tomcat 5.0 或5.5下都出现这个问题

希望能给点解决意见   回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-07-25 10:10 | Yong
严重: Exception starting filter struts2
java.lang.NoClassDefFoundError: com/opensymphony/util/ClassLoaderUtil
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:241)
at org.apache.struts2.dispatcher.Dispatcher.<init>(Dispatcher.java:127)
at org.apache.struts2.dispatcher.FilterDispatcher.createDispatcher(FilterDispatcher.java:379)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:160)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:221)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:78)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3635)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4222)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
2007-7-25 10:03:27 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2007-7-25 10:03:27 org.apache.catalina.core.StandardContext start
严重: Context [/Struts2_HelloWorld1] startup failed due to previous errors

又试了一次后出现的,Tomcat 为5.5的  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-07-25 23:42 | Max
@Yong
少了一些包:xwork-2.0.3.jar,请检查你的Build Path。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-01 17:15 | 地带
写的简单明了,不过刚开始看有点吃力,你写的只是他的创建过程,具体的流程原理何不也来个简单的介绍呢?
支持你!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-02 18:55 | 陈利
您好,我照着示例做了,别的一切正常,就是打好war包后,启动tomcat服务器的时候,有警告信息:Could not parse struts.local setting,我上网上搜索了一下,也找不到解决的办法。您能看一下吗?  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-04 01:33 | jueqinguzhu
请问 我按照上面的做了
却是这:
java.lang.NoClassDefFoundError: com/opensymphony/util/ClassLoaderUtil
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:241)
at org.apache.struts2.dispatcher.Dispatcher.<init>(Dispatcher.java:127)
at org.apache.struts2.dispatcher.FilterDispatcher.createDispatcher(FilterDispatcher.java:379)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:160)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4340)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1206)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:619)
2007-8-4 1:27:03 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2007-8-4 1:27:03 org.apache.catalina.core.StandardContext start
严重: Context [/struts2] startup failed due to previous errors
这是什么原因啊  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-04 01:41 | jueqinguzhu
我把2.0.0下的包全部导进去才没有错误
为什么和你们说的不一样呢
  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-08 10:50 | 爱好者
我才开始学习STRUTS2,测试了以上的案例有一些基础的体会!谢谢!不知道有没有更多的相关的中文资料可以提供哦!或提供网址下载!
我也会在这里一节一节的学习下去,学习更多的知识,谢谢了哈!!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-09 14:01 | 5006benben
@maomao
你的版本有问题~~!!
你用的是tomcat5.0的话,struts.xml和web.xml里的文件格式是一致的,要是不一致就会出错!!
我就犯了那个错误,弄了半天!
你下一个tomcat5.5改一下就行了!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-09 17:12 | bbo
jar引用多了  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-10 00:19 | 初学
/testresin3/HelloWorld was not found on this server.   回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-13 10:27 | 風雲の軌跡
在页面的<head>标签中加入<s:head /> 就可以了
...
<head>
<title>Struts 2 Cool Tags - Others</title>
<s:head />
    ...
</head>
...
具体我也不是很了解,我也是在网上搜到的这个解决方法,但是很有用,在这个Bolg上也有相关的文章:
http://www.blogjava.net/max/archive/2007/06/12/123682.html
这个Bolg写的非常好,我觉得里面有许多我初学时所遇到疑惑的解决方法!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-13 14:57 | totti
我也是复制 struts.xml文件名称有错误。。。
找了半天原因,复制惹的祸呀。。。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-16 13:41 |
写的很实用 支持 继续关注!!  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-08-17 09:34 | cc
第一次看 对着配置 我启动后说找不到struts.properties
我后来自己加上去 就好了
还有就是我下载的struts2.0.6里面的包和2.0.0不一样呀
没办法下载的2.0.0才配置的
东西好,谢谢
qq:281663415  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-08-17 11:03 | cc
HelloWord.jsp
打印数据加一段,改成:
<h3><s:property value="name" /></h3>
<%
out.print( request.getAttribute("name") );
%>
会发现第一次提交SayyHellow.jsp
打印出来是的:Hello, 32!
null,
然后不关闭浏览器后退,在执行提交表单
打印出来的就是:Hello, 32!
Hello, 32!
而且 就只有第一次是这样,后面就不会是null了  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-18 18:20 | Elven
Max,你好!
我刚开始学习使用Struts2.0,很多地方不明白,还望赐教!
我一步一步按照你的方法去做的(除了Struts用的是2.0.9版本),但是我在做一个简单的还没有用到Struts2.0的HelloWorld的web应用时,我的tomcat就提示我HTTP Status 404 -错误,请问这是怎么回事?  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-20 14:16 | Elven
max,你好!
我按照你的方法那样做了,但是怎么要提示HTTP Status 404找不到源的错误。
不管是打包到Tomcat下,还是用tomcat虚拟目录建立web应用,都会提示这样的错误。
你能帮我想一想,究竟在哪一步出错了吗?
我真的太想把Struts2学会了,你能帮帮我吗?
万分感谢!!!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-22 15:09 |
hao好人哪  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-22 15:23 | mybygao
Tomcat要5.5版的。
apache网站上有例子。  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-08-22 17:37 | Mike
检查了一下,没有复制错误,也没有代码错误。但是调用helloworld时报404
description The requested resource (/Struts2/HelloWorld) is not available.

struts.xml:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="tutorial" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result>HelloWorld.jsp</result>
</action>
</package>
</struts>
web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Struts 2.0 Hello World</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-22 18:01 | Elven
max这段时间去哪了?
怎么都不理我们这些Struts2.0的初学者了?  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-22 22:46 | Max
@Elven
@Mike
对不起,这段时间比较忙,所以没有来得及回来大家的评论。
因为写这篇文章的时候,我的写作经验还比较浅,所以有些地方不太明白。过两天有时间,我会重新写这篇文章的。
请大家稍等。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-08-22 22:52 | Elven
谢谢你,max!期待你写出更有水平,更全面的文章!  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-08-23 11:18 | Mike
问题原因找到了,因为sayhello.jsp的<s:form action="HelloWorld">我加了一个“/”<s:form action="/HelloWorld">,所以容器说找不到,爷爷的,但是我还是想知道为什么它找不到,max能解释一下么,谢谢  回复  更多评论
  
#  为Struts 2.0做好准备 2007-08-24 21:46 | yuxiang
请问我
图25 SayHello.jsp
当我提交时,报以下错误

type Status report

message /TestStruts2/HelloWorld

description The requested resource (/TestStruts2/HelloWorld) is not available.

按理来说.他报的错误在我们一般的情况下是正确的
但是我们用的struts 里面有配置action=HelloWorld
就跳转到/HelloWorld.jsp页面的啊???
还请帮忙!
有问题得不到解决真是很烦.
  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-08-25 11:03 | fish
添加Junit的classlibrary时,选择Junit4时,显示JUnit 4 requires a Java 5 project
什么问题呀  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-08-31 10:45 | jean
求助小弟我遇到一個問題困擾好久
發生再重複deploy因為struts2-core-2.0.9.jar(再使用中無法刪除)
我用Tomcat5 跟 sun Applicion server8.2都一樣
該如何是好請幫幫忙謝謝???

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-04 17:15 | cg
少一个包:oscore-2.2.4.jar  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-04 22:17 | idodolook2007
警告: Could not find or error in struts.properties
java.lang.IllegalStateException: struts.properties missing
at org.apache.struts2.config.PropertiesSettings.<init>(PropertiesSettings.java:49)
at org.apache.struts2.config.DefaultSettings.<init>(DefaultSettings.java:52)
at org.apache.struts2.config.Settings.getDefaultInstance(Settings.java:202)
at org.apache.struts2.config.Settings.getInstance(Settings.java:76)
at org.apache.struts2.config.Settings.get(Settings.java:134)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:179)
at org.apache.struts2.dispatcher.Dispatcher.<init>(Dispatcher.java:143)
at org.apache.struts2.dispatcher.FilterDispatcher.createDispatcher(FilterDispatcher.java:397)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:163)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:304)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:77)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3600)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4193)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:809)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:698)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
你好,我已经在src下添加了struts.properties文件,却还是报错,因此想问问是什么原因引起的?谢谢  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-05 16:18 | jean
@cg

你是說我要把oscore-2.2.4.jar放到lib裡嗎??
我有放進去了可是重新deploy
struts2-core-2.0.9.jar還是被lock
oscore-2.2.4.jar的作用為何可否說明一下
謝謝  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-05 17:51 | 无为
为什么web.xml里<?xml version="1.0" encoding="ISO-8859-1"?>的字符集是"ISO-8859-1"而其它文件里用的是"UTF-8"呀?有什么区别呀.还有为什么在JSP页面里用"ISO-8859-1"就不能保存,用"UTF-8"就可以呀?  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-10 10:45 | calm feeling
2.09
错误404,闷啊!!大哥救命啊!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-10 15:14 | calm feeling
问题解决,哈哈  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-11 16:39 | 小牛
@就
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
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)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:234)


root cause

java.lang.NullPointerException
org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:701)
org.apache.struts2.components.UIBean.end(UIBean.java:448)
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:35)
org.apache.jsp.SayHello_jsp._jspx_meth_s_textfield_0(SayHello_jsp.java:138)
org.apache.jsp.SayHello_jsp._jspx_meth_s_form_0(SayHello_jsp.java:107)
org.apache.jsp.SayHello_jsp._jspService(SayHello_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
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)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:234)


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

在输入SayHello.jsp页面时出现这个错误!
  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-12 20:49 | Elven
@calm feeling
你的404错误是怎么解决的啊?
我的也一直提示404错误。
我怀疑是web.xml出了问题,但是又不知道怎么改?
求助解决办法。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-13 09:42 | ttl_web (ttl_web@yahoo.com.cn)
谢谢!

通过您的这篇文章,使我对struts2 doc中“http://struts.apache.org/2.x/docs/hello-world.html”有了实际的认识

再次感谢!!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-13 23:14 | xun
请问下面的问题怎么解决??

严重: Exception starting filter struts2
Error loading configuration file struts-default.xml - Class: com.opensymphony.xwork2.config.providers.XmlConfigurationProvider
File: XmlConfigurationProvider.java
Method: loadConfigurationFiles
Line: 850 - com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java:850:-1
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:135)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:582)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NullPointerException
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:850)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)
... 33 more
2007-9-13 23:06:10 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2007-9-13 23:06:10 org.apache.catalina.core.StandardContext start
严重: Context [/Struts2_HelloWorld] startup failed due to previous errors
2007-9-13 23:06:11 org.apache.coyote.http11.Http11Protocol start  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-16 09:21 | Jimmy
请问是不是要tomcat5.5以上的啊?

我的tomcat5.0.16+jdk1.42+struts2.10老是报错

Status report

message /Struts2_HelloWorld/

description The requested resource (/Struts2_HelloWorld/) is not available.

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-18 15:29 | @ctan
郁闷,我的报这个错 \
myeclipse5.0 tomcat5.0 jdk1.4.2

信息: validateJarFile(C:\java_dev\Tomcat 5.0\webapps\Struts2App\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
2007-9-18 15:19:25 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2007-9-18 15:19:25 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors
2007-9-18 15:19:25 org.apache.catalina.core.StandardHostDeployer install
信息: Installing web application at context path /tomcat-docs from URL file:C:\java_dev\Tomcat 5.0\webapps\tomcat-docs

谢谢各位老大。  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-20 11:14 | 台风过境
严重: Exception starting filter struts2
Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/F:/JavaProjects/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps/Struts2_HelloWorld/WEB-INF/lib/struts2-spring-plugin-2.0.9.jar!/struts-plugin.xml:8:132
……
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContextAware
……
严重: Error filterStart
2007-9-20 11:01:46 org.apache.catalina.core.StandardContext start
严重: Context [/Struts2_HelloWorld] startup failed due to previous errors
2007-9-20 11:01:51 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
信息: Parsing configuration file [struts-default.xml]
2007-9-20 11:01:53 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
信息: Parsing configuration file [struts-plugin.xml]
2007-9-20 11:01:53 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
按照Max说的方法还是不能解决奥,前面出现这个问题的朋友不知道怎么解决的?  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-20 15:32 | 台风过境
Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory
这个tomcat启动错误已经解决,楼主的例子顺利通过了,嘿嘿!

我之前是把struts-2.0.9-lib中的所有jar包都放到WEB-INF/lib中,才出现上面那个错误,后来把lib中的包删除,只保留
• struts2-core.jar
• xwork.jar
• ognl.jar
• freemarker.jar
• commons-logging.jar
就顺利通过了,看来把所有的包都导入,未必是件可取的事情啊!
  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-20 16:31 | 台风过境
打好war包后,启动tomcat服务器的时候,有警告信息:Could not parse struts.local setting,substituting default VM local,不知道怎么回事,我在eclipse下启动tomcat运行是没问题的!  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-09-21 13:26 | Jimmy
javax.servlet.ServletException: Filter execution threw an exception


root cause

java.lang.Error: Unresolved compilation problem:
The public type HelloWorld must be defined in its own file

tutorial.HelloWorld.<init>(Helloworld.java:5)

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-26 08:21 | 小燕子
请问一下老师,我的eclipse3.2中装了myeclipse5.1.1为什么没有创建dynamic web project工程的地方呢  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-26 14:42 | 小学生
老师您好:
我照着这个样子做了一下,现在已经能运行起来了,但是,就是在eclipse中总是报这个错:
The value [HelloWorld] for attribute [action] in tag [form] is not valid.
报错的位置是SayHello.jsp中的第9行:<s:form action="HelloWorld">,请问,这是什么原因呢?

另外,您说的“
按ctr +a全选,复制,再转到Eclipse窗口,在“Project Explorer”子窗口中选中Struts2_HelloWorld\WebContent\WEB-INF\lib,然后粘贴。

的这一句话,我实在不知道如何操作,因为,当我在“Project Explorer”子窗口中选中Struts2_HelloWorld\WebContent\WEB-INF\lib的时候,paste选择项是灰色的,因此,我只好将这些jar文件直接文件拷贝到了lib目录下,但是,就是在project explorer中的Struts2_HelloWorld\Java Resources: src\Libraries\Web App Libraries下看不到这些jar文件。尽管如此,却又不影响打包和运行;)

我现在确实不知道我在哪里出错了,希望老师同学指点一下,谢谢!!!

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-26 15:01 | 小学生
老师您好:
现在直接文件拷贝到了lib目录下的jar文件能在project explorer中的Struts2_HelloWorld\Java Resources: src\Libraries\Web App Libraries下看到了!!!不好意思,刚才耐心不够~~ :P

但是,SayHello.jsp中的第9行:<s:form action="HelloWorld">,依然会引起eclipse报:The value [HelloWorld] for attribute [action] in tag [form] is not valid.的错误。答案期待中......



  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-09-27 16:57 | T
有没有谁搞好了的,提供给我一个让我看看,我搞的老是出错。
如方便发到邮箱里22211369(at)qq.com  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-10-09 11:16 | 88
严重: Exception starting filter struts2
Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/D:/mytools/apache-tomcat-5.5.23/webapps/Struts2_HelloWorld/WEB-INF/lib/struts2-spring-plugin-2.0.9.jar!/struts-plugin.xml:8:132
严重: Error filterStart
2007-10-9 10:59:28 org.apache.catalina.core.StandardContext start
严重: Context [/Struts2_HelloWorld] startup failed due to previous errors
2007-10-9 10:59:29 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2007-10-9 10:59:29 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2007-10-9 10:59:30 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/141 config=null
2007-10-9 10:59:30 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2007-10-9 10:59:30 org.apache.catalina.startup.Catalina start
信息: Server startup in 41750 ms  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-10-11 16:25 | 金立军
请教一下我在调式这第段代码:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Struts 2 Cool Tags - &lt;s:doubeselect/ &gt;</title>
<s:head />
</head>
<body>
<h2>&lt;s:doubleselect/&gt;</h2>
<s:form action="Store" >
<s:set name="foobar"
value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
<s:doubleselect list="#foobar.keySet()"
doubleName="technology"
doubleList="#foobar[top]"
label="Technology" />
</s:form>
</body>
</html>



一运行就出现这下面这个错误:


FreeMarker template error!

Expression parameters.formName is undefined on line 76, column 43 in template/simple/doubleselect.ftl.
The problematic instruction:
----------
==> ${parameters.formName} [on line 76, column 41 in template/simple/doubleselect.ftl]
in include "/${parameters.templateDir}/simple/doubleselect.ftl" [on line 3, column 1 in template/xhtml/doubleselect.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression parameters.formName is undefined on line 76, column 43 in template/simple/doubleselect.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
at freemarker.core.Expression.getStringValue(Expression.java:118)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.Environment.include(Environment.java:1375)
at freemarker.core.Include.accept(Include.java:155)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.Environment.process(Environment.java:176)
at freemarker.template.Template.process(Template.java:232)
at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:148)
at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530)
at org.apache.struts2.components.UIBean.end(UIBean.java:484)
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
at org.apache.jsp.index_jsp._jspx_meth_s_doubleselect_0(index_jsp.java:185)
at org.apache.jsp.index_jsp._jspx_meth_s_form_0(index_jsp.java:133)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:76)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:413)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
请问一下各位是什么原因呀
学生在此谢过了
  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-10-19 15:07 | zero
java.lang.NoSuchMethodError: javax.xml.transform.dom.DOMResult.getNextSibling()Lorg/w3c/dom/Node;
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:390)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.setResult(TransformerHandlerImpl.java:137)
at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.setup(DomHelper.java:213)
at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:198)
at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:189)
at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:175)
at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:225)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:308)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:79)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3676)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4327)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:683)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:476)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2298)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)

我在测试上面的例子的时候,发生了上面的错误  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-10-19 15:50 | zero
是jdk版本的原因,如果使用jdk1.4会报错但是使用jdk1.6就会报上面的这个错误,使用jdk1.5就正常了。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-10-24 12:44 | 信鸽
学到了  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-10-31 09:46 | heiyechouke
nice, thanks very much!  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2007-10-31 13:55 | 菜鸟
我的eclipse中为什么不能创建dynamic web project呢?

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-03 15:32 | 帅哥
只想说一个字,“日”!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-08 10:34 | 猛男
谢谢您给我介绍这么漂亮的“妞子”,用起来真爽!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-11 08:40 | skycliff
楼主幸苦了,期待更多更好的文章。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-16 11:45 | maszxy
@就
好象不对呀,中文还是显示乱码

我的QQ:531877631  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-16 12:14 | maszxy
@Mike
因为你在struts.xml里给这个action定的名字是HelloWorld  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-16 12:23 | cricy
都要发布才能测试吗?有没有可以直接测试的?  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-16 16:43 | onlykwx
写得很好,支持一下!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-23 11:36 | gongbing
请问,您最后发布应用程序的时候采用的是打包成war文件到tomcat里,但是如果这样的话,好像每修改一次程序就要把先前的war文件删除掉,重新打包,这样做卫冕太麻烦了,请问有没有其他的简单一点的办法?谢谢  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-24 17:09 | sandbox
郁闷,怎么调都调试不通 ,提交表单后就是404错误,也不知道什么原因 望赐教

另外 感觉的文章很好,能否告诉一下出处
email:flywyvern@126.com 同时希望发一份这篇文章的测试源码,不用带包,我就不信调不通
最后 谢谢:)  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-28 16:36 | xiao
第一个Struts 2.0应用程序——Hello World
运行没问题

当我在浏览器中
键入http://localhost:8080/Struts2_HelloWorld/SayHello.jsp
后台报异常:
org.xml.sax.SAXParseException: Element type "bean" must be declared.

不知是什么原因

我都弄了一下午都没解决问题

麻烦各位了


  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-11-30 13:52 | 不能说
是不是Tomcat5.0不能跑Struts2.0啊???  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-08 18:25 |
非常好!~  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-08 18:26 |
ddd  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-08 18:27 |
@月
ddd  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-18 14:16 | windylovesandy
我的出错,以下错误是怎么回事?
我不知道struts-tags.jar在哪来?我在lib中没有找到,应该放在哪里。希望指教以下
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 "/struts-tags" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:114)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:159)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:423)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-20 11:40 | 阿祥
比较好!讲得比较细!thanks (the team)  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-20 17:19 |
有问题说出来  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-29 00:38 | 凌晨风
2007-12-29 0:24:48 org.apache.struts2.components.Form evaluateExtraParamsServletRequest
警告: No configuration found for the specified action: 'login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2007-12-29 0:24:48 org.apache.struts2.components.Form evaluateExtraParamsServletRequest
警告: No configuration found for the specified action: 'login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.

出现如下错误,程序运行正常!不知道只是怎么回事?
错误发生在login.jsp页面刷新时就出现。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2007-12-30 16:28 | xx
做个视频多方便,这样一张一张的截图很麻烦  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2008-01-01 18:12 | aa
@新手
写action的名字  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-07 17:20 | C++
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2008-1-7 16:11:44 org.apache.struts2.components.Form evaluateExtraParamsServletRequest
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.


我都弄了2个星期了,晕死了!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-08 15:34 | 自由化xl
挺不错的, 谢谢楼主的细心总结!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-11 23:16 | bizairshop
很好的例子
北京机票推荐 http://www.newskyair.com  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-18 14:12 | tt
@C++
表单提交的 action name 和 struts.xml 的 action name 是否相同  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-20 14:04 | 陈龙
是个好文章  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-23 16:27 | 漂泊
警告: No configuration found for the specified action: 'HelloWorld' in namespace
: ''. Form action defaulting to 'action' attribute's literal value.
2008-1-23 16:21:56 org.apache.struts2.components.Form evaluateExtraParamsServlet
Request
警告: No configuration found for the specified action: 'HelloWorld' in namespace
: ''. Form action defaulting to 'action' attribute's literal value.

什麽原因?

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-23 17:04 | C++
@tt
我的代码全是照着复制、粘贴的,不会有错,我也反复检查过N!遍。郁闷。谢谢tt大侠了  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-24 17:16 |
junit.framework.AssertionFailedError: /WEB-INF/web.xmlが見つかりません
at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:344)
at servletunit.struts.MockStrutsTestCase.tearDown(MockStrutsTestCase.java:130)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

我用MockStrutsTestCase框架做的一个简单测试,哪位老兄帮忙看看是什么问题啊?

  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-27 13:38 | jinruihua
@zero
可能是你的.jsp页面的action名与struts中的action不一致导致。
maybe help.  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-01-28 16:38 |
是一致的,被测试的代码都是成品了,应该不是代码的问题  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-02-17 18:46 | 111
@jarwang
那是因为你的表单的编码还是ISO8859-1。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-02-21 14:23 | laibin
谢谢!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-02-22 09:12 | GG_wg
例子不错,我测试中文提交也没有问题(firefox)  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2008-02-22 17:10 | lee
提交表单后显示下如错误:
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2008-2-22 17:08:55 org.apache.struts2.components.Form evaluateExtraParamsServletRequest  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-03-10 11:35 | yuan29346
多谢!
我是在JBuider上工作的,按照你的提示,呵呵,顺利搞定到JB中了。
现在刚准备学这个struts2,现在有很多疑问啊!很郁闷,我们公司不用这个。
比如:
<s:form action="Login">
<s:text name="username"/><s:textfield key="username"/>
<s:text name="password"/><s:password key="password" />
<s:submit/>
</s:form>
这个会自动输出table,和我想要的不一样!我相知道怎么样才能控制输出的HTML标签?
  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-03-13 16:45 | zhengtu
太牛了;
照做了;
没问题;
讲的很细;
谢谢.  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-03-18 09:20 | 小魏
照做的,完全正确,在这个过程中遇到许多问题,解决之后发现自己学习到很多:)
谢谢:)  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-03-18 12:33 | 木风口子
我第一次运行HelloWorld没有问题,但后来又不行了,一直报错:
HTTP Status 404 - /projects/struts/Struts2_HelloWorld

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

type Status report

message /projects/struts/Struts2_HelloWorld

description The requested resource (/projects/struts/Struts2_HelloWorld) is not available.

导出的WAR文件在ROOT/projects/struts/下
本机配置:
jdk1.5,
eclipse为最新europe
tomcat5.0.30
没有加载包,因为我已经有lomboz struts包
不会是没加包的原因,
请赐教!多谢!  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-03-25 17:21 | visitor
@凌晨风
也困绕我半天。。。
后来照另外的教程做出一个可以跑的,再Beyond compare比较一下,发现是建立struts.xml时错了,名字不对,浪费好几个小时  回复  更多评论
  
# re: 为Struts 2.0做好准备[未登录] 2008-03-25 22:37 | 绿茶
你好..谢谢..我觉得就是tomcat最好是5.x或6.X..JDK1.5以上吧..我刚开始也是按你说的那样去测试..在以前的版本上测试..都不行..后来下了个新版..就可以了..还是就是...struts.xml一定要放在classess目录下...  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-03-28 20:01 | pakinsen
我按照你的方法做了,第一部分是成功的,但是第二步添加了那几个JSP文件后,一打开TOMCAT就说找不到SayHello.jsp。这是为什么呢?我反复看了你的文章,没有地方不一致啊。  回复  更多评论
  
# re: 为Struts 2.0做好准备 2008-04-07 10:39 | 小新手
我用的是myeclipse5.0 tomcat5.5 struts2.0.11.1的包,按照上面的步骤连第一部分都不能正常运行,如果不按照上面步骤修改web.xml内容的话第一步反而能实现,但第二部分仍然不能实现,为什么呢。。。。  回复  更多评论
  
评论共4页: 上一页 1 2 3 4 下一页 

只有注册用户登录后才能发表评论。


网站导航: