Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30479397
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: Java

2008-10-23 13:59:05

Struts2有自己的圈子了,我也写一个Struts2的入门实例吧。

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

首先我们先来搭建环境:

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

   

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

1.       ognl-2.6.11.jar

2.       struts2-core-2.0.9.jar

3.       xwork-2.0.4.jar

4.       freemakerker-2.38.jar

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

xml 代码
  1.  version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns=""  
  3.     xmlns:xsi=""  
  4.     xsi:schemaLocation="    
  5.     /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的配置没有什么区别。

 

既然是MVC,那这三层是缺一不可。

1.先来Model层:

HelloWorld.java

 

  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.                     
  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层就算是完成了。

 

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.                     
  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下建立下面的配置文件:

 

 

struts.xml

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

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

配置文件这东西和

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

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

 

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

View1 index.jsp

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一切装备完成,最后,你的目录结构是这个样子:

  

 

 

发布你的系统,开始运行吧! 好运

 

 

View2 success.jsp

  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 代码
阅读(2903) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~