struts2的用法总结(针对大家长出现的问题)

时间:2024.4.27

1:在action中定义的变量,在jsp页面中显示用:<s:property value="变量名" />

${变量名}

2:在页面中实现自动增加的序号用iterator的statuts的index属性 eg:

<s:iterator value="#request.inOutAccountList" id="data"

status="listStat">

<s:property value="#listStat.index+1"/>

</s:iterator>

3:在action类中取得request和session对象的方法

Map session = ActionContext.getContext().getSession();

HttpServletRequest request = ServletActionContext.getRequest ();

设置它们的值的方法

session.put("operation", "add");

request.setAttribute("name", name);

页面中取得它们的值:

<s:property value="#session.operation"/>

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

${requestScope.name}

4:页面中奇偶行样式不一样的控制方法:

<tr class="<s:if test='#listStat.odd == true

'>tableStyle-tr1</s:if><s:else>tableStyle-tr2</s:else>" >

5:单选框和复选框的使用方法

1):可以设置默认选中值,注意list的值的设置,通过这种方式使key和value不一样,这种方法比较常用(checkboxlist or radio)

<s:radio name="uncarInsPolicy.policyStateCode"

list="#{'5':'通过' , '2':'不通过'}"

listKey="key"

listValue="value"

value='5'

/>

2):这里的key和value的值是一样的(checkboxlist or radio)

<s:checkboxlist

list="{'Red', 'Blue', 'Green'}"

name="favoriteColor"/>

6:struts2 中的标签会生成类似由<tr><td></td></tr>构成的字串(具体什么标签生成什么,可以查看生成后的页面的源代码)如果不限制这些多余代码的生成,页面将变得无法控制,所以一般我们是不希望它生成多余的代码的,具体的设置方法如果,在struts.xml中统一配置

<constant name="struts.ui.theme" value="simple"/>加上该句即可

也可以通过在页面中将tag的theme属性设为"simple"取消其默认的表格布局 不过最好是:自定义一个theme,并将其设为默认应用到整个站点,如此一来就可以得到统一的站点风格

7:jsp页面中格式化日期的方法

<s:date name="unCarInsModificationInfo.createTime" format="yyyy-MM-dd" nice="false"/>这样就可以将日期格式化为yyyy-MM-dd的形式

8:默认情况下,当请求action发生时,Struts运行时(Runtime)根据struts.xml里的Action映射集(Mapping),实例化action对应的类,并调用其execute方法。当然,我们可以通过以下两种方法改变这种默认调用

1)在classes/sturts.xml中新建Action,并指明其调用的方法

比如想调用action类中的

public String aliasAction() {

message ="自定义Action调用方法";

return SUCCESS;

}

则在classes/sturts.xml中加入下面代码:

<action name="AliasHelloWorld" class="tutorial.HelloWorld"

method="aliasAction">

<result>/HelloWorld.jsp</result>

</action>

既可用action名调用该方法了

2)(比较常用)

访问Action时,在Action名后加上“!xxx”(xxx为方法名)。

9:Struts 2.0有两个配置文件,struts.xml和struts.properties都是放在WEB-INF/classes/下。

struts.xml用于应用程序相关的配置

struts.properties用于Struts 2.0的运行时(Runtime)的配置

10:在action类中取得web下某一文件夹物理路径(绝对路径)的方法 filePath =

ServletActionContext.getServletContext().getRealPath("/upLoadFiles")

11:要想返回的页面不是一个直接JSP页面而是要先通过返回action中的方法读取相应的数据再返回到jsp页面,有两种方法

1)在struts.xml中这么设置

<result name="list"

type="redirect-action">sysmanage/UserBaseInfoAction!findUserBaseInfo.action</result>

2)在action中返回时直接调用这个方法即可

return findList();

12:设置checkboxlist中默认值的方法

<s:checkboxlist name="skills1"

="Skills 1"

list="{ 'Java', '.Net', 'RoR', 'PHP' }"

value="{ 'Java', '.Net' }" />

<s:checkboxlist name="skills2"

label="Skills 2"

