转: 一个完整的struts 2 Hello World程序(5)上

2.2  一个简单的HelloWorld

上节介绍了搭建开发Struts 2应用所需要的环境的配置,本节将以一个简单的HelloWorld示例来介绍Struts 2给读者带来的体验。

为了使读者能够更清楚地了解示例的编写过程,示例将采用文本编辑器的方式来开发,这样避免了IDE集成编辑器给读者带来的困扰。开发一个Web应用,要建立符合规范的目录结构,上节中已经对Web应用目录进行了详细的介绍,为了开发HelloWorld应用,读者应该先建立一个目录。笔者建立的顺序如下:

 E盘中建立一个文件夹:E:\myweb

 在此文件夹中建立WEB-INF文件夹。

 建立E:\myweb\WEB-INF\classes文件夹。

 建立E:\myweb\WEB-INF\lib文件夹。

 Tomcat默认的web.xml文件拷贝到E:\myweb\WEB-INF\目录下,web.xml文件在Tomcat安装目录中的webapps\ROOT\WEB-INF目录下。

 使用文本编辑器建立一个struts.xml文件,保存到E:\myweb\WEB-INF\classes目录下。

2.2.1  配置web.xml文件

完成上述步骤后,一个简单的Web目录就完工了,接下来需要修改web.xml文件和struts.xml文件。web.xml文件内容如代码2.4所示。

代码2.4  HelloWorld示例的web.xml

 

<? xml version="1.0" encoding="UTF-8" ?>

< web-app  id ="WebApp_ID"  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--  >

        
< filter-name > struts2 </ filter-name >

        
< filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >

    
</ filter >

    
< filter-mapping >

            
<! —拦截所有URL用户请求

        <filter-name
> struts2 </ filter-name >

        
< url-pattern > /* </ url-pattern >

    
</ filter-mapping >

    
<! —配置欢迎界面文件--  >

< welcome-file-list >

        
< welcome-file > index.html </ welcome-file >

        
< welcome-file > index.htm </ welcome-file >

        
< welcome-file > index.jsp </ welcome-file >

        
< welcome-file > default.html </ welcome-file >

        
< welcome-file > default.htm </ welcome-file >

        
< welcome-file > default.jsp </ welcome-file >

    
</ welcome-file-list >

</ web-app >

 

在代码2.4所示内容中,相比原来的内容,增加了<filter><filter-mapping><filter>指定了需要加载的Struts 2核心控制器org.apache.struts2.dispatcher.FilterDispatcher,而<filter-mapping>使用通配符“/*”来拦截所有的URL请求,保证了用户请求都被Struts 2接收处理。

2.2.2  配置struts.xml文件

编辑struts.xml文件内容,如代码2.5所示。

代码2.5  HelloWorld示例的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"
>

<! —配置struts2-- >

< struts >

    
<!--  配置包,名称为bookcode   -->

    
< package  name ="bookcode"  extends ='struts-default'>

    
<!-- 配置Action  -- >

    
< action  name ="HelloWorld"  class ="ch2.helloworld.HelloWorld" >

            
<!--  配置返回结果   -->

            
< result  name ="success" > /ch2/helloworld/success.jsp </ result >

            
< result  name ="error" > /ch2/helloworld/error.jsp </ result >

        
</ action >

    
</ package >

 

</ struts >

 

在默认情况下,Struts 2将会自动加载位于WEB-INF\classes目录下的struts.xml配置文件。<package>定义了一个包空间,可以看到,该文件中只配置了一个Actionname为“HelloWorld”,对应的class为“ch2.HelloWorld”,也就是指定WEB-INF\classes\ch2目录下的HelloWorld.class类文件,当然现在还没有这个文件,后面将会编写该文件。

 说明 

bookcode是本书示例的包名称,该包继承Struts 2框架的默认包struts-default,读者在后面章节将会学习使用extends属性。

 

另外一个配置就是result,即Action处理后返回给用户的视图资源,从配置中可以看到配置了两个resultsuccesserror,分别对应E:\myweb\ch2目录下的success.jsperror.jsp,后面也将会建立这两个文件。

本节介绍的HelloWorld的思路是用户在客户端输入一个字符串,由Action判断输入的字符串是否为空,如果不为空,则返回给用户success.jsp页面,并在控制台打印出该字符串;如果用户输入为空,则返回error.jsp页面给用户,提示输入为空。这个流程可以用图2.16来说明。用户输入字符串,发送请求给Struts 2框架的核心控制器FilterDispatcherFilterDispatcher根据配置,将请求转发给ActionAction是业务控制器,来判断用户输入的内容进行相应的操作。

 

2.16  HelloWorld的流程图

2.2.3  Action业务控制器

如图2.16所示,HelloWorld应用中的Action是业务控制器。通过第1章对Struts 2的简单介绍,读者应该知道,Struts 2Action可以是一个普通的Java类(POJO),与Struts 1有很大的不同,这里的HelloWorld内容如代码2.6所示。

代码2.6  业务控制器HelloWord

 

package  ch2.helloworld;

public   class  HelloWorld  {

    
//定义msg属性

    
private String msg;

    
//msg的get方法

    
public String getMsg() {

        
return msg;

    }


    
//msg的set方法

    
public void setMsg(String msg) {

        
this.msg = msg;

    }


    
//Action的execute()处理方法

    
public String execute() {

        
//判断条件

        
if (getMsg().equals("")) {

            
//显示错误信息

            System.out.println(
"no String input!");

            
//返回错误结果

            
return "error";

        }
 else {

            
//显示用户输入的信息

            System.out.println(getMsg());

            
//返回一个处理成功结果

            
return "success";

        }


    }


}


 

1)如代码2.6所示,HelloWorld没有继承任何类,也没有实现任何接口,是一个标准的Java类。定义了一个msg属性,对应用户输入的字符串,并提供了msgget()set()方法。execute()方法是实现业务控制器的默认方法,该方法只是返回一个String,并没有特别之处。

2)在execute()方法中,对msg内容进行判断,如果非空,则在控制台打印该字符串,并返回一个“success”字符串,对应代码2.5中的success.jsp页面。

3)如果msg为空,则在控制台输出一条警告,并返回“error”,对应error.jsp页面。读者会发现,Struts 2中的Action变得简单易懂,很容易对其进行测试。

 说明 

Struts 2的业务控制器Action是一个普通的Java类。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值