ImageVerifierCode 换一换
格式:DOCX , 页数:56 ,大小:313.09KB ,
资源ID:4696744      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4696744.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Struts2 学习笔记.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Struts2 学习笔记.docx

1、Struts2 学习笔记Struts2 学习笔记-wjt276二一年一月五日 完目录01 Struts2-Action 5一、 Struts作用: 5二、 搭建Struts2的运行环境: 5三、 Namespace 6四、 标签 6五、 Action 6六、 路径问题的说明 8七、 Action的动态调用方法 8八、 Action通配符(wildcard)的配置 9九、 Action的属性接收参数 101、 在Action添加成员属性接受参数 102、 域模型(Domain Model) 103、 ModelDriven接收参数 11十、 Action属性接收参数中文问题 12十一、 简单数据

2、验证 12十二、 访问Web元素 14一、 方法一:ActionContext方式 15二、 方式二:Ioc(控制反转)推荐使用 15三、 方式三:获取原类型 16四、 方式四:获取原类型-控制反转 17十三、 Struts2配置文件模块化包含(include) 17十四、 默认的Action 18十五、 Action总结 1802 Struts2-Result 19一、 Result类型 (type) 19二、 全局结果集(Globle Result) 20三、 动态的结果集(dynamic result) 21四、 带参数的结果集 21五、 Result总结 22六、 项目经理: 2203

3、 OGNL表达式语言 2304 Struts2-Tags 28Struts2标签目录 28一、 property标签 28二、 set标签 29三、 bean标签 29四、 标签少使用 29五、 If elseif else 30六、 Iterator标签 31七、 Theme 3105设计约定(编码规定) 3206 项目开发顺序 3207 声明式异常处理 3308 国际化 35一、 国际化资源文件 35二、 Java国际化 35三、 Struts2国际化 351、 Action级别 352、 Package级别 363、 Application级别 36四、 资源文件中的参数处理 37五、

4、国际化-动态语言切换 3709 自定义拦截器 3810 类型转换 38Struts2总结 39目录 Action 简单数据校验 Result 常用配置文件 OGNL & ValueStack Tags -Project 类型转换、上传与下载、interceptor、防止重复提交 MVC思想深入剖析 源码解读 其他话题01 Struts2-Action一、 Struts作用:将请求与结果分开二、 搭建Struts2的运行环境:1、建立Web项目;2、建立Struts2的配置文件(struts.xml); 将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。 配置

5、如下: /hello.jsp 3、复制Struts2相应的jar包及第三方包。 将空项目中lib目录中的除junit和spring-test之外的所有文件复制到项目的WebRoot/WEB-INF/lib目录下4、修改对应的web.xml,建立struts2的filter(参考struts自带的项目),添加如下配置: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 三、 NamespaceNamespace决定了action的访问路径,默认为“”,可以接收所有路径的

6、action,如果没有找到相应的namespace时,则使用namespace为空的actionNamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action、/xxx/index.action、或者/xxx/yyy/index.action.Namespace最好也用模块来进行命名。namespace :对应与项目名称后面的/(例如Struts2_0100_Introduction后面的/) (http:/localhost:8080/Struts2_0100_Introduction/)四、 标签是用来解决重名的问题,例如当系统的前

7、台和后台都有一个action名叫hello,这时就需要用package来区分。 前台后台struts2中的package与java的package是相同的作用的。五、 Action具体视图的返回可以由用户自己定义的Action来决定具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容,有三种手段: /ActionIntroduction.jsp 注:标签中的class属性是表示action的对应的类(这个类是一个普通Java类),当访问这个action时会创建这个类成为一个对象,然后执行这个对象中的execute方法()(execute方法返回类型为String)。第一种:Actio

8、n 普通Java类public class IndexAction1 public String execute() return success; 当标签中class属性省略时,则默认执行com.opensymphony.xwork2.ActionSupport类中的execute方法,而这个方法返回一个字符串常量SUCCESS(常量值为:”success”).第二种:Action 实现com.opensymphony.xwork2.Action接口,这个接口中定义了一些常量和一个execute方法,我们重写execute()方法就可以了。import com.opensymphony.xw

9、ork2.Action;public class IndexAction2 implements Action Override public String execute() /return success; return this.SUCCESS; /SUCCESS常量值为:success 第三种:Action 继承com.opensymphony.xwork2.ActionSupport类,而这个类又实现了com.opensymphony.xwork2.Action接口,我们重写execute()方法就可以了。import com.opensymphony.xwork2.ActionSu

10、pport;public class IndexAction3 extends ActionSupport Override public String execute() /return success; return this.SUCCESS;/SUCCESS常量值为:success 注:第三种Action是我们需要使用的方式,因为这个类不担实现了com.opensymphony.xwork2.Action接口,更重要的是它已经帮我封装了许多其它有用的方法。六、 路径问题的说明struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。虽然可以用re

