码迷,mamicode.com
首页 > 其他好文 > 详细

structs 2.x 框架的初步学习

时间:2015-07-21 17:13:47      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:netbeans   java   框架   

一、使用 NetBeans 8.0.2 建立 struct2.x 框架环境

新建Java web项目,在框架选择的时候,勾选structs2。点击完成,即会生成名为 helloworld 的项目。

技术分享
注意: NetBeans 8.0.2 中默认包含struct 1.3.10插件。要使用structs2框架,需要自己下载并安装structs2插件。


二、分析 struct2.x 框架
struct2.x 框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和业务逻辑组件。其中,核心控制器FilterDispatcher是由struct2.x 框架提供,而业务控制器和业务逻辑组件需要用户自己实现。3个部分的功能分别是:
核心控制器FilterDispatcher:负责拦截所有用户请求,如果用户的请求以action结尾,则该请求被转入 struct2.x 框架处理。
业务控制器:实现action类的实例,该类通常有一个能返回一个字符串形式的业务逻辑名的execute()方法,用于项目业务控制的实现。
业务逻辑组件:由 Javabean 或者 EJB 来实现,,用于项目业务逻辑的实现。


struct2.x 框架的工作流程:

技术分享

当所有请求被核心控制器FilterDispatcher拦截的时候,FilterDispatcher会将请求转发给action代理,action代理会根据配置文件struct.xml决定转发给哪一个action。将请求转发给action的过程中,又会经过一些拦截器,这些拦截器负责将请求解析后转发给相应的action。接着,经过相应action中execute()处理后,即得到一个视图结果,根据该结果并结合相应模板就可以产生相应的输出流。输出流再经过一些拦截器之后,传送到了浏览器。


三、分析利用structs2框架生成的 helloworld 项目

helloworld.jsp 页面的内容:
<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
    <head>
        <title><s:text name="HelloWorld.message"/></title>
    </head>

    <body>
        <h2><s:property value="message"/></h2>

        <h3>Languages</h3>
        <ul>
            <li>
                <s:url id="url" action="HelloWorld">
                    <s:param name="request_locale">en</s:param>
                </s:url>
                <s:a href="%{url}">English</s:a>
            </li>

            <li>
                <s:url id="url" action="HelloWorld">
                    <s:param name="request_locale">es</s:param>
                </s:url>

                <s:a href="%{url}">Espanol</s:a>

            </li>
        </ul>
    </body>
</html>

在上面代码中,元素<s:url>的 action 属性值必须是 struct.xml 配置过的请求名,即HelloWorld。
struct.xml 内容:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
  <!--使用example.xml配置文件-->
  <include file="example.xml"/>
    <!-- Configuration for the default package. -->
    <package name="default" extends="struts-default">
    </package>
</struts>

example.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">

<struts>
   <!--创建名为example的包,该包必须继承默认包-->
   <package name="example" namespace="/example" extends="struts-default">
        <!--配置helloworld请求action-->
        <action name="HelloWorld" class="example.HelloWorld">
            <result>/example/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

元素<action>中属性name表示请求的名称(HelloWorld),class表示处理该请求的具体执行类(example.HelloWorld)。

HelloWorld.java 内容:
/*
 * $Id: HelloWorld.template,v 1.2 2008-03-27 05:47:21 ub3rsold4t Exp $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package example;

import com.opensymphony.xwork2.ActionSupport;

/**
 * <code>Set welcome message.</code>
 */
public class HelloWorld extends ActionSupport {

    public String execute() throws Exception {
        setMessage(getText(MESSAGE));
        return SUCCESS;
    }

    /**
     * Provide default valuie for Message property.
     */
    public static final String MESSAGE = "HelloWorld.message";

    /**
     * Field for Message property.
     */
    private String message;

    /**
     * Return Message property.
     *
     * @return Message property
     */
    public String getMessage() {
        return message;
    }

    /**
     * Set Message property.
     *
     * @param message Text to display on HelloWorld page.
     */
    public void setMessage(String message) {
        this.message = message;
    }
}

HelloWorld.java文件就是对应名为 HelloWorld 的action。上面代码,实现了相应的业务逻辑组件。
注意:HelloWorld.message 定义在package.properties和package_es.properties两个文件中。
项目运行结果:
技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

structs 2.x 框架的初步学习

标签:netbeans   java   框架   

原文地址:http://blog.csdn.net/liuruiqun/article/details/46987021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!