Struts2的第一个入门实例(一) 博客分类: Struts2 SpringStrutsF#IOCJSP
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>
上一篇: 浅析MySQL之字符串函数_MySQL
下一篇: 写个正则表达式解决方案
推荐阅读
-
Struts2的第一个入门实例(二)--什么是code-behind 博客分类: Struts2 StrutsJSPApacheMyeclipseXML
-
原来是Struts2.0的一个Bug 博客分类: Struts2 StrutsSocketJSPXMLWorkflow
-
Struts2的第一个入门实例(一) 博客分类: Struts2 SpringStrutsF#IOCJSP
-
Struts2的第一个入门实例(三)--Struts2与Guice整合 博客分类: Struts2 StrutsSpringGoogleXMLWeb
-
Struts2的第一个入门实例(三)--Struts2与Guice整合 博客分类: Struts2 StrutsSpringGoogleXMLWeb