第15章struts2标签讲解.docx

上传人:b****3 文档编号:4467252 上传时间:2022-12-01 格式:DOCX 页数:12 大小:83.25KB
下载 相关 举报
第15章struts2标签讲解.docx_第1页
第1页 / 共12页
第15章struts2标签讲解.docx_第2页
第2页 / 共12页
第15章struts2标签讲解.docx_第3页
第3页 / 共12页
第15章struts2标签讲解.docx_第4页
第4页 / 共12页
第15章struts2标签讲解.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第15章struts2标签讲解.docx

《第15章struts2标签讲解.docx》由会员分享,可在线阅读,更多相关《第15章struts2标签讲解.docx(12页珍藏版)》请在冰豆网上搜索。

第15章struts2标签讲解.docx

第15章struts2标签讲解

Struts标签:

1.通用标签:

(1)property

(2)bean

(3)param

(4)debug

2.控制标签:

(1)ifelseifelse

(2)iterator

一、property标签

类似于上节课的例子,

1.在WebRoot下新建一个index_tags.jsp:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+path+"/";

%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

MyJSP'index.jsp'startingpage

访问属性:

//localhost:

8080/ch2_example1/test/tags.action?

username=aaa&password=bbb">tags

2.新建一个my.tags.TagsAction:

packagemy.tags;

importcom.opensymphony.xwork2.ActionSupport;

