Struts是一个非常流行并被许多企业级应用程序采用的WEB框架,Struts2在Struts1.x的基础上进行了大量改造,和WebWork合二为一,引进了更多的新观念、新思想和新技术,使之更符合J2EE应用程序开发的需要。

学一门新技术时,第一个应用程序非常重要,本文简单介绍了下struts2写了一个hello world程序,并有部分讲解希望能够给struts爱好者提供一点点帮助

struts2与struts1.x有很大差异,struts2的配置文件为struts.xml相当于struts1中的struts-config.xml文件 其次放的位置也不同 struts.xml放在项目的src下面使用myeclipse发布的时候会自动复制到classes下面
struts.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="com.struts2.demo" extends="struts-default">
        
<action name="Hello" class="com.struts2.demo.Hello">
            
<result>/index.jsp</result>
        
</action>
    
<!-- Add your actions here -->
    
</package>
</struts>

将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理。最直观的表现就是调用Action的execute()方法。代码如下
<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> 
我们的java文件 相当于使用struts1的action 但这里是继承了ActionSupport 是webwork中的类
package com.struts2.demo;

import com.opensymphony.xwork2.ActionSupport;

public class Hello extends ActionSupport{

    
    
private String message;

    
public void setMessage(String message){
        
this.message = message;
    }
    
public String getMessage(){
        
return message;
    }
    
    
public String execute() throws Exception{
        setMessage(
"Hello my first Struts2 demo");
        
return SUCCESS;
    }

    
}

注:ActionSupport是Struts2提供的类,功能类似于Struts1.x中的Action类,该类封装了几个有用的功能,比如:
getText():从资源文件中获取国际化消息。
addFieldError():验证输入未通过时添加错误消息,支持国际化。
execute():该方法一般会被重写,当客户端向Action发送请求时,会调用此方法。

标签名称 说明
include 包含其他xml文件,在示例中,这意味着struts.xml可以访问定义在struts-default.xml文件中的组件。

该元素可以使得Struts2定义多个配置文件,“分而治之”。

要注意的是,任何一个struts2配置文件都应该和struts.xml有相同的格式,包括doctype,并且可以放在类路径下的任何地方。
package 为Action或截拦器分组。

name:名称,必填项,名称自定义,没特别要求。方便别的package引用。
extends:package能继承其他的package,即通过该属性实现,值为另一个package的name。

在示例中,extends =”struts-default”是从struts-default.xml中继承的。
action 定义Action,name属性为访问时用到的名称,class属性是Action的类名。
result 根据Action的返回值定义页面导航。

Action的预定义的返回值有:
String SUCCESS = "success";
String NONE    = "none";
String ERROR   = "error";
String INPUT   = "input";
String LOGIN   = "login";

比如,当Action返回SUCCESS时希望转到index.jsp页面,则可以这样写:
<result name=”success”>index.jsp</result>
    其中,name的缺省为success。

返回的页面代码
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
    
<head>
        
<title>Hello World!</title>
    
</head>
    
<body>
        
<h2><s:property value="message" /></h2>
    
</body>
</html>


最后访问http://127.0.0.1:8081/Hello.action 可能和你建的项目路径不同

这样就完成了一个hello world程序

还在学习中 如果有好的资料希望可以分享一下 最后还是希望可以提出宝贵意见
posted on 2007-12-11 12:34 LifeNote 阅读(1709) 评论(0)  编辑  收藏 所属分类: Javastruts

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


网站导航: