struts2基础总结

Struts2基础

#的用法:

1、从map栈中取值,

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

%用法:

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

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

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

$用法:

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

Property标签

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

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

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

s:property value="#xixifasf" default="dafhodsh"/>

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

Debug标签

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

注意:注释(通用)

<!-- 大家好 -->

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

<%-- <s:set value="%{'你好'}" 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:push value="%{'大家好'}">

<s:property/>

<s:debug></s:debug>

</s:push>

2测试set标签:<br>

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

<s:property value="#request.aaaaa"/>

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

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

<s:property value="#request.aaaaa"/>

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

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

3显示map栈中域的值

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

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

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

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

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

4Radio标签

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

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

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

4、取值方法

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

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

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

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

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

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

5、配置常量

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

<constant name=struts.ui.theme value=simple></constant>

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

6、result中的type

redirectredirectAction chain的区别

定义:当使用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:radio list="{'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数据的来源

listKey value的值

listValue 显示的值

name 必须要有

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

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

s:iterator 属性都存在map栈中

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

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

status 当前元素一些属性值

count 遍历了的第几个数据

index 正在遍历的索引值

even 是否为偶数

odd 是否为奇数

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

格式:

list的迭代

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

<tr class="<s:propery value="#st.even?'even':'odd'">

<s:porperty value="#pList.pid"/>

<s:porperty value="#pList.pname"/>

<s:porperty value="#st.count"/>

<s:porperty value="#st.index"/>

<s:porperty value="#st.even"/>

<s:porperty value="#st.odd"/>

<s:iterator/>

特别的:将personList push到栈顶

则修改为<s:iterator>

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

<s:iterator value="#map">

</s:porperty value="key">

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

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

<s:iterator/>

多层的迭代(list<map>)

<s:iterator value="#lists">

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

<s:porperty value="key"/>

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

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

</s:iterator>

</s:iterator>

if else语句

<s:if test="">

</s:if>

<s:elseif test="">

</s:elseif>

<s:else>

</s:else>

超级链接语句

<s:a action=""></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:a action="tagAction_show_href_ifelse?pid=${pid}"></s:a>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值