云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > struts2学习心得

struts2学习心得

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 2:33:35

一.

配置问题:

最新的struts2为GA版2.2.1

其中必须类库为1.commons-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[\

如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如: ${sessionScope.user[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=\表示是否禁用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路径来确定的

六.

通配符(WildCard) *

一定要遵守“约定优于配置”的原则: 就是说什么东西 你必须符合一定的标准,在这个基础上在进行优化配置。。。。。

student{1}_success.jsp 意思就是说凡是带url为/actions/Student,后缀无论是什么的都可以访问,但是method=“{1}”说明其方法为你之前*所代表的那个.当你返回success时就调用student{1}_success.jsp 比如:你访问http://……./actions/StudentAdd,那他就调用的方法是Add 成功之后(返回success)访问studentAdd_success.jsp 看第二个action配置

/{1}_{2}_success.jsp 这又是什么意思呢?

就是说凡是带url为/actions/*_*的,无论两个*星号代表什么都可以访问,但是method=“{2}”说明其访问的方法为第一个*所代表的那个类中的第二个*所代表的方法

比如:你访问http://....../actions/Student_Add,, 那他就调用StudentAction中的Add方法 成功之后就访问Student_Add_success.jsp

这就是通配符的具体意思 七.

Action参数的传递方式:

1. 直接在地址栏上传递(url)

http://localhost:8080/project-name/namespace/action-name!add?name=a&age=10 就是给action中的两个属性 name和age 分别传值a和10 2. 用DomainModel方式传递

1. 当需要的参数过多时,创建一个域模型DomainModel也就是(javabean)

注意的是:这个DomainModel要有不含参数(参数为空)的构造方法,而且想让他自己new出对象的会 必须要传参数值 比如

http://localhost:8080/project-name/namespace/action-name!add?user.name=aa&user.age=10 解释一下,add?之前的和前面的一样,user.name和user.age是指把数据传给user这个对象的name和age属性 因为在action中我们不定义属性 而是直接定义一个User类型的对象 Private User user;并有getUser()方法和setUser()方法

而这个User就是我们说的DomainModel,他定义了两个属性name和age并有getter和setter方法,方便我们送值和取值。(相当于一个javabean)

2.当传入的值的个数和DomainModel的属性个数不一致的情况下,再用DTO(Data Transfer Object(数据传输对象)) 举个例子说明一下:

如果用户注册的时候肯定有用户名,密码和验证密码。但是你定义一个User的时候只

能有两个属性username和password,那这种情况下怎么办呢?我传的第三个值传给谁呢?所以要再建一个DTO(其实也是一个java类)UserDTO Private String username;

Private String password;Private String confirmPassword;

生成getter和setter方法,然后通过这个再定义User的DomainModel Private String username;

Private String password;写出getter方法和setter方法 注意:要写一个带UserDTO参数的User构造方法,

Public User(UserDTO userDTO){}目的是为了把得到的UserDTO属性传给User对象! 接受参数的时候注意,一定要把得到的值放到User对象里,即调用setter方法 User.setName(userDTO.getName());

用url传参数时要传给userDTO 3.用ModelDriven方式传递参数

ModelDriven是一个接口(不大常用)。 八.

配置struts2的属性有三种方法:

1. 写一个struts2。Properties文件来管理属性。一般放在项目的WEBINF/classes下。

采用的key-value对。每个key就是struts2的属性,每个value就是这个struts2的属性值。

2. 在struts2的配置文件struts.xml配置常量

在里面加入 Name为属性,value为属性值

3. 在web.xml文件中配置filter时也可以配置属性

里面为属性名 里面为属性值

上述文件的加载顺序为:struts.xml struts.properties web.xml 意思就是说 如果重复的属性 则按最后那个文件配置的算起。 九.

Action的总结:

1. 实现action的方法有三种,一般继承Actionsupport类

2. DMI动态方法调用

3. 通配符配置

4. 接受参数的方法,一般用属性或者DomainModel来接受

5. 简单参数的验证addFilterError

a) 一般不使用struts2的UI标签 6. 访问web元素

a) Map类型

搜索更多关于: struts2学习心得 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

一. 配置问题: 最新的struts2为GA版2.2.1 其中必须类库为1.commons-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、[ ]与.运算符

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com