struts2的基本用法

Struts2可以将所有标签分成如下3类:–UI(User Interface,用户界面)标签:主要用于生成HTML元素的标签。
–非UI标签:主要用于数据访问、逻辑控制等的标签。
–Ajax标签:用于Ajax(Asynchronous JavaScript And XML)支持的标签。Struts 2的OGNL表达式
?Struts 2利用内建的OGNL(Object Graph Navigation Language)表达式语言支持,大大加强了Struts2的数据访问功能,XWork在原有的OGNL的基础上,增加了对ValueStack的支持。
?OGNL表达式本质上就是表达式语言,和JSP 2的EL本质一样,只是OGNL表达式语言功能更强大
if:用于控制选择输出的标签。
?elseIf/elseif:与if标签结合使用,用于控制选择输出的标签。
?else:与if标签结合使用,用于控制选择输出的标签。
?append:用于将多个集合拼接成一个新的集合。
?generator:它是一个字符串解析器,用于将一个字符串解析成一个集合。
iterator:这是一个迭代器,用于将集合迭代输出。
?merge:用于将多个集合拼接成一个新的集合。但与append的拼接方式有所不同。
?sort:这个标签用于对集合进行排序。
?subset:这个标签用于截取集合的部分元素,形成新的子集合。

?action:该标签用于在JSP页面直接调用一个Action,通过指定executeResult参数,还可将该Action的处理结果包含到本页面中来。
?bean:该标签用于创建一个JavaBean实例。如果指定了var属性,则可以将创建的JavaBean实例放入Stack Context中。
?date:用于格式化输出一个日期。
?debug:用于在页面上生成一个调试链接,当单击该链接时,可以看到当前ValueStack和Stack Context中的内容。
?i18n:用于指定国际化资源文件的baseName。
include:用于在JSP页面中包含其他的JSP或Servlet资源。
?param:用于设置一个参数,通常是用做bean标签、url标签的子标签。
?push:用于将某个值放入ValueStack的栈顶。
?set:用于设置一个新变量,并可以将新变量放入指定的范围内。
?text:用于输出国际化消息。
?url:用于生成一个URL地址。
?property:用于输出某个值,包括输出ValueStack、Stack Context和Action Context中的值。
(1)通过设定特定UI标签上的theme属性来指定主题。
(2)通过设定特定UI标签外围的Form标签的theme 属性来指定主题。
(3)通过取得page会话范围内以theme为名称的属性来确定主题。
(4)通过取得request会话范围内的命名为theme的属性来确定主题。
(5)通过取得session会话范围内的命名为theme的属性来确定主题。
(6)通过取得application会话范围内的命名为theme的属性来确定主题。
(7)通过设置名为struts.ui.theme的常量(默认值是xhtml)来确定默认主题,该常量可以在struts.properties文件或者struts.xml文件中确定。

在form中有两个按钮如何来处理:

<tr>

<td><input type="submit" value="登录"/></td>

<td><input type="submit" value="注册"

οnclick="regist();"/></td>

</tr>

<script type="text/javascript">

function regist()

{

//获取页面的第一个表单

targetForm = document.forms[0];

//动态修改表单的action属性

targetForm.action = "login!regist";

}

</script>

在struts中如何来处理这中请求:

public class LoginRegistAction

extends ActionSupport

{

//封装用户请求参数的两个属性

private String username;

private String password;

//封装处理结果的tip属性

private String tip;

//username属性对应的setter和getter方法

public String getUsername()

{

return username;

}

public void setUsername(String username)

{

this.username = username;

}

//password属性对应的getter和setter方法

public String getPassword()

{

return password;

}

public void setPassword(String password)

{

this.password = password;

}

//tip属性对应的setter和getter方法

public String getTip()

{

return tip;

}

public void setTip(String tip)

{

this.tip = tip;

}

//Action包含的注册控制逻辑

public String regist() throws Exception

{

ActionContext.getContext().getSession()

.put("user" , getUsername());

setTip("恭喜您," + getUsername() + ",您已经注册成功!");

return SUCCESS;

}

//Action默认包含的控制逻辑

public String execute() throws Exception

{

if (getUsername().equals("a")

&& getPassword().equals("1") )

{

ActionContext.getContext().getSession()

.put("user" , getUsername());

setTip("欢迎," + getUsername() + ",您已经登录成功!");

return SUCCESS;

}

else

{

return ERROR;

}

}

}

指定method属性及使用通配符

<struts>

<package name="lee" extends="struts-default">

<!-- 使用模式字符串定义Action的name,指定所有以Action结尾的请求,

都可用LoginRegistAction来处理,method属性使用{1},

这个{1}代表进行模式匹配时第一个*所代替的字符串 -->

<action name="*Action" class="org.crazyit.app.action.LoginRegistAction"

method="{1}">

<!-- 定义逻辑视图和物理视图之间的映射关系 -->

<result name="input">/login.jsp</result>

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

<result name="success">/welcome.jsp</result>

</action>

</package>

</struts>

页面的跳转问题

<result name="success" type="redirecAction">

redirecAction(重定向) dispatcher

注释的应用:

/**

* Description:

* <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>

* <br/>Copyright (C), 2001-2012, Yeeku.H.Lee

* <br/>This program is protected by copyright laws.

* <br/>Program Name:

* <br/>Date:

* @author Yeeku.H.Lee kongyeeku@163.com

* @version 1.0

*/

OGNL表达式语言

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

<s:set name="age" value="29"/>

<s:if test="#age>60">

老年人

</s:if>

<s:elseif test="#age>35">

中年人

</s:elseif>

<s:elseif test="#age>15">

青年人

</s:elseif>

<s:else>

少年

</s:else>

Iterator 标签

<!-- 迭代输出List集合 -->

<s:iterator value="{'疯狂Java讲义',

'轻量级Java EE企业应用实战',

'经典Java EE企业应用实战'}"

id="name" status="st">

<tr <s:if test="#st.odd">

style="background-color:#bbbbbb"</s:if>>

<td><s:property value="name"/></td>

</tr>

</s:iterator>

<!-- 对指定的Map对象进行迭代输出,并指定status属性 -->

<s:iterator value="#{'疯狂Java讲义':'李刚',

'轻量级Java EE企业应用实战':'李刚' ,

'经典Java EE企业应用实战':'李刚'}"

id="score" status="st">

<!-- 根据当前被迭代元素的索引是否为奇数来决定是否使用背景色 -->

<tr <s:if test="#st.odd">

style="background-color:#bbbbbb"</s:if>>

<!-- 输出Map对象里Entry的key -->

<td><s:property value="key"/></td>

<!-- 输出Map对象里Entry的value -->

<td><s:property value="value"/></td>

</tr>

</s:iterator>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值