list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }"

listKey="key"

listValue="value"

value="{ 1, 2, 3 }"/>

13:二级级连下拉框

<s:set name="foobar"

value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />

<s:doubleselect list="#foobar.keySet()"

doubleName="technology"

doubleList="#foobar[top]"

label="Technology" />

14:当属性中有标签代码时,如果你想不显示这些标签代码(格式化输出),可以使用struts2标签的escape属性

<s:property value="name" escape="false"/>

15:if_esleif_else中的% #的作用

“#”主要有三种用途:

1. 访问OGNL上下文和Action上下文,#相当于

ActionContext.getContext();下表有几个ActionContext中有用的属性:

struts2的用法总结针对大家长出现的问题

parameters 包含当前HTTP请求#parameters.id[0]作用相当于

参数的Map request.getParameter("id")

包含当前

HttpServletReques#request.userName相当于t的属性request.getAttribute("userName") (attribute)的

Map

包含当前

HttpSession的属#session.userName相当于

性(attribute)的session.getAttribute("userName")

Map request session

包含当前应用的#application.userName相当于applicatioServletContext的application.getAttribute("userNamen 属性(attribute)") 的Map

用于按request >

session > #attr.userName相当于按顺序在以上三

application顺序个范围(scope)内读取userName属性,

访问其属性直到找到为止

(attribute) attr

2. 用于过滤和投影(projecting)集合,如books.{?#this.price<100};

3. 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。

“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。 例如在Ognl.jsp中加入以下代码:

<hr />

<h3>%的用途</h3>

<p><s:url value="#foobar['foo1']" /></p>

<p><s:url value="%{#foobar['foo1']}" /></p>

generator 标签(JSP Tag)

描述

从val属性生成一个iterator。

参数

例子

例1:

生成一个简单的iterator,并且使用iterator标签打印出内容。

<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}">

<s:iterator>

<s:property /><br/>

</s:iterator>

</s:generator>

例2:

生成一个iterator,使用count属性。因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。

Generate an iterator with count attribute

<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3">

<s:iterator>

<s:property /><br/>

</s:iterator>

</s:generator>

例3:

生成iterator,使用了id属性,之后生成的对象放在pageContext中,可以通过指定的id来访问。

<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="4" separator="," id="myAtt" /> <%

Iterator i = (Iterator) pageContext.getAttribute("myAtt");

while(i.hasNext()) {

String s = (String) i.next();

%>

<%= s %> <br/>

<%

}

%>

例4:

生成iterator,使用converter属性,这里的convertor仅仅将每一个对象添加了一个"converter-"前缀。

<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" converter="%{myConverter}">

<s:iterator>

<s:property /><br/>

</s:iterator>

</s:generator>

