struts2基础总结

Struts2基础

#的用法:

1、从map栈中取值,

2、从对象栈中值则不用加#号(如果通过set放进对象栈的对象,则通过对象名.属性来取)

%用法:

1、文本框<s:textfieldname="test"value="%{#request.text}"></s:textfield>

2、配置result中使用<resultname="text">ognl/%{#test-url}</result>

3、输出字符串:<s:propertyvalue="%{'<hr>hr'}"escape="false"/>

$用法:

$(对象栈的属性):这样就可以在非struts2标签中使用对象栈的值

Property标签

1escape属性,默认为true,设置为false时,不转义

<s:propertyvalue="%{'<hr>hr'}"escape="false"/>

2default属性,当value的值不存在是,输出默认值

s:propertyvalue="#xixifasf"default="dafhodsh"/>

3<s:property/>:什么属性都不写,表示输出栈顶元素值

Debug标签

<s:debug></s:debug>//利用这个标签可以输出ognlcontext中所有的值

注意:注释(通用)

<!--大家好-->

该注释方法仍然会被编译,如果是纯文本则在源代码中可以显示;如果含有代码,则会编译成对应值输出

<%--<s:setvalue="%{'你好'}"var="aa"scope="request"></s:set>--%>

该注释方法,不回被编译,即使在源代码中也看不到

“valueStack”=OgnlValueStack

.context=OgnlContext

._root=CompoundRoot//对象堆栈

._values=HashMap<K.V>//Map堆栈

.table=HashMap$Entry<K.V>

[2]application对应的地址

[14]session对应的地址

[23]request对应的地址

[24]action对应的地址

[27]parameters对应的地址

.root=CompoundRoot//对象堆栈

elementData=Object[2]

.[0]=ValueStackAction

.[1]=DefaultTextProvider

1<s:debug></s:debug>//利用这个标签可以输出ognlcontext中所有的值

Push标签:

value放到对象栈顶,但只能在内部才能取到对应的值,标签结束,值便消失

<s:pushvalue="%{'大家好'}">

<s:property/>

<s:debug></s:debug>

</s:push>

2测试set标签:<br>

<s:setvalue="#request.request_username"var="aaaaa"scope="request"></s:set>

<s:propertyvalue="#request.aaaaa"/>

说明:这样的情况,aaaaakey值会出现在request域中。

<s:setvalue="#request.request_username"var="aaaaa"></s:set>

<s:propertyvalue="#request.aaaaa"/>

说明:这种写法aaaaa会作为一个key值存在ognlmap中。所以利用

<s:propertyvalue="#aaaaa"/>也能输出值。

3显示map栈中域的值

输出request域中的值<s:propertyvalue="#request.request_name"/><br/>

//attr表示依次在各域中查找

输出session域中的值<s:propertyvalue="#attr.session_name"/><br/>

输出application域中的值<s:propertyvalue="#application.application_name"/>

显示map栈中map的值:<s:propertyvalue="#xixi"/>

4Radio标签

<s:radiolist={'"#male':'','female':''}"name="sex"label="性别"></s:radio><br/>

<!--两者写法效果相同-->

<s:radiolist="#request.map"name="sex"label="性别"/>

4、取值方法

ValueStack的push方法,push(student);将对象直接放到栈顶中去

ValueStack的set方法,set("person",person);将对象放到对象栈的HashMap中去

ValueStack的setValue(“comment”,update)方法,设置栈顶参数值

ValueStack的getValue()方法,获取栈顶参数值getValueininterfaceMap.Entry

Resultname的作用,当一个action中有多个result时,就需要用name来区别

<resultname="scope">ognl/showscope.jsp</result>

5、配置常量

Constantd的配置可以覆盖掉default.properties文件中的,还可以覆盖struts-default.xml,struts-plugin.xml这些xml文件中关于常量的内容

<constantname=struts.ui.themevalue=simple></constant>

注意:value值如果有多个,可以用”,“隔开

6、result中的type

redirectredirectActionchain的区别

定义:当使用type=redirectAction”或type=redirect”提交到一个action并且需要传递一个参数时。

这里是有区别的:

1、使用type=redirectAction”时,结果就只能写Action的配置名,不能带有后缀:“.action

2、使用type=redirect”时,结果应是action配置名+后缀名

Struts2常用标签

不会的时候查看内存快照是个好方法

struts的标签不懂的,拿到页面一看源代码就行了

form默认methodpost

用了ognl表达式action="/userAction_doEdit.action"不用${pageContext.request.contextPath}

讲了表单

radio标签

<s:radiolist="{'JavaEE+Android课程','Net+WindowPhone课程','JavaEE+物联云计算课程'}"

οnselect="courseName"name="courseName"label="意向课程"></s:radio>

select标签

s:select

list属性代表数据的来源

listKey相当于option元素中的value属性的值

listValue相当于option元素中要显示的值

headerKey是最上面的option元素的value的值

headerValue是最上面的option元素的要显示的值

name属性,可以实现回显功能

s:checkboxlist

list数据的来源

listKeyvalue的值

listValue显示的值

name必须要有

<!--没有解决默认选中的问题-->

<s:checkboxlistlist="#list"listKey="sid"listValue="sname"name="用户名"></s:checkboxlist>

s:iterator属性都存在map栈中

value数据来源,没有则默认找栈顶元素对象

[var]可选,表示当前迭代对象,当多层循环时要用

status当前元素一些属性值

count遍历了的第几个数据

index正在遍历的索引值

even是否为偶数

odd是否为奇数

说明:迭代的时候,struts2会把元素对象临时放到栈顶,循环结束后删除

格式:

list的迭代

<s:iteratorvalue="#personList"var="pList"status="st">

<trclass="<s:properyvalue="#st.even?'even':'odd'">

<s:porpertyvalue="#pList.pid"/>

<s:porpertyvalue="#pList.pname"/>

<s:porpertyvalue="#st.count"/>

<s:porpertyvalue="#st.index"/>

<s:porpertyvalue="#st.even"/>

<s:porpertyvalue="#st.odd"/>

<s:iterator/>

特别的:将personListpush到栈顶

则修改为<s:iterator>

Map的迭代,value得到的是entry,对应keyvalue

<s:iteratorvalue="#map">

</s:porpertyvalue="key">

</s:porpertyvalue="value.pid">

</s:porpertyvalue="value.pname">

<s:iterator/>

多层的迭代(list<map>)

<s:iteratorvalue="#lists">

<s:iterator[value="top"]>

<s:porpertyvalue="key"/>

</s:porpertyvalue="value.pid">

</s:porpertyvalue="value.pname"/

</s:iterator>

</s:iterator>

ifelse语句

<s:iftest="">

</s:if>

<s:elseiftest="">

</s:elseif>

<s:else>

</s:else>

超级链接语句

<s:aaction=""></s:a>

1、针对struts2.1的版本

如果超级要加一个参数

正确的写法是tagAction_show_href_ifelse?pid=%{pid}

错误的写法是tagAction_show_href_ifelse.action?pid=%{pid}

2EL表达式$ognl表达式问题

ognl标签外部可以使用el表达式,ognl标签内不可以使用

html标签中,只能使用el表达式

<s:aaction="tagAction_show_href_ifelse?pid=${pid}"></s:a>



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值