11、direct方式解决,但redirect方式并非必要。 解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径) 或者使用myeclipse经常用的,指定basePath还有另一种方式,就是在标签中,指定标签值,这样就使用统一绝对路径。 base href= /注:标签:当前页面中所有连接都会在前面加上base地址。七、 Action的动态调用方法Action执行的时候并不一定要执行execute方法,我们可以指定Action执行哪个方法:1、 方法一(通过methed属性指定执行方法):可以在配置文件中配置Action的时候

12、用method=来指定执行哪个方法 /user_add_success.jsp 这样,只要在action的对象中有一个add的方法,并且返回类型为String就可以了。如果没有method属性,则默认执行execute()方法。import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport public String add() return SUCCESS; 2、 动态方法调用DMI(推荐)可以在url地址中动态指定action执行那个方法。Url地址如下:http:/loc

13、alhost:8080/Struts2_0500_ActionMethod/user/user!add方法:action + ! + 方法名注:只要Action对象中有这个方法,并且返回类型为String就可以调用。这样Struts.xml配置文件中不需要配置methed属性。代码如下: /user_add_success.jspAction类:public class UserAction extends ActionSupport public String add() return SUCCESS; 总结:推荐使用第二种动态方法调用DMI,因为第一种需要大量的Action配置,后者可以在

14、url中动态指定执行action中哪个方法。八、 Action通配符(wildcard)的配置使用通配符,将配置量降到最低, 不过,一定要遵守约定优于配置的原则1、 通配符星号(*) 表示所有数字表示第几个通配符例如:Student* 那么1代表第一个星号(*) *_* 那么1代表第一个星号(*) ,2代表第二个星号(*)2、 实例 /Student1_success.jsp /1_2_success.jsp 解释:第一个Action的名称为name=”Student*” method=”1”,表示所有Action以Student开始的都会执行这个Action,并且执行Student后字符为方

15、法名的方法,例如:访问的Action为Studentadd,会执行这个Action(Student*),并且执行add的方法.因为1在这里代表add,并且返回/Studentadd_success.jsp页面。第二个Action的名称name=”*_*” method=”2” class=”action.1Action” 表示所有Action中包含下划线(“_”)都会执行这个Action,例如:Teacher_add,那么会执行这个Action,并且Action对应的类为TeacherAction,且执行Action中的add方法,返回结果页面为/Teacher_add_success.jsp

16、,因为在这里的1表示Teacher,2表示add3、 匹配顺序当匹配的Action有两个以上时,则会按匹配精确度高的那个Action,当有个相同的匹配精确度时,则按先后顺序进行。九、 Action的属性接收参数Action中三种传递并接受参数:1、 在Action添加成员属性接受参数例如请求的URL地址:http:/localhost:8080/Struts2_0700_ActionAttrParamInput/user/user!add?name=a&age=8其中传递了两个参数:name和age,其值分别为:a、8,此Action执行的是add()方法。那我们只要在user这个Action

17、对象中添加这两个成员属性并生成set、get方法。public class UserAction extends ActionSupport private String name; private int age; public String add() System.out.println(name= + name); System.out.println(age= + age); return SUCCESS; public String getName() return name; public void setName(String name) this.name = name; p

18、ublic int getAge() return age; public void setAge(int age) this.age = age; 2、 域模型(Domain Model)就是利用对象域来进行传递和接受参数例如请求的URL地址:http:/localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?user.name=a&user.age=8其中,访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add” 利用对象域user来传递参数,为

19、对象的属性赋值(user.name=a user.age=8) 注:需要一个对象user并且这个对象需要有两个成员属性,且具有get、set方法。 然后在Action中添加一个User对象的成员属性。并且有get、set方法,就可以了。/User对象public class User private String name; private int age; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age;

20、 public void setAge(int age) this.age = age; /Action类public class UserAction extends ActionSupport private User user; /private UserDTO userDTO; public String add() System.out.println(name= + user.getName(); System.out.println(age= + user.getAge(); return SUCCESS; public User getUser() return user; p

21、ublic void setUser(User user) this.user = user; 3、 ModelDriven接收参数使Action实现com.opensymphony.xwork2.ModelDriven(在实现接口时需要使用泛型,否则使用时需要转型)中利用其getModel()方法返回对象模型,从而获得传入的参数。例如URL如下:http:/localhost:8080/Struts2_0900_ModelDrivenParamInput/user/user!add?name=a&age=8其:访问的是namespace=”/user” action的name=”user”

22、Action所执行的方法method=”add”,其传入了两个参数:name=a,age=8。参数被传入至Action后,会被ModelDriven对象根据参数名自动赋值给User对象相应的属性而生成User对象,并且由getModel()返回。那么我们在Action中就可以利用这个对象了。注意:传入的参数名需要与对象模型中的成员属性一致。对象模型User:public class User private String name; private int age; public String getName() return name; public void setName(String

23、name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; Action对象import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport implements ModelDriven private User user = new User(); public String add() System.out.println(name= + user.getName(); System.out.println(age= + user.getAge(); return SUCCESS; Override public User getModel() return user; 一十、 Action属性接收参数中文问题如果表单提交数据中有中文时,尽量使用post方式。需要在Struts.xml配置文件中加入一个常量配置,如下: actio

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1