Struts 2.0初体验--参照Tutorials来写第一个Struts 2.0程序

        首先要说的是我昨天遇到的问题, 之前用的是Tomcat 5.0.28, 把Struts 2.0下的struts2-blank放到Tomcat下, 根本运行不了, 弄了半天也不成, 今天早上来了, 换了个Tomcat 5.5, 结果就OK了. 我想应该是Struts 2.0得要Tomcat 5.5以上的版本吧. 我的开发环境是:JDK5.0+Tomcat 5.5+Eclipse3.2
        好啦, 开始进入我们第一个Struts 2.0的例子吧, 按照惯例, 第一个当然是HelloWorld啦. 就照着Tutorials里的HelloWorld来做一个吧.
        先写一个显示页面, hello.jsp:

<% @ taglib prefix = " s "  uri = " /struts-tags "   %>

< html >
< head >
< title > The First Struts  2.0  Example </ title >
</ head >
< body >
    
< h2 >< s:property value = " message "   /></ h2 >
</ body >
</ html >

 注意这里的Tag, 跟Struts 1.x里是不一样的了.

        有了JSP页面, 下面该写我们的Action了, 代码如下:
package  com.puras.struts2;

import  com.opensymphony.xwork2.ActionSupport;

public   class  HelloWorld  extends  ActionSupport  {
    
public static final String MESSAGE = "Struts 2.0 is up and running...";
    
    
private String message;
    
    
public void setMessage(String message) {
        
this.message = message;
    }

    
    
public String getMessage() {
        
return this.message;
    }

    
    
public String execute() throws Exception {
        setMessage(MESSAGE);
        
return SUCCESS;
    }

}
感觉是不是和1.x不一样啦, 呵呵, 看看这个execute方法, 没有了在1.x里的那四个参数, 这样在单元测试的时候, 就方便多啦.

        Action也OK了, 接下来就是配置它啦, 在2.0里面, 不再用1.x的struts-config.xml了, 而是改成了struts.xml与WebWork的配置文件相似, 其实感觉就是换了个名字, 哈.

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

在这里呢, 把Struts的配置, 分成了多个小块, 在struts.xml里面给引用过来, 这样就方便多啦, 在Action等众多的情况下, 分到多个文件里, 可以更方便我们管理和维护. 来看看example.xml吧.

<! DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
>
< struts >
    
< package  name ="example"  namespace ="/example"  extends ="struts-default" >
        
< action  name ="hello"  class ="com.puras.struts2.HelloWorld" >
            
< result > /hello.jsp </ result >
        
</ action >
    
</ package >
</ struts >

相当简单吧? 在Pageage里的namespace不是必须的, 其实只有Name是必须的, 但是NameSpace这个属性很有用哦, 给Action加一个前缀, 可以在我们写Action的时候, 少写一些东西, 要是在1.x里, 所有的Action都是以/struts/开头, 那我们就得在每个里面的Path上都写上/struts/啦, 不过在这里, 有了这个属性, 就可以不写啦.呵呵.

        Action的定义就相当简单啦, name等同于1.x里的Path,  Class呢就是我们刚写的Action啦, 跟1.x里的Type一样, 中间的Result, 就是Action处理完之后, 要返回的页面啦.呵呵, 是不是很简单?

        还要有一个struts.properties文件, 在里面配置一些Struts运行所需要的参数, 在里面加上一些设置:

struts.devMode = true
struts.enable.DynamicMethodInvocation = false

        把struts.xml和struts.properties都放到classes目录下就OK了.

        配置完了Struts的东西, 基本就差不多啦, 不过不要忘了, 在web.xml里定义上哦, 与1.x不同啦, 以1.x里, 用的是 一个Servlet, 在这里, 用的是Filter啦(PS:我也是刚刚接触, 只看到了用Filter的, 不知道还有没有其他的.呵呵.)

< 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 >

        这样你的程序基本就OK啦, 把Tomcat启动起来, 访问一下:http://localhost:8080/struts2/example/hello.action     看看结果撒.具体的URL要参照你自己的配置哦, 还有就是刚才说的那个namespace, 因为允许为空, 所以在空的时间, 是默认的 / .在这里我也只是为了测试一下看看效果.呵呵.

        WEB一块就算结束了, 这里要加几句, 在2.0里, 可以很方便的对Action进行测试, 针对于上面的Action, 可以写个测试为:

package  com.puras.struts2;

import  com.opensymphony.xwork2.ActionSupport;

import  junit.framework.TestCase;

public   class  HelloWorldTest  extends  TestCase  {
    
public void testHelloWorld() throws Exception {
        HelloWorld hello 
= new HelloWorld();
        String result 
= hello.execute();
        
        assertTrue(
"Expected a success result!", ActionSupport.SUCCESS.equals(result));
        
        assertTrue(
"Expected the default message!", HelloWorld.MESSAGE.equals(hello.getMessage()));
    }

}


        想想如果要是在1.x里做Action的测试, 会是个什么样子, 再看看2.0的, 感觉良好吧?

        好啦, 就写这么多吧, 抓紧时间去熟悉更多的东西喽~~~~~~~
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值