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

Struts2的第一个入门实例(一)

阅读更多

 

Struts2有自己的圈子了,我也写一个Struts2的入门实例吧。<o:p></o:p>

本人是从Struts1Spring MVC过来的,发现Struts2与前面两种MVC有很大区别,不过总的来说Struts2代码量更少一些,但配置文件都没有多大变化,还是换汤不换药,这个例子并未采用Annotation方式,所以还是以XML配置文件为主。<o:p></o:p>

首先我们先来搭建环境:<o:p></o:p>

我用的是WinXP2+MyEclipse6.0 Struts2的包是2.09的。先在MyEclipse建立一个Web项目,叫struts2_base如图:

   

系统会自动生成一些常用的文件夹和配置文件。把下面几个包复制到lib里:<o:p></o:p>

1.       ognl-<st1:chsdate month="12" islunardate="False" day="30" year="1899" w:st="on" isrocdate="False">2.6.11</st1:chsdate>.jar<o:p></o:p>

2.       struts2-core-<st1:chsdate month="12" islunardate="False" day="30" year="1899" w:st="on" isrocdate="False">2.0.9</st1:chsdate>.jar<o:p></o:p>

3.       xwork-<st1:chsdate month="12" islunardate="False" day="30" year="1899" w:st="on" isrocdate="False">2.0.4</st1:chsdate>.jar<o:p></o:p>

4.       freemakerker-2.38.jar<o:p></o:p>

打开web.xml,修改成以下配置:

xml 代码
  1. <!----><!----> version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.   
  7.     <filter>  
  8.         <filter-name>struts2filter-name>  
  9.         <filter-class>  
  10.             org.apache.struts2.dispatcher.FilterDispatcher   
  11.         filter-class>  
  12.     filter>  
  13.   
  14.   
  15.     <filter-mapping>  
  16.         <filter-name>struts2filter-name>  
  17.         <url-pattern>/*url-pattern>  
  18.     filter-mapping>  
  19.   
  20.   
  21.     <welcome-file-list>  
  22.         <welcome-file>index.jspwelcome-file>  
  23.         <welcome-file>index.htmlwelcome-file>  
  24.         <welcome-file>index.htmwelcome-file>  
  25.     welcome-file-list>  
  26.   
  27. web-app>  

到现在为止,剩下的工作就是如何使用Struts2了。上面的步骤永远是相同的,就是一个复制粘贴的过程,同你自己写的Servlet,Filter的配置没有什么区别。

<o:p> </o:p>

既然是MVC,那这三层是缺一不可。<o:p></o:p>

1.先来Model层:<o:p></o:p>

HelloWorld.java<o:p></o:p>

 

  1. /*************************************************  
  2.   @Copyright (C), 2007, Zheren Huinen   
  3.   @File name:      HelloWorld.java  
  4.   @Author:         Superleo  
  5.   @CreateDate:     2007-9-29   
  6.   @Description:    HelloWorld实体类      
  7.   @Extends:          
  8.   @Implement:        
  9.   @Function List:   
  10.     1. public String getWords()  
  11.             返回设定的字符串  
  12.     2. public void setWords(String words)  
  13.             设置字符串  
  14.       
  15.   @History:  
  16.     <author></author>      <time></time>          
  17.     Superleo    2007/9/29     1.0       建立HelloWorld实体   
  18.       
  19.  *************************************************/  
  20. package com.superleo.po;   
  21.   
  22. public class HelloWorld {   
  23.     private String words;   
  24.   
  25.     public String getWords() {   
  26.         return words;   
  27.     }   
  28.   
  29.     public void setWords(String words) {   
  30.         this.words = words;   
  31.     }   
  32.   
  33. }   

 

 

java 代码

建立一个简单的对象,应该对象只有一个属性words。这样,Model层就算是完成了。

<o:p> </o:p>

2.再来实现Controller层。

HelloAction.java

java 代码
  1. /*************************************************  
  2.   @Copyright (C), 2007, Zheren Huinen   
  3.   @File name:      HelloAction.java  
  4.   @Author:         Superleo  
  5.   @CreateDate:     2007-9-29   
  6.   @Description:    HelloAction控制类      
  7.   @Extends:          
  8.   @Implement:        
  9.   @Function List:   
  10.     1. public HelloWorld getHelloWorld()  
  11.             返回一个HelloWorld实体  
  12.     2. public void setHelloWorld(HelloWorld helloWorld)   
  13.             设置一个HelloWorld实体  
  14.     3. public String execute()  
  15.             执行Action的方法  
  16.       
  17.   @History:  
  18.     <author></author>      <time></time>          
  19.     Superleo    2007/9/29     1.0       建立HelloWorld实体   
  20.       
  21.  *************************************************/  
  22. package com.superleo.controller;   
  23.   
  24. import com.opensymphony.xwork2.ActionSupport;   
  25. import com.superleo.po.HelloWorld;   
  26.   
  27. /**  
  28.  * @author Administrator  
  29.  *   
  30.  */  
  31. public class HelloAction extends ActionSupport {   
  32.   
  33.     private static final long serialVersionUID = 1L;   
  34.   
  35.     private HelloWorld helloWorld;   
  36.   
  37.     public HelloWorld getHelloWorld() {   
  38.         return helloWorld;   
  39.     }   
  40.   
  41.     public void setHelloWorld(HelloWorld helloWorld) {   
  42.         this.helloWorld = helloWorld;   
  43.     }   
  44.   
  45.     @Override  
  46.     public String execute() {   
  47.         return SUCCESS;   
  48.     }   
  49.   
  50. }   

 

 

