struts2学习心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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路径来确定的