随笔-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 worlddisplay-name>
          
      <filter>
              
      <filter-name>struts2filter-name>        <filter-class>org.apache.struts2.dispatcher.filterdispatcherfilter-class>
          
      filter>
          
      <filter-mapping>
              
      <filter-name>struts2filter-name>
              
      <url-pattern>/*url-pattern>
          
      filter-mapping>
          
      <welcome-file-list>
              
      <welcome-file>index.htmlwelcome-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 worldtitle>
      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.jspresult>
              
      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 hellotitle>
          
      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>hellotitle>
          
      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 阅读(125625) 评论(345)     所属分类: struts 2.0系列
评论共4页: 1     

评论:
# re: 为struts 2.0做好准备 2008-04-14 19:04 |
按照步骤配置了,但sayhello.jsp提交失败,后台总是报错“no configuration found for the specified action...”,试了无数次,google了半天,还是不行,最后终于极度郁闷的发现,配置文件名称是“sturts.xml”,这个名称是从你文章里拷过去的,有一个字母顺序错了,狂晕!!!浪费了近3个小时,555555555555555.............  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-04-21 18:00 |
以前一直都用的struts1.x, 学习下!
设置一切ok,绿色顺利出来
不错,支持  回复  
  
# re: 为struts 2.0做好准备 2008-04-21 20:49 |
no configuration found for the specified action: 'helloworld' in namespace

是因為 copy 'sturts.xml' 的結果, 請更正文章中 sturts.xml 為 struts.xml

sturts.xml --> struts.xml  回复  
  
# re: 为struts 2.0做好准备 2008-04-23 17:15 |
和1.0差在哪?不能出了新技术就什么地方都用吧?  回复  
  
# re: 为struts 2.0做好准备 2008-04-29 17:26 |
写得太棒了。
我用的struts-2.0.11.1 jdk1.6.0_05 tomcat 5.5.26.
关于404的错误,我是先把所有struts2的jar文件粘贴到lib目录下,然后把struts2-spring-plugin-2.xxx.jar,
struts2-plexus-plugin-2.xxx.jar,
struts2-jsf-plugin-2.xxx.jar删除,
还对照截图删除了antlr-2xxx.jar, commons开头的几个jar(也许不是他们的原因),因为我是在eclipse里面debug工程看到了些异常。  回复  
  
# re: 为struts 2.0做好准备 2008-04-30 11:44 |
在此页面中的,java源程序的树形结构,是如何实行的?  回复  
  
# re: 为struts 2.0做好准备 2008-05-04 14:30 |
问题解决。  回复  
  
# re: 为struts 2.0做好准备 2008-05-07 11:26 |
关于第1次启动时就报http404错的解决方法
错误信息:
2008-5-7 11:17:24 org.apache.catalina.core.standardcontext start
严重: error filterstart
2008-5-7 11:17:24 org.apache.catalina.core.standardcontext start
严重: context [/struts2_test] startup failed due to previous errors

解决方法:
删除webcontent\web-inf\lib\struts2-spring-plugin-2.x.x.jar

这样启动就不会报错了  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-05-09 17:35 |
@小燕子
创建工程的时候,选中show all wizards!  回复  
  
# re: 为struts 2.0做好准备 2008-05-13 01:39 |
在我的环境下是因为"struts2-jsf-plugin-2.0.11.1.jar"这个jar包引起的404问题.

>关于第1次启动时就报http404错的解决方法
>错误信息:
>2008-5-7 11:17:24 org.apache.catalina.core.standardcontext start
>严重: error filterstart
>2008-5-7 11:17:24 org.apache.catalina.core.standardcontext start
>严重: context [/struts2_test] startup failed due to previous errors

>解决方法:
>删除webcontent\web-inf\lib\struts2-spring-plugin-2.x.x.jar   回复  
  
# re: 为struts 2.0做好准备 2008-05-13 13:58 |
和我报的错一样。不知道为什么,如果把里面的过滤器去掉就可以了,但这样就失去了struts2.0的意义了。  回复  
  
# re: 为struts 2.0做好准备 2008-05-15 14:14 |
我觉得建立动态的java工程(dynamic web project)不太方便,比如我每次修改完一点程序:.java,.xml,.jsp,.html之类的文件后,都必须得停止tomcat,重新打包发布应用,再启动tomcat后才会看到修改后的页面,否则的话显示的还是以前的页面或干脆找不着路径,不知道各位有没有遇见过这种情况。
说明:动态的应用和普通的应用都要求tomcat版本必须是5.5版本(含)以上的。
刚开始用的5.1,怎么也不行,后来改成5.5就可以了,  回复  
  
# re: 为struts 2.0做好准备 2008-05-16 22:03 |
受益非浅 以后常来逛逛  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-05-28 12:25 |
报404错误的
看一下web.xml中是index.jsp还是index.html

index.jsp
  回复  
  
# re: 国际机票预定中心010-65946500 2008-05-29 17:16 |
北京华夏航空服务公司致力于从事国际、国内特价机票、头等公务特价、留学生机票、新移民机票、团体特价机票代理业务等......
常年为各大公司企事业单位免费订票,送票,成为我们的签约客户,享受最低折扣待遇!
凯发k8网页登录的服务理念:
服务第一 !价位最低!重承诺!守信用!让您足不出户,就能享受最完善的服务,最低廉的价格!
公司网站:www.365piaowu.com www.1688jp.com www.v88jp.com www.beijingpiaowu.com
订票热线:010-65946500 010-65921465
24时热线:13811004039 15001025358  回复  
  
# re: 为struts 2.0做好准备 2008-05-29 23:56 |
太感谢了。  回复  
  
# re: 为struts 2.0做好准备 2008-06-03 15:49 |
好文章!
详细,易懂.
本人就是加包的时候多加了些包,花了些时间排错.其实不加入其它框架的情况,加截图中的五个包就够了,否则要加入其它框架的包  回复  
  
# re: 为struts 2.0做好准备 2008-06-08 21:35 |
第一个struts 2.0应用程序——hello world
运行没问题

当我在浏览器中
键入
后台报异常:
org.xml.sax.saxparseexception: element type "bean" must be declared.

不知是什么原因

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

麻烦各位了

怎么还没解决呢,我也碰到了,搞不到,郁闷.........  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-06-10 15:06 |
为什么我按照你说的做,出现404错误啊!  回复  
  
# re: 为struts 2.0做好准备 2008-06-17 12:33 |
哎呀,今天搞了一个上午总算搞出来了,工程建了好几遍,真不容易。

说实话,已经挺详细了,8过,有些地方还是不太细,也可能是eclipse版本不同的缘故吧。另外,添加jar文件的那个地方,确实是不能ctrl a全选复制粘贴,就是因为这个,一直是404错误。

后来,按照 台风过境 的做法,只添加这个几个文件:
• struts2-core.jar
• xwork.jar
• ognl.jar
• freemarker.jar
• commons-logging.jar
就搞定了

我的环境是这样的:
eclipse3.3
tomcat6.0.16
struts2.0.11.1

希望对没有成功的朋友有所帮助。  回复  
  
# re: 为struts 2.0做好准备 2008-06-22 09:05 |
受益匪浅啊

用myeclipse 6.5 的写起来,应该快多了……  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-06-27 10:26 |
很好,很强大!  回复  
  
# re: 为struts 2.0做好准备 2008-07-01 11:29 |
学习中,谢谢楼主。  回复  
  
# re: 为struts 2.0做好准备 2008-07-08 22:22 |
非常感谢。至于404问题,还是这位留言给解决的 非常感谢,同时也愿意在学习过程中将所学乐趣与大家分享
# re: 为struts 2.0做好准备[未登录] 2008-05-28 12:25 | 哈哈

报404错误的
看一下web.xml中是index.jsp还是index.html

index.jsp
  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-07-10 18:07 |
我照着做了,反复配置了许多遍,终于成功了!!!  回复  
  
# re: 为struts 2.0做好准备 2008-07-23 20:27 |
运行这一页的第二个例子,在sayhello.jsp页面点submit,每次都出现http404错误。
描述:the requested resource (/struts2_helloworld/helloworld) is not available.
为什么啊?  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-07-26 10:08 |
我一开始也是404错误,后来发现是自己把struts.xml放在了tutorial包里面,导致应用找不到struts.xml中对应的配置,所以出错。  回复  
  
# re: 为struts 2.0做好准备 2008-07-28 11:59 |
@wellbeing

你那个是版本 不同了,肯定包少了
  回复  
  
# re: 为struts 2.0做好准备 2008-07-31 10:42 |
你们不觉得每次打成war包很麻烦吗,还要重启tomcat,不只这样,我还有把tomcat/webapps下的项目文件夹删掉。不知道谁有更快更好的方法。  回复  
  
# re: 为struts 2.0做好准备 2008-08-13 14:15 |
jdk 1.6.0_03
eclipse3.3
tomcat6.0.14
不知道是为什么用struts2.0.11.1报错
而用struts2.0.6可以  回复  
  
# re: 为struts 2.0做好准备 2008-08-15 16:38 |
广大报错404的朋友:
sturts.xml这个配置文件一定要放在web-inf的classes目录下,也就是你新建struts.xml文件是在src建的,而不是在web-inf下面建...
困扰一下午的 resource not avalible终于好了....激动....

  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-08-27 17:45 |
sturts.xml这个配置文件放在src目录下就可以了,工程启动时,会自动拷贝到classes目录下的.  回复  
  
# re: 为struts 2.0做好准备 2008-09-02 11:45 |
this release of apache tomcat was packaged to run on j2se 5.0
or later. it can be run on earlier jvms by downloading and
installing a compatibility package from the apache tomcat
binary download page.
机器上面装了两个jdk 一个1.4.7一个1.6.7!
tomcat:5.0.23
环境变量:配置的是1.6.7的
各位大侠 怎么回是???  回复  
  
# re: 为struts 2.0做好准备 2008-09-10 16:47 |
严重: error filterstart
2007-9-13 23:06:10 org.apache.catalina.core.standardcontext start
严重: context [/struts2_helloworld] startup failed due to previous errors
====================
我也出现这个问题,我是这么解决的,在lib文件夹里面仅仅包含五个基本包。其他的包都删除了。
这五个基本包是:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.10.jar,xwork-2.0.4.jar  回复  
  
# re: 为struts 2.0做好准备 2008-09-22 18:24 |
很不错  回复  
  
# re: 为struts 2.0做好准备 2008-10-06 13:04 |
我用eclipse出现了一个问题
我按照jsp教程上的例子 安装了j2sdk-1_4_2_06,,数据库:mysql 5 以及mysql图形化管理工具mysql administrator1.1.4 mysql-front v3.2
开发工具eclipse以及相应的lomboz插件 web服务器tomcat 5.0.16
现在我新建web dynamic web project 项目的时候 点next 下面的窗口一直出不来 不知道是怎么一回事 请指点一下。。。谢谢   回复  
  
# re: 为struts 2.0做好准备 2008-10-06 13:05 |
如能解决 请加我qq:232214995 或者发我邮件:scorpio215@126.com
我将万分感激  回复  
  
# re: 为struts 2.0做好准备 2008-10-15 13:54 |
先下载比较新的jdk,别按教程上所说的,一般教程上说的版本都比较老了,eclipse上的所有插件先别装,你先试下看能不能用,一步一步来配置环境  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-10-25 11:56 |
@风の稻草
把tomcat中的sevrver 修改一下
name="localhost"
appbase="工程的具体位置(像:d:/workspace)\你的工程名字"
unpackwars="true"
autodeploy="true"
xmlvalidation="false"
xmlnamespaceaware="false">
path="/"
docbase="工程的具体位置(像:d:\\workspace)\\你的工程名字\\jspsource"
reloadable="true">

  回复  
  
# re: 为struts 2.0做好准备[未登录] 2008-11-08 18:36 |
初学者可能要注意的一个问题是:struts.xml似乎只能放在src目录下.一开始的时候我把这个文件放置在web-inf下和web.xml放在一起,结果第一个页面sayhello.jsp出得来,提交给action时就出错了.后台提示:警告: no configuration found for the specified action: 'helloworld' in namespace: ''. form action defaulting to 'action' attribute's literal value.
ie那边返回了一个404错误页面.把struts.xml移至src下,问题就解决了.  回复  
  
# re: 为struts 2.0做好准备 2008-11-12 01:54 |
折腾了一个晚上,刚搞定第二步骤
提醒新手注意下面几点:

1, 一个是博主 写错了 应该是 struts.xml 不是 sturts.xml
2, 如果启动tomcat的时候发现错误,有关.class文件的版本号不对,那么注意一下当前eclipse的jdk,我用jdk1.6编译出来的就有错,用1.5才可以

  回复  
  
# re: 为struts 2.0做好准备 2008-12-01 14:53 |
@哎
是的.哈哈.
补充一点.现在凯发k8网页登录官网上找不到2.0.0了.所以要添加的lib有些不同.只要5个jar文件.
注意楼猪的开发环境.
还有就是run on server运行不起来.不知道为什么.只能启动tomcat插件.就是那个小猫的图标.设置war文件导出路径也不行.只能每次删了再一步步导出.麻烦.  回复  
  
# re: 为struts 2.0做好准备 2009-01-24 14:30 |
好文章,谢谢老师指点!  回复  
  
# re: 为struts 2.0做好准备 2009-02-03 18:20 |
我的,不知何故?望老师赐教。  回复  
  
# re: 为struts 2.0做好准备 2009-02-16 16:57 |
好文章啊~··  回复  
  
# re: 为struts 2.0做好准备[未登录] 2009-02-26 20:09 |
tdy  回复  
  
# re: 为struts 2.0做好准备 2009-03-10 10:07 |
@流汗的牙齿

你引入commons-fileupload-1.2.1.jar包再试试,新版本必须引入commons-fileupload-1.2.1.jar包.要不然就会出现404错误.  回复  
  
# re: 为struts 2.0做好准备 2009-03-11 20:32 |
老师,为什么我照你的步骤一步步地做.可是打包之后都不行啊.2个都是这样.
在ie上显示的是
type status report

message /struts2_helloworld/

description the requested resource (/struts2_helloworld/) is not available.

为什么啊?刚刚学struts2,什么都不懂.
  回复  
  
# re: 为struts 2.0做好准备 2009-03-20 10:22 |
# re: 为struts 2.0做好准备 2008-09-10 16:47 | dinner1984

严重: error filterstart
2007-9-13 23:06:10 org.apache.catalina.core.standardcontext start
严重: context [/struts2_helloworld] startup failed due to previous errors
====================
我也出现这个问题,我是这么解决的,在lib文件夹里面仅仅包含五个基本包。其他的包都删除了。
这五个基本包是:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.10.jar,xwork-2.0.4.jar 回复 更多评论  回复  
  
# re: 为struts 2.0做好准备 2009-03-26 18:29 |
严重: could not find action or result
there is no action mapped for namespace / and action name helloworld. - [unknown location]
at com.opensymphony.xwork2.defaultactionproxy.prepare(defaultactionproxy.java:186)
at org.apache.struts2.impl.strutsactionproxyfactory.createactionproxy(strutsactionproxyfactory.java:41)
at org.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:494) 我按照您这个步骤做的,提交就出这错。麻烦老师能帮我解决一下  回复  
  
# re: 为struts 2.0做好准备[未登录] 2009-03-27 20:33 |
there is no action mapped for namespace / and action name helloworld.

这是我的struts.xml
"-//apache software foundation//dtd struts configuration 2.0//en"
"




/helloworld.jsp


  回复  
  
# re: 为struts 2.0做好准备[未登录] 2009-03-31 11:42 |
真的很好,希望楼主继续努力,出更多精品
  回复  
  
# re: 为struts 2.0做好准备 2009-04-09 02:44 |
lz图文并茂,讲解和清晰又不累赘。同时对ide的操作讲解的很好,学到很多操作技巧。谢谢  回复  
  
# re: 为struts 2.0做好准备 2009-04-24 14:09 |
在“file name”中键入sturts.xml,点击“finish”,然后将struts.xml的内容修改为:
哥哥把struts.xml第一个写成sturts.xml.大家注意下啊  回复  
  
# re: 为struts 2.0做好准备 2009-04-24 17:19 |
受益匪浅
谢谢!

还有,你很厉害。  回复  
  
# re: 为struts 2.0做好准备[未登录] 2009-04-28 16:04 |
very good  回复  
  
# re: 为struts 2.0做好准备 2009-05-09 19:45 |
太好了,收藏了!  回复  
  
# re: 为struts 2.0做好准备 2009-05-14 17:21 |
need: commons-fileupload-1.2.1.jar  回复  
  
# re: 为struts 2.0做好准备 2009-05-14 21:02 |
谢谢 很详细  回复  
  
# re: 为struts 2.0做好准备[未登录] 2009-05-27 22:08 |
是的,tomcat5.5以上才支持struts2.0
  回复  
  
# re: 为struts 2.0做好准备 2009-06-02 09:00 |
@xiao
少jar包  回复  
  
# re: 为struts 2.0做好准备 2009-06-26 09:02 |
运行struts2是要用tomcat6.0以上的  回复  
  
# re: 为struts 2.0做好准备 2009-07-12 09:19 |
我出现了unknown tag的错误,是不是少了包?我没装struts2-extras.jar  回复  
  
# re: 为struts 2.0做好准备 2009-08-07 15:24 |
@极度郁闷
谢谢大哥的提醒!!!  回复  
  
# re: 为struts 2.0做好准备 2009-08-24 11:47 |
错误:警告: 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天,以为是namespace的问题.
结果发现配置不成功的主要原因:

1.在“file name”中键入sturts.xml,点击“finish”,然后将struts.xml的内容修改为:



这个里面 “sturts.xml”应该改为:“ struts.xml”  回复  
  
# 为什么不显示标签呀 2009-08-29 15:53 |
<%@ page language="java" import="java.util.*" pageencoding="iso-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<%
string path = request.getcontextpath();
string basepath = request.getscheme() "://" request.getservername() ":" request.getserverport() path "/";
%>






my jsp 'index.jsp' starting page












  回复  
  
# re: 为struts 2.0做好准备 2009-09-10 12:41 |
要是有视频该有多好啊,我希望进期内能做出来一个struts2的视频,然后发给我,龙某万分感谢,我的邮箱是:lx_610096108@163.com,或加我qq也好:610096108,再次感谢!!!  回复  
  
# re: 为struts 2.0做好准备 2009-09-14 23:38 |
@yuan29346

  回复  
  
# re: 为struts 2.0做好准备 2009-10-30 11:14 |
我的环境:
jdk : 1.5.0
tomcat : 5.5.27
eclipse : 3.4.2
★所有相关配置都和作者一样
关于第一步出现的404错误(the requested resource (/struts2_helloworld/) is not available)的原因
① 作者建立struts.xml文件的时候,文件名错误 : sturts.xml→struts.xml
② 导入的核心jar包应该包含如下:
commons-fileupload-1.2.1.jar
commons-logging-1.0.4.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar  回复  
  
# re: 为struts 2.0做好准备 2009-10-30 11:43 |
关于第二部分,完全按照作者相关配置运行,junit顺利通过,页面表现正常。
感谢作者分享,共同学习。  回复  
  
# re: 为struts 2.0做好准备 2009-11-23 12:55 |
不错 很值得学习下  回复  
  
# re: 为struts 2.0做好准备[未登录] 2009-12-16 16:16 |
123  回复  
  
# re: 为struts 2.0做好准备 2009-12-17 12:46 |
请问楼主,按照上面说的顺序进行操作还需要配置tomcat和jdk的环境变量吗?  回复  
  
# re: 为struts 2.0做好准备 2009-12-17 12:51 |
再追加一个问题,关于第一部分的说明,我的第一个静态页面出不来,用tomcat运行,画面的提示错误是:
http status 404 - /struts2.0/

type status report

message /struts2.0/

description the requested resource (/struts2.0/) is not available.

apache tomcat/5.0.16

这是什么原因啊?
急需楼主帮忙!!  回复  
  
# re: 为struts 2.0做好准备 2009-12-29 17:06 |
@路过
对极了,多谢!  回复  
  
# re: 为struts 2.0做好准备 2009-12-29 17:12 |
jdk 1.6.0_13
tomcat 5.5.28
eclipse eclipse-jee-galileo-sr1-win32.zip(based on eclipse 3.5 sr1)

我是java初学者, 欢迎一起学习探讨  回复  
  
# re: 为struts 2.0做好准备 2009-12-31 17:14 |
12121212  回复  
  
# re: 为struts 2.0做好准备 2010-01-08 11:11 |
@dinner1984
zzzzzzzzzzzzzzz  回复  
  
# re: 为struts 2.0做好准备 2010-01-25 11:39 |
org.apache.jasper.jasperexception: /login.jsp(30,2) the s:form tag declares that it accepts dynamic attributes but does not implement the required interface
at org.apache.jasper.compiler.defaulterrorhandler.jsperror(defaulterrorhandler.java:40)
at org.apache.jasper.compiler.errordispatcher.dispatch(errordispatcher.java:407)
at org.apache.jasper.compiler.errordispatcher.jsperror(errordispatcher.java:148)
at org.apache.jasper.compiler.validator$validatevisitor.visit(validator.java:777)
at org.apache.jasper.compiler.node$customtag.accept(node.java:1512)
at org.apache.jasper.compiler.node$nodes.visit(node.java:2343)
at org.apache.jasper.compiler.node$visitor.visitbody(node.java:2393)
at org.apache.jasper.compiler.node$visitor.visit(node.java:2399)
at org.apache.jasper.compiler.node$root.accept(node.java:489)
at org.apache.jasper.compiler.node$nodes.visit(node.java:2343)
at org.apache.jasper.compiler.validator.validate(validator.java:1739)
at org.apache.jasper.compiler.compiler.generatejava(compiler.java:166)
at org.apache.jasper.compiler.compiler.compile(compiler.java:315)
at org.apache.jasper.compiler.compiler.compile(compiler.java:295)
at org.apache.jasper.compiler.compiler.compile(compiler.java:282)
at org.apache.jasper.jspcompilationcontext.compile(jspcompilationcontext.java:586)
at org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:317)
at org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:342)
at org.apache.jasper.servlet.jspservlet.service(jspservlet.java:267)
at javax.servlet.http.httpservlet.service(httpservlet.java:717)
at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:290)
at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)
at org.apache.struts2.dispatcher.ng.filter.strutspreparefilter.dofilter(strutspreparefilter.java:82)
at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)
at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)
at org.apache.struts2.dispatcher.ng.filter.strutsexecutefilter.dofilter(strutsexecutefilter.java:85)
at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)
at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)
at org.apache.struts2.dispatcher.ng.filter.strutspreparefilter.dofilter(strutspreparefilter.java:82)
at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)
at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)
at bw.sms.util.requestfilter.dofilter(requestfilter.java:45)
at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)
at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)
at org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:233)
at org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191)
at org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:128)
at org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:102)
at org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109)
at org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:286)
at org.apache.coyote.http11.http11processor.process(http11processor.java:845)
at org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:583)
at org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:447)
at java.lang.thread.run(thread.java:619)

什么错误?请教!  回复  
  
# re: 为struts 2.0做好准备 2010-03-24 16:31 |

应该要改成

不然提交跳不了的。第一次尝试struts2.
  回复  
  
# re: 为struts 2.0做好准备[未登录] 2010-03-24 18:14 |
@jj
我也遇到过这类的问题。因为我是用eclipse galileo版本开发web项目。自己搭建环境,struts2和servlet进行了解耦,所以我没有把tomcat下lib中的servlet-api.jar,el-api.jar和jsp-api.jar加进去,后来写个程序需要用到servlet,所以就把三个jar包加进去了,问题出在了jsp-api.jar包上,可能与struts2中的一个jar包想冲突,删除掉jsp-api.jar就好了。  回复  
  
# re: 为struts 2.0做好准备 2010-05-20 11:15 |
谢谢!  回复  
  
# re: 为struts 2.0做好准备[未登录] 2010-05-26 22:37 |

首先感谢楼主,其次提出3个大家出现各种问题的原因:
1、struts拼写错误;
2、struts位置应该在src目录下
3、struts中/hello.jsp(请注意hello.jsp前面的“/”)  回复  
  
# re: 为struts 2.0做好准备 2010-07-06 16:04 |

应加上命名空间吧  回复  
  
# re: 为struts 2.0做好准备[未登录] 2010-08-26 16:54 |
很好  回复  
  
# re: 为struts 2.0做好准备 2010-09-12 20:03 |
struts1跟struts2有啥区别啊?我看你写的没啥区别吗?  回复  
  
# re: 为struts 2.0做好准备 2010-09-26 15:01 |
@金立军
哥们 你那问题找到了吗?  回复  
  
# re: 为struts 2.0做好准备 2010-11-23 21:54 |
看看lib包中有没有
javax.servlet.jsp.*之类的包,都删除就可以。  回复  
  
# re: 为struts 2.0做好准备 2010-12-02 14:36 |
里面要加上name="myform"  回复  
  
# re: 为struts 2.0做好准备 2011-01-05 17:47 |
哈哈,成功了,我的配置是tomcat6.0, jre6, 加上apps下的lib中的jar包五个。  回复  
  
# re: 为struts 2.0做好准备 2011-04-07 14:43 |
课程讲解的很好 很详细

照着做 确实 实现了。 而且还配合有图

是很好的 谢谢分享。

  回复  
  
# re: 为struts 2.0做好准备 2011-06-01 11:13 |
很好 ,很完整,谢谢!  回复  
  
# re: 为struts 2.0做好准备 2011-08-15 17:12 |
正是我想学的,写得太棒了。  回复  
  
# re: 为struts 2.0做好准备 2011-10-06 14:04 |
good!perfect!  回复  
  
# re: 为struts 2.0做好准备 2011-10-06 14:08 |
yes@wsw
yes  回复  
  
# re: 为struts 2.0做好准备 2012-11-11 00:44 |
真的很不错  回复  
  
# re: 为struts 2.0做好准备 2014-03-26 18:18 |
一次性成功  回复  
  
# re: 为struts 2.0做好准备 2015-10-16 11:55 |
@迎风十八刀
s@pakinsen
404说明是你路径有问题,还有可能是你jsp中某个标签不小心给删了  回复  
  
# re: 为struts 2.0做好准备 2015-10-16 13:57 |
@懒人
struts2与struts 1貌似很多地方不一样,比1要好用  回复  
  
# re: 为struts 2.0做好准备 2015-10-16 13:59 |
@哈哈
明显是jsp web项目里一般是不会出现html文件的  回复  
  
评论共4页: 1     

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


网站导航:
              
 
网站地图