public class GeneratorTagAction extends ActionSupport { ....

public Converter getMyConverter() {

return new Converter() {

public Object convert(String value) throws Exception { return "converter-"+value;

}

};

}


第二篇:【文法总结】系助词「は」的用法


[警告]以下是很科學的理解方式,建議在邏輯專家指導下閱覽。

很多人把「が」和「は」作比較,但說清楚一點,他們在比較的是被「は」吃掉的「が」和沒有被吃掉的「が」。「が」和「は」在本質上是不可比較的。

「が」跟「を」、「に」等一樣,是格助詞,放置圍繞動作的各種關係者。放置在主格「が」的是句子的主要動詞的精神核心。

「は」跟「も」、「こそ」等一樣,是係助詞,加於已存在的格助詞上作為主觀觀點的修飾。「は」有兩個用法:用法一是指定說話的精神核心,用法二是調整討論範圍。

判斷「は」的所在格

因為「は」是係助詞,見到「は」時必須先理解它吃掉的是「が」還是「を」還是空氣,三個情況分別在例3C中三個被吃後變成「は」的位置看到。

要判斷被吃掉的格是什麼,最可靠的方法是排除已經出現了的格,例如 熊は俺が食べた,由於「が」已出現,「は」所吃的就自然是「を」。

如果已經出現的格不足夠,就會有歧義,但理解上就可以靠語義去判斷。俺は食べた(が) 林檎は食べた(を) 熊は食べた(が、を皆可) 其他格助詞加上「は」後仍被保留,不會被吃掉,所以會有「には」、「へは」、「からは」、「よりは」等等。

用法一 在一句中只可使用一次(包括特殊用法:不用),不可以用在主格「が」之後,可以產生以下兩個作用之一:

作用X:A(問題)的答案是B(答案) / 值指派

如果沒有「は」存在,「が」項就是答案,如果「は」存在,「は」之後的一項就是答案。 如果沒有「は」存在,「が」之後就是問題,如果「は」存在,「は」之後的一項以外的所有部份是問題。

沒有「は」存在時,「が」項前面不可以有任何東西存在。

要測試「は」是否在發答問作用,最直接的方法就是把句子改成一個指定句:AはBだ,如果成功,測試結果=正。

作用Y:強調

如果沒有「は」存在,整句的邏輯就是要帶出的意思,如果「は」存在,「は」之前的一項就是被強調項。

要產生這個作用,一句只能有一個「は」,因此一般只能吃「が」或更前的項。

要測試「は」是否在產生作用Y,一個方法是試把「は」改成「だけは」,若改後意思仍然通順,測試結果=正。

用法二 在一句中可被多次運用,在非倒裝句中必定是出現在用法一之前。

要測試用法二的「は」,方法是試把「は」項換成別的物件,若原句有暗示換後句不正確的意思,測試結果=正。

如果用法二的「は」只有一個,要測試用法二的「は」還有一個方法,把它換成「なら」,若句子意思不變,測試結果=正。

用法二可以看成是和另一係助詞「も」的跨句並列成一對的。

本は読んだ 所明示的是 本を読んだ 它同時也暗示存在另一個A可使得 Aを読んだ 不成立

本も読んだ 所明示也同樣是 本を読んだ 它同時也暗示存在另一個A可使得 Aを読

んだ 成立

引伸現象

從句中不可能有「は」出現,因為從句的本質是純邏輯,不會用於值指派或強調,也不會界定討論範圍。

示例

〔例1A〕今 此処で 俺が 本を 読んだ = 剛才在這裏我讀書了。(因為「が」前面有副詞和で格,這必定是作用Y)

〔例1B〕俺が 今 此処で 本を 読んだ = 剛才在這裏讀書的就是我。(因為蓄意把「が」項提前,這必定是作用X)

〔例2A〕今 此処で 俺は 本を 読んだ = 剛才在這裏我讀的是書。(理解為作用X)/剛才在這裏 我 讀了書。(理解為作用Y)/(用法二省略)

〔例2B〕俺は 今 此処で 本を 読んだ = 我就是剛才在這裏讀了書。(理解為作用X)/我 剛才在這裏讀了書。(理解為作用Y)/(用法二省略)

〔例2C〕今は 此処で 俺が 本を 読んだ = 剛才發生的就是我在這裏讀了書。(理解為作用X)/(作用Y不適用)/(用法二省略)

〔例2D〕今 此処では 俺が 本を 読んだ = 剛才在這裏發生的就是我讀了書。(理解為作用X)/(作用Y不適用)/(用法二省略)

〔例2E〕〔誤〕今 此処で 俺が 本は 読んだ = (語法錯誤,「は」不可用在主格「が」之後)

〔例2F〕本は 今 此処で 俺が 読んだ = 書的話,剛才在這裏我讀過。(因為蓄意把被「は」吃掉的「を」項提前,只能是用法二)

〔例3A〕今 此処で 俺は 本は 読んだ = 剛才在這裏要說我的話,對書做了的事就是把它讀了。(第一個は只能是用法二,理解為作用X)/(作用Y不適用)/剛才在這裏要說我,書的話,是有讀過的。(理解為只有用法二)

〔例3B〕今 此処では 俺は 本は 読んだ = 剛才要說我,在這裏的話,對書做了的事就是把它讀了。(理解為作用X/作用Y不適用/省略只有用法二)

〔例3C〕今は 此処では 俺は 本は 読んだ = 要說剛才,我,在這裏的話,對書做了的事就是把它讀了。(理解為作用X/作用Y不適用/省略只有用法二)

〔例3D〕今 此処では 俺は 本を 読んだ = 剛才要說在這裏的話,我做了的事就是把書讀了。(理解為作用X/作用Y不適用/省略只有用法二)

〔例3E〕今は 此処では 俺は 本を 読んだ = 要說剛才,在這裏的話,我做了的事就是把書讀了。(理解為作用X/作用Y不適用/省略只有用法二)

〔例4〕今 此処で 俺は 本は 読みは した = 剛才在這裏要說我的話,書的話,讀了的事是真的。(首兩個は只能是用法二,理解為作用X)/(作用Y不適用)/剛才在這裏要說我,書,讀的話,是有的。(理解為只有用法二)

以上,是在下參考若干資料(例如維基),綜合個人經驗整理而成。有疑問或不同見解者,歡迎討論。往後會繼續有別的文法話題,希望最後可以成為一套完整筆記。

更多相关推荐:
Struts2面试总结(20xx版)

1Struts2中Action通过什么方式获得用户从页面输入的数据又是通过什么方式把其自身的数据传给视图的Action从页面获取数据有三种方式1通过Action属性接受参数2通过域模型获取参数3通过模型驱动获取...

Struts2总结

第一章MiniStruts的制作不使用Servlet也不使用requestgetParameter获取参数是用户能够直接访问Dao中的查询方法1可以使用filter过滤器用来拦截用户的表单提交请求的路径请求的参...

Struts2知识点总结

1struts2步骤1创建web项目2添加struts2的必须jar包3添加支持配置webxml文件4创建界面和相应的action5配置strutsxml文件6部署运行项目2struts2的工作流程1浏览器发送...

Struts2最全面总结

20xx年5月13日221312Struts2总结fdteamcaptain陈玉龙1Struts2的起源和背景Struts2以WebWork优秀的设计思想为核心吸收了Struts1的部分优点建立了一个兼容Web...

Struts2基础知识总结

Day1一框架概述1三大框架是企业主流JavaEE开发的一套架构Struts2SpringHibernate2什么是框架为什么要学框架框架是实现部分功能的代码半成品使用框架简化企业级软件开发学习框架清楚的知道框...

Struts2 总结

Struts2框架主讲李洪鹤以下笔记均为我本人亲自整理若有描述不对或代码错误请同学们及时更改一下重新上传上去谢谢1234567891011Struts是基于MVC的轻量级框架1实现了MVC2轻量侵入性与量级成正...

struts2基础总结

Struts2基础三种方式接收用户输入1使用领域对象接收用户输入2使用ModelDrivenaction页面示例注意代码黑体部分3使用action属性接收用户输入二种方式访问requestsessionappl...

01-Struts2框架知识点总结

Struts2框架培训日志92020xxStruts2框架培训日志Struts框架的起源Struts是在20xx年5月发布第一个版本Struts主要目的实现MVC模式开发结合Servlet和JSP技术将业务逻辑...

Struts2开发总结

Struts2项目开发总结注Struts2版本Struts216数据库Oracle9i所须架包commonslogging104jarcommonsfileupload121jarfreemarker2313j...

Struts2开发总结(经典版)

Struts2项目开发总结注Struts2版本Struts216数据库Oracle9i所须架包commonslogging104jarcommonsfileupload121jarfreemarker2313j...

struts2面试题(自己总结)

Struts2面试题1struts2工作流程Struts2框架本身大致可以分为3个部分核心控制器FilterDispatcher业务控制器Action和用户实现的企业业务逻辑组件核心控制器FilterDispa...

个人学习总结-BootStrap入门教程

注明该文档由本人整理于20xx年12月8日Bootstrap中文参考网站BootStrap最新版源码下载官网下载的Bootrsap源码包含下列文件构建bootstrap基础网页可以作为网页的基础模板以后直接复制...

struts2总结(34篇)