- 浏览: 639388 次
- 性别:
- 来自: 北京
最新评论
-
2047699523:
java hibernate demo使用实例教程源代码下载: ...
hibernate延迟加载的原理与实现 -
在世界的中心呼喚愛:
hantsy 写道这种lazy的解释只对了一半,按java p ...
hibernate延迟加载的原理与实现 -
moguicy:
看了下时间,不是楼主是否还在开发
【翻译】Wicket启示录——理论与实践(一) -
xfan0828:
"最后但并不是最不重要的一点就是" BZ, ...
【翻译】深入浅出 EJB3.1(上) -
doudou87323:
十分感谢,正在学习中,受益匪浅
【翻译】深入浅出 EJB3.1(上)
Struts2有自己的圈子了,我也写一个Struts2的入门实例吧。<o:p></o:p>
本人是从Struts1与Spring 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,修改成以下配置:
- <!----><!----> version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <filter>
- <filter-name>struts2filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- filter-class>
- filter>
- <filter-mapping>
- <filter-name>struts2filter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- <welcome-file-list>
- <welcome-file>index.jspwelcome-file>
- <welcome-file>index.htmlwelcome-file>
- <welcome-file>index.htmwelcome-file>
- welcome-file-list>
- 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>
- /*************************************************
- @Copyright (C), 2007, Zheren Huinen
- @File name: HelloWorld.java
- @Author: Superleo
- @CreateDate: 2007-9-29
- @Description: HelloWorld实体类
- @Extends:
- @Implement:
- @Function List:
- 1. public String getWords()
- 返回设定的字符串
- 2. public void setWords(String words)
- 设置字符串
- @History:
- <author></author> <time></time>
- Superleo 2007/9/29 1.0 建立HelloWorld实体
- *************************************************/
- package com.superleo.po;
- public class HelloWorld {
- private String words;
- public String getWords() {
- return words;
- }
- public void setWords(String words) {
- this.words = words;
- }
- }
建立一个简单的对象,应该对象只有一个属性words。这样,Model层就算是完成了。
<o:p> </o:p>
2.再来实现Controller层。
HelloAction.java
- /*************************************************
- @Copyright (C), 2007, Zheren Huinen
- @File name: HelloAction.java
- @Author: Superleo
- @CreateDate: 2007-9-29
- @Description: HelloAction控制类
- @Extends:
- @Implement:
- @Function List:
- 1. public HelloWorld getHelloWorld()
- 返回一个HelloWorld实体
- 2. public void setHelloWorld(HelloWorld helloWorld)
- 设置一个HelloWorld实体
- 3. public String execute()
- 执行Action的方法
- @History:
- <author></author> <time></time>
- Superleo 2007/9/29 1.0 建立HelloWorld实体
- *************************************************/
- package com.superleo.controller;
- import com.opensymphony.xwork2.ActionSupport;
- import com.superleo.po.HelloWorld;
- /**
- * @author Administrator
- *
- */
- public class HelloAction extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private HelloWorld helloWorld;
- public HelloWorld getHelloWorld() {
- return helloWorld;
- }
- public void setHelloWorld(HelloWorld helloWorld) {
- this.helloWorld = helloWorld;
- }
- @Override
- public String execute() {
- return SUCCESS;
- }
- }
也没有什么好说的,和实体其实感觉上还是一样的。这就是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>
- <!---->
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!---->
- <include file="struts-default.xml" />
- <!---->
- <package name="default" extends="struts-default">
- <action name="hello"
- class="com.superleo.controller.HelloAction">
- <result name="success">success.jspresult>
- <result name="input">index.jspresult>
- action>
- package>
- struts>
配置文件这东西和
在这个配置文件里,我们把自己定义好的HelloAction类配置好,并给它起了个别名叫“hello”,供View层页面调用.<o:p></o:p>
- <result name="success">success.jspresult> 执行成功跳转的页面
- <result name="input">index.jspresult> 执行失败跳转的页面(这里还涉及到一个验证的问题,具体请看下次第二个版本。)
最后就是View层了,这里只有两个很简单的页面:
View1: index.jsp
<o:p><o:p></o:p>
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- >
- <html>
- <head>
- <title>你好,世界title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- head>
- <body>
- <form action="hello.action" method="post">
- <fieldset>
- <legend>Struts2入门实例legend>
- <p>
- <label id="helloWorld.words">请输入你想说的话:label>
- <input type="text" name="helloWorld.words" value="试试看!" />
- p>
- <p>
- <input type="submit" value="提交" />
- p>
- fieldset>
- form>
- body>
- html>
<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>- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <!---->>
- <html>
- <head>
- <title>成功啦title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- head>
- <body>
- <!---->
- 您所输入的文字是:${helloWorld.words} <br>
- body>
- html>
- struts2_base.rar (3.1 MB)
- 描述: 入门实例源代码
- 下载次数: 2103
评论
要是能讲些和Spring的集成就更好了,毕竟Struts2的IoC容器太差劲了
发表评论
-
自己动手写一个Struts2
2008-08-14 00:10 15348使用Struts2或webwork2有一段时间了,想把Stru ... -
Struts2(Webwork2)一些实战开发技巧
2008-06-02 21:18 5859一. 使用反射动态取出 Pojo 的属性 这一招在 ... -
Struts2的第一个入门实例(三)--Struts2与Guice整合
2008-02-15 14:29 9093Guice可真轻啊,所需的3个Jar包才不到600k。但缺点就 ... -
Struts2,Webwork2关于使用FCKeditor,richtexteditor 的解决方法
2008-01-31 00:18 4431一 Webwork2 + FCkeditor 这个问题由来 ... -
Struts2所有插件简介--目前到达40余种
2008-01-26 17:06 10841今天无意查看了Struts2的插件时,发现已经林林总总有40个 ... -
Struts2的第一个入门实例(二)--什么是code-behind
2008-01-13 19:26 8813Struts2的Code-behind究竟是什么?ROR那样的 ... -
Struts2.0.11在Tomcat5.5, Jetty 以及 Weblogic10等运行的不同
2008-01-06 22:53 5876终于有时间玩玩最新版本的Struts2.0.11了, 与上一个 ... -
struts2 奇怪的Action警告
2008-01-06 21:20 13093不知道大家有没有遇到在使用表单的时候,有时候会出一个莫名其妙的 ... -
经验不足,差一点重构整个系统
2007-12-30 19:36 4031呵呵,很久没有来JavaEye写文章了,公司工作也 ... -
Struts2+Spring+Hibernate In Action(四)
2007-11-01 01:43 5494第二部分: 1.DWR的配置: DWR是Java一个比较常用的 ... -
Struts2+Spring+Hibernate In Action(三)
2007-11-01 00:43 60273. Controller配置: Struts2的 ... -
Struts2+Spring+Hibernate In Action(二)
2007-11-01 00:30 6126当所有的Service配置好了,可以当他们统统配置在Sprin ... -
原来是Struts2.0的一个Bug
2007-10-27 23:00 5609开始使用的是Struts2.06版本。在配置Struts.xm ... -
Struts2需要注意的一个小地方
2007-10-22 17:49 15996今天在运行Struts2时,无意间发现程序在写Struts.x ... -
Struts2+Spring+Hibernate In Action(一)
2007-11-01 00:26 18185前言: 关于Struts2系列的文章网上基本上都有了,但鲜有 ... -
Struts2在路上2。。。。。。
2007-09-14 16:16 44092.关于关闭Struts2自动验证的烦人英文问题。 应该有不少 ... -
Struts2在路上。。。。。。
2007-09-12 14:25 54941.Struts2强大,但也有很多需要解决的问题。就拿我现在这 ...
相关推荐
Struts2是一个流行的Java Web应用程序框架,用于构建和维护可扩展、模块化和易于管理的Web应用。在本实例中,我们将深入探讨如何将Google的依赖注入框架Guice与Struts2整合,以实现更高效、更灵活的代码管理。 在...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,它极大地简化了企业级Web应用的开发。这个"struts2入门例子"旨在帮助初学者理解Struts2的基本架构和核心功能,通过实际操作来学习如何配置...
这个例子简单地演示了如何设置Struts2环境,创建第一个Action并显示简单的输出。 通过以上这些实例,你可以逐步学习和掌握Struts2的配置、Action、拦截器、结果类型、OGNL表达式、数据绑定、国际化、安全等方面的...
**Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)设计模式,通过将业务逻辑、数据管理和用户界面分离,简化了Web应用程序的开发...
Struts2的出现是为了结合Struts1和WebWork的技术优势,形成了一个全新的框架。它以WebWork为核心,同时保留了Struts1风格的开发流程。Struts2框架的版本号分为两个系列,即1.x和2.x,分别代表了Struts1和Struts2。 ...
在MyEclipse中,创建一个Struts2项目的第一步是新建一个Dynamic Web Project,并导入Struts2的库。这些库包括struts2-core、struts2-convention、struts2-plugins等,它们包含了Struts2框架运行所需的所有组件。 接...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、模块化和易于管理的Web应用。这个入门配置小实例将带你了解如何在实际项目中设置和使用Struts2框架。以下是一些核心知识点: 1. **MVC模式**: ...
讲解如何创建第一个Struts2应用,以及配置struts.xml文件。 2. **MVC模式**:深入理解模型、视图和控制器的职责,解释如何将业务逻辑与表现层分离,提高代码复用性。 3. **Struts2的Action**:讲解如何定义Action...
在"Struts2 最基础快速入门"教程中,你可能会学习如何创建一个简单的Struts2项目,包括以下步骤: 1. **环境搭建**:安装并配置Java SDK、Apache Tomcat服务器、Eclipse IDE(或其他IDE),以及Struts2相关的库。 ...
这篇学习笔记将带你入门Struts2,通过创建第一个实例来理解其核心概念和基本配置。 首先,了解Struts2框架的结构至关重要。Struts2的核心组件包括Action、Result、Interceptor等,它们协同工作,处理HTTP请求并呈现...
Struts是一个开源的MVC(Model-View-Controller)框架,主要用于构建基于Java EE的Web应用程序。它提供了一种组织应用逻辑的方式,将业务逻辑、控制流程和显示分离,提高了代码的可维护性和可扩展性。Struts通过...
在这个"struts2+spring实例"中,我们将会探讨如何将这两个框架集成在一起,以创建一个简单的Hello World应用程序。这个入门例子旨在帮助开发者快速理解如何配置和使用这两个框架协同工作。 首先,我们需要了解...
这个"struts框架第一个例子"是初学者入门Struts的重要实践,通过它我们可以了解Struts的核心概念、配置以及如何将其实现到实际项目中。 首先,让我们深入了解Struts框架。Struts是由Apache软件基金会维护的一个开源...
本章的目标是完成一个简单的“Hello World”实例开发,该实例的目的是让读者能够对Struts2有一个整体的认识,并熟悉glassfish2的使用。具体来说,这个实例主要包括以下几个方面: ##### 3.1 需求分析 - **功能**:...