也没有什么好说的,和实体其实感觉上还是一样的。这就是Struts2的高明之处――你的Action不会到外都是request, response, session这些耳熟能详的对象了,一切变的简单了,这个转变估计也是需要时间来体会它的巧妙(当然request, response, session还能正常使用,这个例子太简单了,就没用上。)

在这里,要注意这个“return SUCCESS;

这个SUCCESS是事先定义好的常量,意思是如果执行没有问题,则跳转到SUCCESS指定的页面。于是在SRC下建立下面的配置文件:

<o:p> </o:p>

<o:p> </o:p>

struts.xml

Java语法一样,第一看挺吓人的,这么多,一大堆。其实熟悉以后就发现只有那么几个东西配置来配置去的,而且常用的也只有那几个。<o:p></o:p>

xml 代码
  1. <!---->
  2.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  3. <struts>  
  4.     <!---->  
  5.     <include file="struts-default.xml" />  
  6.   
  7.     <!---->  
  8.     <package name="default" extends="struts-default">  
  9.         <action name="hello"  
  10.             class="com.superleo.controller.HelloAction">  
  11.             <result name="success">success.jspresult>  
  12.             <result name="input">index.jspresult>  
  13.         action>  
  14.   
  15.     package>  
  16. struts>  

配置文件这东西和

在这个配置文件里,我们把自己定义好的HelloAction类配置好,并给它起了个别名叫“hello,View层页面调用.<o:p></o:p>

xml 代码
  1. <result name="success">success.jspresult> 执行成功跳转的页面   
  2. <result name="input">index.jspresult>  执行失败跳转的页面(这里还涉及到一个验证的问题,具体请看下次第二个版本。)   

 

 

最后就是View层了,这里只有两个很简单的页面:

View1 index.jsp

<o:p>

<o:p></o:p>

xml 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2.   
  3. >  
  4. <html>  
  5.   <head>  
  6.     <title>你好,世界title>  
  7.     <meta http-equiv="pragma" content="no-cache">  
  8.     <meta http-equiv="cache-control" content="no-cache">  
  9.     <meta http-equiv="expires" content="0">       
  10.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  11.     <meta http-equiv="description" content="This is my page">  
  12.   head>  
  13.      
  14.   <body>  
  15.        
  16.     <form action="hello.action" method="post">  
  17.         <fieldset>  
  18.             <legend>Struts2入门实例legend>  
  19.             <p>  
  20.                    
  21.                 <label id="helloWorld.words">请输入你想说的话:label>  
  22.                                 <input type="text" name="helloWorld.words" value="试试看!" />  
  23.             p>  
  24.             <p>  
  25.                 <input type="submit" value="提交" />  
  26.             p>  
  27.         fieldset>  
  28.     form>  
  29.        
  30.        
  31.   body>  
  32. html>  
OK一切装备完成,最后,你的目录结构是这个样子:<o:p></o:p>

<o:p>   </o:p>

<v:shapetype id="_x0000_t75" o:spt="75" coordsize="21600,21600" stroked="f" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"></v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas></v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f><v:path gradientshapeok="t" o:extrusionok="f" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock><v:shape id="_x0000_i1025" style="WIDTH: 210.75pt; HEIGHT: 267pt" type="#_x0000_t75"></v:shape><v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\22\clip_image001.png" o:title=""></v:imagedata><o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

发布你的系统,开始运行吧! 好运<o:p></o:p>

 

 

View2 success.jsp

<o:p>
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2.   
  3. <!---->>  
  4. <html>  
  5.   <head>  
  6.     <title>成功啦title>  
  7.     <meta http-equiv="pragma" content="no-cache">  
  8.     <meta http-equiv="cache-control" content="no-cache">  
  9.     <meta http-equiv="expires" content="0">       
  10.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  11.     <meta http-equiv="description" content="This is my page">  
  12.   head>  
  13.      
  14.   <body>  
  15.     <!---->  
  16.     您所输入的文字是:${helloWorld.words} <br>  
  17.        
  18.   
  19.        
  20.   body>  
  21. html>  
