`
cengjingyiwei
  • 浏览: 31288 次
社区版块
存档分类
最新评论

struts-2.3.4.1自带示例程序struts2-blank.war的入门学习(高手绕行)

阅读更多
一直没用过大名鼎鼎的Struts2,网上找了很多示例程序,总是不尽人意。下载完struts-2.3.4.1,简单浏览了一下目录结构,突然想到,不如用下载包中自带的示例程序进行学习,保证是最新的Struts2,而且示例较权威。以下是我的学习步骤,写出来供初学者参考,struts大牛如果有时间看的话,也希望能够提一些宝贵的意见。
1.   首先到http://struts.apache.org/download.cgi#struts2341页面下载最新版本的Struts2。这里我们下载完整版的Full Distribution:struts-2.3.4.1-all.zip (76mb) (简洁起见,类似这种我就不截图了)
2.   解压,打开,我们看到有apps,docs,lib,src四个文件夹,见名知意,我就不翻译了。这里我只看了apps里面的内容,英文不太好,docs里面的内容我没有仔细研究,都直接google中文资料了,另外apps里面对应的示例文件夹里,也包含了源代码文件,所以这里src也可以不看。
3.    进入apps,看到四个war包,用winrar解压struts2-blank.war,留作以下使用。这里我们先只研究这一个包。当然如果你只是想运行,而不看代码的话,直接把此war包放到容器的的项目路径,启动容器就可使用这个struts2-blank。
4.    现在我们用自己的IDE建一个web project,在这里我将project命名为struts2-blank,并且指定context url为struts2-blank。依次装上一步解压后的war包对就文件复制到web project对应路径下,下面我依次复制。这里我用的是MyEclipse10。
4.1    web.xml.
首先用在解压好文件夹里找到struts-2.3.4.1\apps\struts2-blank\WEB-INF\web.xml替换掉项目struts2-blank中对应WEB-INF\web.xml文件。打开web.xml,我们看到
    
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

通过配置这个Filter,启动Struts框架,StrutsPrepareAndEXecuteFilter()方法中将会读取类路径下的默认文件struts.xml完成初始化操作。Struts将struts.xml文件内容,以javabean的形式存放在内存中,从而不必重复读取struts.xml文件。
4.2    struts.xml
在解压好的文件夹里找到struts-2.3.4.1\apps\struts2-blank\WEB-INF\src\java\struts.xml,复制到项目struts2-blank的src下,Myeclipse会自动将struts.xml布署到WEB-INF\classes下的。
同时将同一目录下example.xml文件复制过去。
    <package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>
    <include file="example.xml"/>

首先配置package,在这里我感觉name属性不太重要,只要不重名就行,namespace属性比较重要,指定了是发布以后的访问的路径,也就是url的一部分。
然后是是指定该package下默认的action,这里默认跳转到index,而在index下又进行了重定向到/example/HelloWorld.第5步详细解释
为了清晰起见,在这里用include文件的方式,在example.xml中指定其它action.这里不一一解释。
4.3   lib包
将struts-2.3.4.1\apps\struts2-blank\WEB-INF\lib文件夹下的包复制到项目struts2-blank中对应WEB-INF\lib下,原因不解释。
4.4   jsp文件
将struts-2.3.4.1\apps\struts2-blank\下的example文件夹复制到项目struts2-blank的WebRoot目录下。
4.5   java文件
将struts-2.3.4.1\apps\struts2-blank\WEB-INF\src\java下example文件夹复制项目struts2-blank下的src下。
5.   运行
布署程序到tomcat下。run servler
在浏览器访问http://localhost:8080/struts2-blank/example/HelloWorld.action,既可成功看到

由于我们在4.2中配置了所以在url,http://localhost:8080/struts2-blank/下随便输入其它地址,都会跳转到index,然后index再重定向到HelloWorld,返回页面与上面的相同
如我们随便输入访问http://localhost:8080/struts2-blank/aaaaaa  同样会返回以上页面。
6.   关于package.properties
这个示例同样实现了语言的国际化,通过对package.properties的配置,实现了多语句,开始我也很奇怪在配置文件中没有指定读取package中的多语内容。后来上网查了一下,是这样解释的:
引用
在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都可以访问该资源。当查找指定key的消息时,系统会先从package资源文件查找,当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的资源文件中寻找。

例如我们如果要增加中文包,只需增加文件package_zh_CN.properties
下面是我在加了中文包后访问helloworld的页面

由于框架会自动检测当前系统语言,所以不需要任何配置,显示即为中文。当然你也可以在jsp中添加中文链接。
先就写到这里吧,共同学习,欢迎留言讨论。
  • 大小: 2.8 KB
  • 大小: 3.4 KB
分享到:
评论
6 楼 cengjingyiwei 2013-08-02  
如果是新手的话,先别纠结于这些细节,框架搭好能用就用,除非是在实际项目中遇到这个问题必须解决,深入学习一些原理性的东西,最后再想研究的话,再返回头来研究
来自海上的鱼 写道
我的三个国际化资源文件的命名分别为:
a、package_en.properties
b、package_es.properties
c、package_zh.properties或(package_zh_CN.properties)
的时候是可以按我的意图来显示的。

但是,但我把三个文件名分别改为:
a、package_en_US.properties
b、package_es_ES.properties
c、package_zh_CN.properties
的时候就只显示中文了,点其他两个链接依然显示中文。

经过测试,这个与HelloWorld.jsp这个页面的request_locale后的值有关。
即:
    <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]en_US[/color]</s:param>
        </s:url>
        <s:a href="%{url}">English</s:a>
    </li>
    <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]es_ES[/color]</s:param>
        </s:url>
        <s:a href="%{url}">Espanol</s:a>
    </li>
	<li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]zh_CN[/color]</s:param>
        </s:url>
        <s:a href="%{url}">简体中文</s:a>
    </li>

5 楼 cengjingyiwei 2013-08-02  
简单看了一下,我想由于你是中文系统,默认会先找中文多语包。英语按第一种方式配置文件命名不用写语言名
来自海上的鱼 写道
我的三个国际化资源文件的命名分别为:
a、package_en.properties
b、package_es.properties
c、package_zh.properties或(package_zh_CN.properties)
的时候是可以按我的意图来显示的。

但是,但我把三个文件名分别改为:
a、package_en_US.properties
b、package_es_ES.properties
c、package_zh_CN.properties
的时候就只显示中文了,点其他两个链接依然显示中文。

经过测试,这个与HelloWorld.jsp这个页面的request_locale后的值有关。
即:
    <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]en_US[/color]</s:param>
        </s:url>
        <s:a href="%{url}">English</s:a>
    </li>
    <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]es_ES[/color]</s:param>
        </s:url>
        <s:a href="%{url}">Espanol</s:a>
    </li>
	<li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]zh_CN[/color]</s:param>
        </s:url>
        <s:a href="%{url}">简体中文</s:a>
    </li>

4 楼 来自海上的鱼 2013-08-02  
我的三个国际化资源文件的命名分别为:
a、package_en.properties
b、package_es.properties
c、package_zh.properties或(package_zh_CN.properties)
的时候是可以按我的意图来显示的。

但是,但我把三个文件名分别改为:
a、package_en_US.properties
b、package_es_ES.properties
c、package_zh_CN.properties
的时候就只显示中文了,点其他两个链接依然显示中文。

经过测试,这个与HelloWorld.jsp这个页面的request_locale后的值有关。
即:
    <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]en_US[/color]</s:param>
        </s:url>
        <s:a href="%{url}">English</s:a>
    </li>
    <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]es_ES[/color]</s:param>
        </s:url>
        <s:a href="%{url}">Espanol</s:a>
    </li>
	<li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">[color=red]zh_CN[/color]</s:param>
        </s:url>
        <s:a href="%{url}">简体中文</s:a>
    </li>
3 楼 来自海上的鱼 2013-08-02  
还有一点就是package_zh_CN.properties这个文件我改成了只有以下内容:
HelloWorld.message=\u589e\u52a0\u7528\u6237

若要想添加余下的内容,需要把中文转成UNICODE编码。
2 楼 来自海上的鱼 2013-08-02  
经过测试,似乎与*.properties文件的编码格式有关。
我习惯用notepad++来改变文件的编码,并且习惯了用utf-8这种编码,所以新建
package_zh_CN.properties这个文件时我把它的编码设置成了utf-8,然后点击我上面“简体中文”这个链接时依然显示的是英文。把该文件的编码改为ANSI时,就可以正常显示中文了
。不知道怎么上传图片就不传了。
1 楼 来自海上的鱼 2013-08-02  
你好,我添加了一个package_zh_CN.properties,但是并不能正常显示。
我的做法是这样的
第一步,在HelloWorld.jsp页面添加了一个中文链接,代码:
     <li>
        <s:url id="url" action="HelloWorld">
            <s:param name="request_locale">zh_CN</s:param>
        </s:url>
        <s:a href="%{url}">简体中文</s:a>
    </li>

第二步,在classes目录下新建一个package_zh_CN.properties文件,内容如下:
HelloWorld.message=\u589e\u52a0\u7528\u6237
requiredstring = ${getText(fieldName)} 不能为空.
password = 密码
username = 用户名
Missing.message =  正在建设中,请下期再尝试.

期待你的回信。

相关推荐

    struts-2.3.4.1第一部分

    综上所述,"struts-2.3.4.1第一部分"提供了Struts 2框架的关键组件,包括jar包和API文档,为开发者构建基于MVC模式的Java Web应用提供了便利。开发者可以通过API文档深入理解框架的工作原理,并利用jar包中的类和...

    struts-2.3.4.1-all.zip

    `struts-2.3.4.1-all.zip` 是一个包含Struts 2.3.4.1版本所有组件的压缩包,适用于开发人员在构建Web项目时使用。 Struts 2的核心功能包括: 1. **Action与Result**:Action是业务逻辑的载体,当用户请求一个URL时...

    struts 2.3.4.1 jar

    Struts 2.3.4.1 是一个流行的开源Java框架,主要用于构建MVC(Model-View-Controller)架构的Web应用程序。这个版本包含了多个关键组件的更新和改进,为开发者提供了更强大、更安全的功能。以下是这个版本中涉及的...

    struts-2.3.15.1-lib.zip官方jar包

    官方发布的"struts-2.3.15.1-lib.zip"是一个包含Struts2框架2.3.15.1版本库文件的压缩包,它包含了所有必要的jar包,以帮助开发者更新他们的系统以抵御已知的安全威胁。此版本的发布是为了修复之前版本中的安全漏洞...

    struts-2.3.4.1-docs.zip

    此压缩包"struts-2.3.4.1-docs.zip"包含了Struts 2框架的版本2.3.4.1的官方文档,为开发者提供了详细的使用指南和技术参考。 在Struts 2.3.4.1这个版本中,我们关注以下几个关键知识点: 1. **MVC架构**:Struts 2...

    struts-2.3.4.1最全架包

    这个"struts-2.3.4.1最全架包"包含了Struts2框架的完整版本,适用于开发者进行项目开发或者学习使用。 在Struts2框架中,有以下几个核心概念和功能: 1. **Action类**:这是业务逻辑的执行入口,通常继承自`org....

    struts2-core-2.3.4.1-sources.jar

    struts2-core-2.3.4.1-sources.jar最新jar包(2012.10.22) 0分资源,方便你我 struts2-core-2.3.4.1-sources.jar源码,学strut2源码时能用到的

    xwork-core-2.3.4.1

    xwork-core-2.3.4.1 struts2

    struts-2.3.4.1所需的jar文件

    接触新版本出了问题后,解决了把jar文件上传上来供大家分享, 一共9个jar文件,我试过没问题 ...&lt;package name="default" namespace="/" extends="struts-default"&gt; /helloWorld.jsp &lt;/struts&gt;

    struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar

    struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar

    xwork-core-2.3.4.1-sources.jar.zip 源代码

    总的来说,xwork-core-2.3.4.1的源代码是一份宝贵的教育资源,它揭示了Struts2框架的内在逻辑,为开发者提供了一扇深入理解MVC框架设计思想的窗口。只有深入源码,才能真正驾驭框架,实现高效、稳定的Web应用开发。

    Struts2的DTD配置文件struts-2.3.dtd

    `struts-2.3.dtd`为`struts.xml`文件提供了语法指导,确保开发者遵循Struts2框架的正确配置格式。通过引用这个DTD,IDE可以验证配置文件的语法,从而提供有用的错误检查和代码补全功能,提高开发效率。 在`struts....

    struts2-jfreechart-plugin-2.3.4.1.jar

    struts2-jfreechart-plugin-2.3.4.1.jar

    struts-2.3.4.1 lib

    在"struts-2.3.4.1 lib"这个压缩包中,我们可以找到Struts2框架运行所需的各种jar包,这些jar包是Struts2的核心组件和依赖库。它们包括: 1. **Struts2核心库**:如`struts2-core.jar`,这是框架的基础,包含了...

    struts-2.3.4.1-lib

    综上所述,"struts-2.3.4.1-lib"这个压缩包是构建基于Struts2的Java Web应用的基础。它包含了所有必要的库和组件,让开发者能够快速地设置开发环境,实现MVC架构,提高代码复用性和可维护性,同时通过插件扩展框架...

    struts-2.3.16.3

    描述中同样提到了"struts-2.3.16.3",这暗示了这个压缩包可能包含了Struts 2框架的源代码、文档、示例应用以及其他相关资源。用户可以下载并解压这个包,用于学习、开发或升级现有的Struts 2项目。 标签"struts2...

    struts-2.3.4.1的jar包

    标题"struts-2.3.4.1的jar包"表明这是Struts2的一个特定版本——2.3.4.1的集合文件,通常包含框架运行所需的所有库文件。Struts2的每个版本都会修复前一版本的已知问题,增加新功能或改进性能,因此"最新版本"意味着...

    struts2-spring-plugin-2.3.4.1.jar

    struts2-spring-plugin 最新jar包(2012.10.22) 0分资源,方便你我

    struts-2.3.15.3所以jar包

    在给定的“struts-2.3.15.3所有jar包”中,我们看到的是Struts 2框架的一个特定版本——2.3.15.3的依赖库集合。这个版本包含了执行Struts 2应用所需的所有核心组件和其他相关库。下面将详细介绍这些jar包以及它们在...

    struts-2.3.16.1-all

    Struts 2是Java Web开发中的一个开源框架,...在使用“struts-2.3.16.1-all”压缩包时,开发者可以利用其中的文档、示例和源代码来更好地理解和学习Struts 2框架的各个方面,从而高效地构建和维护Java Web应用程序。

Global site tag (gtag.js) - Google Analytics