struct2.0(一)

 0:
先要搭建环境:到Apache下载Struts 2.0包 。将Struts 2.0 lib下的jar文件填加到工程的构建路径下面(build path:/WEB-INF/lib)

1:
Struts 2.0有两个配置文件,struts.xml和struts.properties都是放在WEB-INF/classes/下。
struts.xml用于应用程序相关的配置
struts.properties用于Struts 2.0的运行时(Runtime)的配置.

2:
struts-default.xml文件不用您自己加,它位于struts2-core-2.0.0.jar包中。
  Struts 2默认会读取classpath下的struts-default.xml,struts-plugin.xml,struts.xml这三个文件。

3:
默认情况下,当请求HelloWorld.action发生时,Struts运行时(Runtime)根据struts.xml里的Action映射集(Mapping),实例化tutoiral.HelloWorld类,并调用其execute方法。当然,我们可以通过以下两种方法改变这种默认调用。这个功能(Feature)有点类似Struts 1.x中的LookupDispathAction。

在classes/sturts.xml中新建Action,并指明其调用的方法,eg: method=" xxx";
在新建的Action类中书写 xxx() 的方法;
访问Action时,在Action名后加上“!xxx”(xxx为方法名)。

4:
这就是Struts 2.0的一个优势,因为它默认支持EL,所以我们可以用getText方法来简洁地取得国际化字符串。
如: <s:textfield name="name" label="%{getText('UserName')}"/>


5:国际化字符串也可以参数化,这时国际化字符串 相当与一个变量,如:
在Struts 2.0中,我们通过以下两种方法做到这点:

1>:在资源文件的国际化字符串中使用OGNL,格式为${表达式},例如:
 validation.require=${getText(fileName)} is required

2>:使用java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number | date | time | choice), 格式样式},例如:
 validation.between=Date must between {0, date, short} and {1, date, short}

在显示这些国际化字符时,同样有两种方法设置参数的值,这样就可以动态显示了:

1>:使用标志的value0、value1...valueN的属性,如:
 <s:text name="validation.required" value0="User Name"/>
2>:使用param子元素,这些param将按先后顺序,代入到国际化字符串的参数中,例如:
 <s:text name="validation.required">
       <s:param value="User Name"/>
 </s:text>

6:LangSelector.jsp 的部分代码:
<%@taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
<!--
    function langSelecter_onChanged() {
        document.langForm.submit();
    }
//-->
</script>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<s:bean id="locales" name="tutorial.Locales"/>
<form action="<s:url includeParams="get" encode="true"/>" name="langForm"
    style="background-color: powderblue; padding-top: 4px; padding-bottom: 4px;">
    Language: <s:select label="Language"
        list="#locales.locales" listKey="value"    listValue="key"
        value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
        name="request_locale" id="langSelecter"
        οnchange="langSelecter_onChanged()" theme="simple"/>
</form>
上述代码的原理为,LangSelector.jsp先实例化一个Locales对象,并把对象的Map类型的属性locales赋予下拉列表(select) 。如此一来,下拉列表就获得可用语言的列表。大家看到LangSelector有<s:form>标志和一段Javascript脚本,它们的作用就是在用户在下拉列表中选择了后,提交包含“reqeust_locale”变量的表单到Action。在打开页面时,为了下拉列表可以选中当前区域,我们需要到session取得当前区域(键为“WW_TRANS_I18N_LOCALE”的属性),而该属性在没有设置语言前是为空的,所以通过值栈中locale属性来取得当前区域(用户浏览器所设置的语言)。

7:
在AddProducts.jsp的<s:textfield>中,name为“%{'products['+#stat.index+'].name'}”,%{exp}格式表示使用OGNL表达式,上述表达式的相当于<%= "products[" + stat.index + "].name" %>.

8:
<result >/login/login.jsp</result>  // 缺省name,标示Action返回 "success" 字符串时转入/login/login.jsp

<result name="cancel">/login/cancel.jsp</result> // 标示Action返回“cancel”字符串时转入/login/login.jsp

<result name="xxx" type="redirect-action" >Welcome</result> // 标示 Action返回“xxx”字符串时重定向到 Welcome 的Action中。

<result name="expired" type="chain" >XXX</result> // 标示 Action返回“expired”字符串时转入 XXX 的 Action 链。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值