`
nokiaguy
  • 浏览: 6120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2教程1:第一个Struts2程序

阅读更多

    在本系列教程中我们将学习到 Struts2的各种技术。在本教程中使用的工具和程序库的版本如下:

开发工具: MyEclipse6

Web服务器: Tomcat6

Struts版本: Struts2.0.11.1

JDK版本: JDK1.5.0_12

J2EE版本: Java EE5.0

    在本系列教程中 Web工程的上下文路径都是 struts2,如果在 Web根目录有一个 index.jsp文件,则访问路径如下:

http://localhost:8080/struts2/index.jsp

    由于 MyEclipse6目前并不支持 Struts2,所以我们需要到 struts.apache.org去下载 Struts2安装包。要想正常使用 Struts2,至少需要如下五个包(可能会因为 Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。

struts2-core-2.0.11.1.jar

xwork-2.0.4.jar

commons-logging-1.0.4.jar

freemarker-2.3.8.jar

ognl-2.6.11.jar

    Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了 Struts1.x的方式(当然, Struts2仍然是基于 MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。 Struts2实际上是在 Webwork基础上构建起来的 MVC框架。我们从 Struts2的源代码中可以看到,有很多都是直接使用的 xwork(Webwork的核心技术 )的包。既然从技术上来说 Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。

    如果大家使用过 Struts1.x,应该对建立基于 Struts1.x Web程序的基本步骤非常清楚。让我们先来回顾一下建立基于 Struts1.x Web程序的基本步骤。

1.        安装 Struts。由于 Struts的入口点是 ActionServlet,所以得在 web.xml中配置一下这个 Servlet

2.        编写 Action类(一般从 org.apache.struts.action.Action类继承)。

3.        编写 ActionForm类(一般从 org.apache.struts.action.ActionForm类继承),这一步不是必须的,如果要接收客户端提交的数据,需要执行这一步。

4.        struts-config.xml文件中配置 Action ActionForm

5.        如果要 采集用户录入的数据,一般需要编写若干 JSP页面,并通过这些 JSP页面中的 form将数据提交给 Action

下面我们就按着编写 struts1.x程序的 这五步和 struts2.x程序的编写过程一一对应,看看它们谁更“酷”。下面我们来编写一个基于 Struts2 Web程序。这个程序的功能是让用户录入两个整数,并提交给一个 Struts Action,并计算这两个数的代数和,如果代码和为非负数,则跳转到 positive.jsp页面,否则跳转到 negative.jsp页面。

 

【第 1 步】 安装 Struts2

    这一步对于 Struts1.x Struts2都是必须的,只是安装的方法不同。 Struts1的入口点是一个 Servlet,而 Struts2的入口点是一个过滤器 (Filter)。因此, Struts2要按过滤器的方式配置。下面是在 web.xml中配置 Struts2的代码:

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

 

 

【第 2 步】 编写 Action

    这一步和 Struts1.x 也必须进行。只是 Struts1.x 中的动作类必须从 Action 类中继承,而 Struts2.x 的动作类需要从 com.opensymphony.xwork2.ActionSupport 类继承。下面是计算两个整数代码和的 Action 类,代码如下:

package  action;
  
import  com.opensymphony.xwork2.ActionSupport;
  
public   class  FirstAction  extends  ActionSupport
{
    
private   int  operand1;
    
private   int  operand2;
  
    
public  String execute()  throws  Exception
    {
        
if  (getSum()  >=   0 )   //  如果代码数和是非负整数,跳到positive.jsp页面
        {
            
return   " positive " ;
        }
        
else    //  如果代码数和是负整数,跳到negative.jsp页面
        {
            
return   " negative " ;
        }
    }
  
    
public   int  getOperand1()
    {
        
return  operand1;
    }
  
    
public   void  setOperand1( int  operand1)
    {
        System.out.println(operand1);
          
this .operand1  =  operand1;
    }
  
    
public   int  getOperand2()
    {
        
return  operand2;
    }  
    
public   void  setOperand2( int  operand2)
    {
        System.out.println(operand2);
        
this .operand2  =  operand2;
    }
    
public   int  getSum()
    {
        
return  operand1  +  operand2;   //  计算两个整数的代码数和
    }
}
 

从上面的代码可以看出,动作类的一个特征就是要覆盖 execute方法,只是 Struts2 execute方法没有参数了,而 Struts1.x execute方法有四个参数。而且 execute方法的返回值也不同的。 Struts2只返回一个 String,用于表述执行结果(就是一个标志)。上面代码的其他部分将在下面讲解。

【第 3 步】 编写 ActionForm

    在本例中当然需要使用 ActionForm了。在 Struts1.x中,必须要单独建立一个 ActionForm类(或是定义一个动作 Form),而在 Struts2 ActionForm Action已经二合一了。从第二步的代码可以看出,后面的部分就是应该写在 ActionForm类中的内容。所以在第 2步,本例的 ActionForm类已经编写完成(就是 Action类的后半部分)。

【第 4 步】 配置 Action

    这一步 struts1.x struts2.x 都是必须的,只是在 struts1.x 中的配置文件一般叫 struts-config.xml (当然也可以是其他的文件名),而且一般放到 WEB-INF 目录中。而在 struts2.x 中的配置文件一般为 struts.xml ,放到 WEB-INF"classes 目录中。下面是在 struts.xml 中配置动作类的代码:

<? xml version="1.0" encoding="UTF-8"  ?>
  
<! DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd"
>
  
< struts >
      
< package  name ="struts2"  namespace ="/mystruts"
          extends
="struts-default" >
          
< action  name ="sum"  class ="action.FirstAction" >
              
< result  name ="positive" > /positive.jsp </ result >
              
< result  name ="negative" > /negative.jsp </ result >
          
</ action >
      
</ package >
  
</ struts >
 

<struts>标签中可以有多个 <package>,第一个 <package>可以指定一个 Servlet访问路径(不包括动作名),如“ /mystruts”。 extends属性继承一个默认的配置文件“ struts-default”,一般都继承于它,大家可以先不去管它。 <action>标签中的 name属性表示动作名, class表示动作类名。

    <result>标签的 name实际上就是 execute方法返回的字符串,如果返回的是“ positive”,就跳转到 positive.jsp页面,如果是“ negative”,就跳转到 negative.jsp页面。在 <struts>中可以有多个 <package>,在 <package>中可以有多个 <action>。我们可以用如下的 URL来访问这个动作:

http://localhost:8080/struts2/mystruts/sum.action

Struts1.x的动作一般都以 .do结尾,而 Struts2是以 .action结尾。

【第 5 步】 编写用户录入接口( JSP页面)

1.       主界面( sum.jsp

Web根目录建立一个 sum.jsp,代码如下:

<% @ page language = " java "  import = " java.util.* "  pageEncoding = " GBK "   %>
  
<% @ taglib prefix = " s "  uri = " /struts-tags " %>
  
  
< html >
      
< head >
          
< title > 输入操作数 </ title >
      
</ head >
  
      
< body >
           求代数和
          
< br />
          
< s:form  action ="mystruts/sum.action"   >                 
              
< s:textfield  name ="operand1"  label =" 操作数1" />
              
< s:textfield  name ="operand2"   label =" 操作数2"   />         
              
< s:submit  value ="代数和"   />             
          
</ s:form >
      
</ body >
  
</ html >
 

sum.jsp中使用了 Struts2带的 tag。在 Struts2中已经将 Struts1.x的好几个标签库都统一了,在 Struts2中只有一个标签库 /struts-tags。这里面包含了所有的 Struts2标签。但使用 Struts2的标签大家要注意一下。在 <s:form>中最好都使用 Struts2标签,尽量不要用 HTML或普通文本,大家可以将 sum.jsp的代码改为如下的形式,看看会出现什么效果:

         ... ...

           求代数和

          <br/>

          <s:form action="mystruts/sum.action" >               

操作数 1 <s:textfield name="operand1" /><br/>

操作数 2 <s:textfield name="operand1" /><br/>

              <s:submit value="代数和 " />           

          </s:form>

          ... ...

    提示一下,在 <s:form> Struts2使用 <table>定位。

2.       positive.jsp

<% @ page language = " java "  import = " java.util.* "  pageEncoding = " GBK " %>
  
<% @ taglib prefix = " s "  uri = " /struts-tags "   %>
  
  
< html >
    
< head >
      
< title > 显示代数和 </ title >
    
</ head >
    
    
< body >     
      代数和为非负整数
< h1 >< s:property  value ="sum"   /></ h1 >
    
</ body >
  
</ html >  
 

3.       negative.jsp

  <% @ page language = " java "  import = " java.util.* "  pageEncoding = " GBK " %>
  
<% @ taglib prefix = " s "  uri = " /struts-tags "   %>
  
  
< html >
    
< head >
      
< title > 显示代数和 </ title >
    
</ head >
    
    
< body >
      代数和为负整数
< h1 >< s:property  value ="sum"   /></ h1 >
      
    
</ body >
  
</ html >  

 

    这两个 jsp页面的实现代码基本一样,只使用了一个 <s:property>标签来显示 Action类中的 sum属性值。 <s:property>标签是从 request对象中获得了一个对象中得到的 sum属性,如我们可以使用如下的代码来代替 <s:property value=”sum”/>

 

<%

 com.opensymphony.xwork2.util.OgnlValueStack ovs =

(com.opensymphony.xwork2.util.OgnlValueStack)request.getAttribute("struts.valueStack"); 

 out.println(ovs.findString("sum")); 

%>

    启动 Tomcat后,在 IE中输入如下的 URL来测试这个例子:

http://localhost:8080/struts2/sum.jsp

分享到:
评论

相关推荐

    转:struts1与struts2的区别

    为了解决这一问题,社区开发了第三方工具如Struts TestCase,它提供了一套用于模拟Struts1环境的组件。 - **Struts2**: 在Struts2中,可以通过初始化、设置属性和调用方法等方式轻松地测试Action。依赖注入的支持...

    struts 2教程资料

    3. **创建第一个Struts 2应用**:通过创建简单的Action类和配置文件,实现用户请求到响应的过程。 4. **Action和Result**:深入理解Action类的设计和Result的使用,了解不同的Result类型。 5. **拦截器**:学习...

    Struts2教程

    Struts2 Struts2 Struts2 教程 1 1 1 :第一个 Struts2 Struts2 Struts2 程序 在本系列教程中我们将学习到 Struts2 的各种技术。在本教程中使用的工具和程序库的版本 如下: 开发工具: MyEclipse6 Web 服务器: ...

    第一个struts2 程序

    本教程将深入探讨如何创建并运行你的第一个Struts2程序。 首先,我们需要了解Struts2的核心概念。Struts2框架提供了一种分层架构,它通过Action类处理用户请求,Action类与业务逻辑交互,并通过Result返回视图。...

    struts2学习教程

    struts2学习教程包括:第一个Struts2程序,处理一个form多个submit,struts.xml常用配置解析,使用validate方法验证数据,使用Validation框架验证数据,在Action类中获得HttpServletResponse对象的四种方法,上传...

    Struts2基础教程

    Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。本教程将介绍Struts2的基础知识,适合初学者入门。Struts2是在Webwork的基础上构建的,与它的前辈Struts1.x相比,虽然在大...

    传智播客struts2.1视频教程_介绍struts2及struts2开发环境的搭建

    7. **编写第一个Action**:创建一个Action类,实现你需要的业务逻辑,并指定结果页面。 8. **编写结果页面**:创建一个JSP页面,用于显示Action执行后的结果。 9. **配置struts.xml**:在struts.xml中配置Action,...

    Struts2教程DOC版

    本教程将逐步引导你了解并实践这些核心概念,从创建第一个Struts2项目,到配置Action、编写拦截器、处理表单提交、实现文件上传,再到利用Tiles进行页面布局,一步步深化对Struts2的理解。无论你是初学者还是有经验...

    Struts程序设计实例教程

    通过本书,读者可以学习如何设置Struts项目环境,创建第一个Struts应用,理解Struts的工作流程,编写Action类,以及使用Struts的标签库简化JSP页面的编写。同时,书中提供的实例将帮助读者巩固理论知识,提高实际...

    建立你的第一个Struts2应用程序

    ### 建立第一个Struts2应用程序:深入解析与实践 #### Struts2入门与环境搭建 在构建第一个Struts2应用程序的过程中,我们不仅需要掌握基本的开发流程,还应了解其与Java、Hibernate和Spring等框架的整合方法。...

    struts2教程源代码

    "strut2课程源代码第一天及说明"可能包含了逐步的教程,指导你从零开始搭建和运行一个简单的Struts2应用。 标签"struts2例子代码"表明这些源代码包含了具体的操作示例,比如Action类的编写、配置文件的设置、拦截器...

    Struts1入门教程实例

    **Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)设计模式,通过将业务逻辑、数据管理和用户界面分离,简化了Web应用程序的开发...

    struts2 项目教程

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展且易于管理的企业级Web应用。这个项目教程可能包含了从基础到高级的Struts2应用开发的全方位指导。以下是基于标题、描述和标签的一些关键知识点: 1...

    struts2教程 第02章 第一个Struts2应用

    本教程将引导你逐步学习如何创建并运行你的第一个Struts2应用程序。 在开始之前,你需要确保已经安装了Java Development Kit (JDK) 和 Apache Tomcat 服务器,因为它们是运行Struts2应用的基础。此外,你还需要下载...

    struts2教程pdf清晰版

    “1 ready.pdf”可能涵盖了如何快速启动一个Struts2项目,包括环境配置、依赖库的引入,以及创建第一个简单的Hello World应用。这部分可能会讲解如何创建和配置struts.xml配置文件,这是Struts2应用的入口点。 “2 ...

    struts2简单入门教程

    Struts2是一个强大的MVC(Model-View-Controller)框架,用于开发Java EE的Web应用程序。它在企业级Java应用开发中被广泛使用,尤其是在建立动态Web页面方面。作为一个基于WebWork核心的框架,Struts2在许多方面对...

    Struts 2权威指南:基于WebWork核心的MVC开发

    - **Struts 1**:作为第一个发布的MVC框架,Struts 1在发布之初便受到广泛关注。它基于Servlet和JSP技术,提供了强大的表单验证、国际化支持等功能,但随着项目规模的增长,其局限性逐渐显现,如配置繁琐、不易扩展...

    第一个struts程序

    这个问题搞了一个晚上。(希望对初学的朋友有帮助) 发现不能运行的原因 1、login.jsp的form表格里的action是在struts.xml中的name的属性的名字后面加上.action 例如: 2、web.xml中 org.apache.struts2.dispatcher...

    struts2jar包

    Struts2是一个强大的Java ...总的来说,Struts2是一个功能强大且成熟的MVC框架,其jar包的引入是搭建Struts2应用的第一步。正确理解和使用这些jar包以及框架的核心概念,能够帮助我们更高效地开发和维护Java Web项目。

    配置第一个Struts2的简单登陆程序

    本教程将指导新手配置第一个基于Struts2的简单登录程序。 首先,你需要从Apache Struts的官方网站下载Struts2的软件包。在编写此教程时,最新版本为Struts 2.0.11.2,但请注意,随着时间推移,可能会有新的版本发布...

Global site tag (gtag.js) - Google Analytics