xml 代码
</o:p>
</o:p>
分享到:
评论
4 楼 podie881111 2008-02-29  
问个问题 : 我的EL表达式放在页面中为什么不行了?
3 楼 kyo100900 2007-10-14  
个人感觉最大的区别是:Spring是集大成者,和Struts2或Webwork的集成只是它的Web一个方面,这个强大的IoC还可以集成很多你想要的技术。Struts2默认的IoC容器已经是Spring了,我一直用的是Struts2+Spring+Hibernate/JDBC,所以它们自带的IoC容器并没有真正使用过。
2 楼 bangyan2003 2007-10-14  
楼上的 具体解释原因 strut2的ioc比spring 几点不好  具体说说呢?
1 楼 weifly 2007-10-12  
和WebWork的配置果然是一样的,只是名字不同
要是能讲些和Spring的集成就更好了,毕竟Struts2的IoC容器太差劲了  

相关推荐

    Struts2的第一个入门实例(三)--Struts2与Guice整合

    Struts2是一个流行的Java Web应用程序框架,用于构建和维护可扩展、模块化和易于管理的Web应用。在本实例中,我们将深入探讨如何将Google的依赖注入框架Guice与Struts2整合,以实现更高效、更灵活的代码管理。 在...

    struts2入门例子

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,它极大地简化了企业级Web应用的开发。这个"struts2入门例子"旨在帮助初学者理解Struts2的基本架构和核心功能,通过实际操作来学习如何配置...

    struts2经典实例

    这个例子简单地演示了如何设置Struts2环境,创建第一个Action并显示简单的输出。 通过以上这些实例,你可以逐步学习和掌握Struts2的配置、Action、拦截器、结果类型、OGNL表达式、数据绑定、国际化、安全等方面的...

    Struts1入门教程实例

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

    Struts2简介与入门

    Struts2的出现是为了结合Struts1和WebWork的技术优势,形成了一个全新的框架。它以WebWork为核心,同时保留了Struts1风格的开发流程。Struts2框架的版本号分为两个系列,即1.x和2.x,分别代表了Struts1和Struts2。 ...

    struts2+myeclipse 入门例子

    在MyEclipse中,创建一个Struts2项目的第一步是新建一个Dynamic Web Project,并导入Struts2的库。这些库包括struts2-core、struts2-convention、struts2-plugins等,它们包含了Struts2框架运行所需的所有组件。 接...

    Struts2 入门配置小实例

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、模块化和易于管理的Web应用。这个入门配置小实例将带你了解如何在实际项目中设置和使用Struts2框架。以下是一些核心知识点: 1. **MVC模式**: ...

    Struts2+Spring入门教程及实例

    讲解如何创建第一个Struts2应用,以及配置struts.xml文件。 2. **MVC模式**:深入理解模型、视图和控制器的职责,解释如何将业务逻辑与表现层分离,提高代码复用性。 3. **Struts2的Action**:讲解如何定义Action...

    Struts2 最基础快速入门

    在"Struts2 最基础快速入门"教程中,你可能会学习如何创建一个简单的Struts2项目,包括以下步骤: 1. **环境搭建**:安装并配置Java SDK、Apache Tomcat服务器、Eclipse IDE(或其他IDE),以及Struts2相关的库。 ...

    【张冰Struts2学习笔记】0102_第一个Struts2实例

    这篇学习笔记将带你入门Struts2,通过创建第一个实例来理解其核心概念和基本配置。 首先,了解Struts2框架的结构至关重要。Struts2的核心组件包括Action、Result、Interceptor等,它们协同工作,处理HTTP请求并呈现...

    Struts+Hibernate+Spring入门教程及实例.rar

    Struts是一个开源的MVC(Model-View-Controller)框架,主要用于构建基于Java EE的Web应用程序。它提供了一种组织应用逻辑的方式,将业务逻辑、控制流程和显示分离,提高了代码的可维护性和可扩展性。Struts通过...

    struts2+spring实例

    在这个"struts2+spring实例"中,我们将会探讨如何将这两个框架集成在一起,以创建一个简单的Hello World应用程序。这个入门例子旨在帮助开发者快速理解如何配置和使用这两个框架协同工作。 首先,我们需要了解...

    struts框架第一个例子

    这个"struts框架第一个例子"是初学者入门Struts的重要实践,通过它我们可以了解Struts的核心概念、配置以及如何将其实现到实际项目中。 首先,让我们深入了解Struts框架。Struts是由Apache软件基金会维护的一个开源...

    Struts2 实例 HelloWorld

    本章的目标是完成一个简单的“Hello World”实例开发,该实例的目的是让读者能够对Struts2有一个整体的认识,并熟悉glassfish2的使用。具体来说,这个实例主要包括以下几个方面: ##### 3.1 需求分析 - **功能**:...

Global site tag (gtag.js) - Google Analytics