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、付费专栏及课程。

余额充值