您现在的位置: 启天网 >> 技术中心 >> Java >> 正文
今天是:
[组图]struts2下一个简单的HelloWorld         ★★★★★ 【字体:
struts2下一个简单的HelloWorld
作者:Struts2B…    文章来源:CSDN Blog    点击数:    更新时间:2008-9-4

上节介绍了搭建开发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目录下。

 

完成上述步骤后,一个简单的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接收处理。

编辑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.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;

    //msgget方法

    public String getMsg() {

        return msg;

    }

    //msgset方法

    public void setMsg(String msg) {

        this.msg = msg;

    }

    //Actionexecute()处理方法

    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类。

 

到这里为止,该示例只缺少success.jsperror.jsp和一个用户输入界面HelloWorld.jsp,读者可以使用文本编辑器建立,也可以使用各种网页编辑器来制作,以提高效率。

1HelloWorld.jsp内容如代码2.7所示。

代码2.7  输入界面HelloWorld.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>Hello World!!</title>

</head>

<body>

    <!—formaction指向定义的action名称 -->

<form id="form1" name="form1" method="post" action="HelloWorld.action">

  <p>输入信息:

    <label>

    <input name="msg" type="text" id="username" />

    </label>

  </p>

   <p>

    <label>

    <input type="submit" name="Submit" value="提交" />

    </label>

  </p>

 </form>

</body>

</html>

在代码2.7所示内容中,formaction指向“HelloWorld”,提交一个namemsg的字符串,这是一个普通的JSP文件。

2success.jsp内容如代码2.8所示。

代码2.8  输出界面success.jsp

<%@ page language="java" contentType="text/html; charset=gb2312"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>返回界面</title>

</head>

<body>

HelloWorld,Struts 2!

</body>

</html>

代码2.8所示内容很简单,只是输出“HelloWorld,Struts 2!”提示。

3error.jsp内容如代码2.9所示。

代码2.9  错误界面error.jsp

<%@ page language="java" contentType="text/html; charset=gb2312"

    pageEncoding="gb2312"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>错误界面</title>

</head>

<body>

您没有输入内容!

</body>

</html>

error.jsp也只是提示录入错误信息。

说明

Struts 2框架支持多种结果类型,默认类型支持JSP

 

经过上述编写,第一个Struts 2应用已经完成,将E:\myweb文件夹复制到C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps目录下,启动Tomcat,准备运行程序。

 在浏览器中输入http://localhost:8080/bookcode/ch2/helloworld/HelloWorld.jsp,出现如图2.17所示界面。

 在文本框中输入“Hello World!”,单击“提交”按钮,出现如图2.18所示界面。Tomcat控制台会输出如下内容:

2007-11-21 21:19:56 com.opensymphony.xwork2.validator.ActionValidatorManagerFactory <clinit>

信息: Detected AnnotationActionValidatorManager, initializing it...

Hello World!

 如果用户没有输入内容,直接单击“提交”按钮,返回页面如图2.19所示。同时,Tomcat控制台输出如下内容:

no String input!

         

2.17  HelloWorld.jsp页面           

              

2.18  success.jsp页面

2.19  error.jsp页面

成功运行这个示例,是了解Struts 2的良好开端,这是一个极其简单的示例,并没有完全展示Struts 2的所有特点,但给读者带来了一个感性了解Struts 2的体验。

说明

Struts 2框架默认URL后缀不再是Struts 1.X框架的*.do,而是*.action

 

初次完成一个Struts 2Hello World示例,读者将会了解:

web.xml中需要加入Struts 2的加载配置。

struts.xml中定义Action,其中包含Action返回视图的定义。

Struts 2Action是一个简单的Java类,没有丝毫特别之处。

Actionexecute()方法只是返回一个String

文章录入:junsan    责任编辑:junsan05 
  • 上一篇文章:
  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    Struts2建立一个数据库连接组件
    Struts 2整合MyFaces
    Struts 2整合Spring
    Struts2文件下载的权限控制
    Struts 2控制文件下载
    Struts 2多文件上传
    Struts 2标签库的组成和使用
    OGNL,简单的struts 2专用表达式
    Struts 2拦截器
    Struts 2 中的AJAX输入校验
     网友评论:(最新10条。只代表网友观点,与本站立场无关!)