struts2学习心得

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.

配置问题:

最新的struts2为GA版2.2.1

其中必须类库为mons-fileupload-1.2.1.jar

2. commons-io-1.

3.2.jar

3. freemarker-2.3.16.jar

4. javassist-3.7.ga.jar

5. ognl-3.0.jar

6. struts2-core-2.2.1.jar

7. xwork-core-2.2.1.jar

之前的版本使用ognl时不需要javassist这个类库现在这个版本则需要。。

二.

EL表达式(JSP EL)

目的是为了使JSP写起来更加简单。

A、语法结构

${expression}

B、[ ]与.运算符

EL 提供“.“和“[ ]“两种运算符来存取数据。

当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。例如:

${user.My-Name}应当改为${user["My-Name"] }

如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:${er[data]}中data 是一个变量

C、变量

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。

因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。

假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。

属性范围在EL中的名称

Page PageScope

Request RequestScope

Session SessionScope

Application ApplicationScope

D、特别强调:

1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的pageContext 属性包含某些其他值,${pageContext} 也返回PageContext 对象。

2、注意<%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE 表示不禁止.JSP2.0中默认的启用EL语言。

3、在web中用EL表达式时${name}其意思是调用其getName方法,而不是name这个属性

例如:

public class HelloWordAction{

private String msg;

public String getMessage{

return msg;

}

}

在jsp中使用${message} 就是返回msg的值。经实验证明了的

三.

Struts2是在webwork2的基础上发展而来的。和struts1一样也是mvc框架。但是虽然他们名字一样但是原理差异很大。Struts2之所以会产生是因为有以下几个优点:

1.在软件设计方面struts2没有像struts1那样和servlet API和struts API那样紧密的耦合。

Struts2可以不依赖它们。Struts2属于无侵入式设计。而struts1属于侵入式设计。

Public class HelloWordAction extends Action{

Public ActionForward execute(ActionMapping mapping ActionForm form HttpRequest request HttpResponse response)throws Exception{

。。。。

}

}

而struts2则不需要,只需自己定义就好。

2.Struts2不需要注意线程同步的问题,而struts1则面临这个问题,因为struts1对action 创建的时候只创建一次,当多个用户同时访问这个action时,则必须出现这个同步的问题。而对struts2来说,需要action时都要重新new出一个对象。

四.

Namespace决定了action的访问路径,默认为“”,可以接受所有路径的action。Namespace 后面可以加/也可以加/xx或者/xx/yy,则action的访问的路径就相对于/index.action,/xx/index.action或者/xx/yy/index.action

Package顾名思义为“包”可以把你的action包裹进来,然后在里面定义自己的action

可以定义N个包,但是包和包之间的名字不能重复,包里面的action可以和别的包的重复。3.

Action的几个属性:

1.Name:

2.Method:默认为自动的Actionsupport 里面有个方法execute()方法返回suceess字符串。所以result的默认值为success。但是注意:并不是一定要执行execute()方法,而是根据Method方法指定的来说,也可以在地址中动态指定(动态方法调用DMI(动向指标或趋向指标))推荐使用

(开发action一般继承Actionsupport重写execute()方法。。。(企业开发只用这种)

当然还有其他两个方法自己写个execute()方法,或者继承Action接口重写execute()方法)

3.Class:自己开发写的action路径。

五.

路径问题:一般用绝对路径

因为struts2的路径问题是根据action的路径而不是jsp路径来确定的

相关文档
最新文档