publicclassTagsActionextendsActionSupport{

privateStringusername;

privateStringpassword;

publicStringexecute(){

this.addFieldError("fielderror.test","wrong!

");

returnSUCCESS;

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

}

3.修改struts.xml:

/WEB-INF/page/tags.jsp

4.在WEB-INF/page下新建tags.jsp:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

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

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

MyJSP'tags.jsp'startingpage

  1. property:

    propertyvalue="username"/>

  2. property赋值为字符串:

    propertyvalue="'username'"/>

  3. property设为默认值:

    propertyvalue="admin"default="管理员"/>

  4. property设定HTML:

    propertyvalue="'


    '"escape="true"/>

测试:

在地址栏输入:

http:

//localhost:

8080/ch2_example1/index_tags.jsp

点击超链接tags

得到下面的结果:

1.property:

aaa

2.property赋值为字符串:

username

3.property设为默认值:

管理员

4.property设定HTML:


解释:

  • property:

    propertyvalue="username"/>

  • 这个用法上节课已经讲过,不解释了。

  • property赋值为字符串:

    propertyvalue="'username'"/>

  • 这是把username作为字符串处理。

  • property设为默认值:

    propertyvalue="admin"default="管理员"/>

  • 这是给admin赋默认值,如果admin有值,则取它的值显示,如果没有,则显示默认值。

  • property设定HTML:

    propertyvalue="'


    '"escape="true"/>
  • 如果把escape改为false,则将对


    进行解析。

    2、Bean标签:

    Bean标签用于创建一个JavaBean的实例,创建实例时通过

    param/>给JavaBean传入参数。

    如果通过

    param/>给JavaBean传入属性值则需要给JavaBean设置Setter方法,如果需要访问JavaBean的属性则需要设置Getter方法。

    Bean标签有两个属性:

    1.Name:

    必填的属性,指定需要实例化的Java类

    2.Var:

    可选项。

    如指定了该属性,则该JavaBean实例会被放入StackContext中(不是ValueStack),从而允许直接通过该var属性来访问该JavaBean的实例。

    新建Person类

    packagemy.ognl;

    publicclassPerson{

    privateStringname;

    privateStringmajor;

    publicStringgetName(){

    returnname;

    }

    publicvoidsetName(Stringname){

    this.name=name;

    }

    publicStringgetMajor(){

    returnmajor;

    }

    publicvoidsetMajor(Stringmajor){

    this.major=major;

    }

    publicStringmethod1(){

    return"来自JavaBean的方法";

    }

    publicStringmethod1(Stringname){

    returnname+"来自JavaBean的方法";

    }

    }

    新建index1.jsp:

    <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

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

    <%

    Stringpath=request.getContextPath();

    StringbasePath=request.getScheme()+":

    //"+request.getServerName()+":

    "+request.getServerPort()+path+"/";

    %>

    DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

    ">

    MyJSP'index1.jsp'startingpage

    --

    -->

    beanname="my.ognl.Person">

    paramname="name"value="'zhangsan'">

    param>

    mynameis:

    propertyvalue="name"/>

    bean>

    访问该jsp,得到结果为:

    修改index1.jsp:

    beanname="my.ognl.Person"var="person">

    paramname="name"value="'zhangsan'">

    param>

    bean>

    mynameis:

    propertyvalue="#person.name"/>

    得到的结果是一样的。

    如果想访问JavaBean中的方法,修改index1.jsp:

    beanname="my.ognl.Person"var="person">

    paramname="name"value="'zhangsan'">

    param>

    bean>

    mynameis:

    propertyvalue="#person.name"/>

    propertyvalue="#person.method1()"/>

    propertyvalue="#person.method1('ooo')"/>

    测试结果为:

     

    在tags.jsp中加入,通过debug标签查看结果

  • 定义bean:

    beanname="my.ognl.Dog">

    bean>

  • 定义bean:

    beanname="my.ognl.Dog"var="mydog">

    paramname="name"value="'dagou'">

    param>

    bean>

  • debug>

    debug>

    在tags.jsp中加入以下语句:

    查看结果及值栈内容:

  • 定义bean:

    beanname="my.ognl.Dog">

    paramname="name"value="'xiaogou'">

    param>

    propertyvalue="name"/>

    debug>

    debug>

    bean>

  • 结果为:

    注意:

    bean>开始的时候,新建对象,放到栈顶。

    执行结束,对象就不在栈中了。

    所以一定要在

    bean>中赋值和取值,否则取不到。

    如果想在

    bean>执行完之后还能使用,就用var。

    修改var这一部分:

  • 定义bean:

    beanname="my.ognl.Dog"var="mydog">

    paramname="name"value="'dagou'">

    param>

    bean>

    取狗的名字:

    propertyvalue="#mydog.name"/>

  • 注意:

    此时mydog是放在了ActionContext中,可以通过#取出来。

     

    三、fielderror标签

    修改tags.jsp

    fielderrorfieldName="fielderror.test"theme="simple">

    fielderror>

    查看输出结果。

    四、if、elseif、else标签

    修改tags.jsp:

  • if,elseif,else:

    age=

    propertyvalue="#parameters.age"/>

  • 在地址栏输入:

    http:

    //localhost:

    8080/ch2_example1/test/tags.action?

    username=aaa&password=bbb&age=8&age=10

    得到一个集合

    if,elseif,else:

    age=8,10

    如果希望得到集合中的第一个值,则写为:

  • if,elseif,else:

    age=

    propertyvalue="#parameters.age[0]"/>

  • 在刚才的基础上使用分支控制标签:

  • if,elseif,else:

    age=

    propertyvalue="#parameters.age[0]"/>

    iftest="#parameters.age[0]<0">wrongdata

    if>

    elseiftest="#parameters.age[0]<18">stillchild

    elseif>

    else>mrright!

    else>

  • 修改地址栏传入的年龄值,查看不同的结果。

     

    继续修改tags.jsp:

    如果没有aaa这个属性,则可以这样判断:

  • iftest="#parameters.aaa==null">aaaisnull

    if>

  • 五、iterator标签

  • 遍历集合:

    iteratorvalue="{1,2,3}">

    property/>|

    iterator>

  • 自定义变量:

    iteratorvalue="{'aaa','bbb','ccc'}"var="x">

    propertyvalue="#x.toUpperCase()"/>|

    iterator>

  • 1.遍历集合:

    1|2|3|

    2.自定义变量:

    AAA|BBB|CCC|

  • 使用status:

    iteratorvalue="{'aaa','bbb','ccc'}"status="status">

    property/>|

    遍历的元素个数:

    propertyvalue="#status.count"/>

    遍历的元素索引:

    propertyvalue="#status.index"/>

    遍历的是否偶数:

    propertyvalue="#status.even"/>

    遍历的是否奇数:

    propertyvalue="#status.odd"/>

    遍历的是否第一个?

    propertyvalue="#status.first"/>

    遍历的是否最后一个?

    propertyvalue="#status.last"/>


    iterator>

  • 输出结果为:

    1.使用status:

    aaa|遍历的元素个数:

    1遍历的元素索引:

    0遍历的是否偶数:

    false遍历的是否奇数:

    true遍历的是否第一个?

    true遍历的是否最后一个?

    false

    bbb|遍历的元素个数:

    2遍历的元素索引:

    1遍历的是否偶数:

    true遍历的是否奇数:

    false遍历的是否第一个?

    false遍历的是否最后一个?

    false

    ccc|遍历的元素个数:

    3遍历的元素索引:

    2遍历的是否偶数:

    false遍历的是否奇数:

    true遍历的是否第一个?

    false遍历的是否最后一个?

    true

    修改tags.jsp:

  • 映射:

    iteratorvalue="#{1:

    'a',2:

    'b',3:

    'c'}">

    propertyvalue="key"/>|

    propertyvalue="value"/>

    iterator>

  • 映射:

    iteratorvalue="#{1:

    'a',2:

    'b',3:

    'c'}"var="x">

    propertyvalue="#x.key"/>|

    propertyvalue="#x.value"/>

    iterator>

  • 结果为:

    映射:

    1|a2|b3|c

    映射:

    1|a2|b3|c

     

    【作业】

    设计一个jsp页面,要求包含以下标签,该页面的主题自定。

    checkbox、checkboxlist、combobox

    date、doubleselect、label

    password、radio

    reset、select

    text、textarea、textfield

    要求查阅struts文档,将这些标签的介绍和属性也要写在大作业中。

    展开阅读全文
    相关资源
    猜你喜欢
    相关搜索

    当前位置:首页 > 高中教育 > 语文

    copyright@ 2008-2022 冰豆网网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1