当前位置:文档之家› 尚学堂马士兵Struts2教学视频之Struts2学习笔记

尚学堂马士兵Struts2教学视频之Struts2学习笔记

目录01 Struts2-Action (5)一、Struts作用: (5)二、搭建Struts2的运行环境: (5)三、Namespace (6)四、<package>标签 (6)五、Action (6)六、路径问题的说明 (8)七、Action的动态调用方法 (8)八、Action通配符(wildcard)的配置 (9)九、Action的属性接收参数 (10)1、在Action添加成员属性接受参数 (10)2、域模型(Domain Model) (10)3、ModelDriven接收参数 (11)十、Action属性接收参数中文问题 (12)十一、简单数据验证 (12)十二、访问Web元素 (14)一、方法一:ActionContext方式 (15)二、方式二:Ioc(控制反转)—推荐使用 (15)三、方式三:获取原类型 (16)四、方式四:获取原类型-控制反转 (17)十三、Struts2配置文件模块化包含(include) (17)十四、默认的Action (18)十五、Action总结 (18)02 Struts2-Result (19)一、Result类型 (type) (19)二、全局结果集(Globle Result) (20)三、动态的结果集(dynamic result) (21)四、带参数的结果集 (21)五、Result总结 (22)六、项目经理: (22)03 OGNL表达式语言 (23)04 Struts2-Tags (28)Struts2标签目录 (28)一、property标签 (28)二、set标签 (29)三、bean标签 (29)四、<include>标签-少使用 (29)五、If elseif else (30)六、Iterator标签 (31)七、Theme (31)05设计约定(编码规定) (32)06 项目开发顺序 (32)07 声明式异常处理 (33)08 国际化 (35)一、国际化资源文件 (35)二、Java国际化 (35)三、Struts2国际化 (35)1、Action级别 (35)2、Package级别 (36)3、Application级别 (36)四、资源文件中的参数处理 (37)五、国际化-动态语言切换 (37)09 自定义拦截器 (38)10 类型转换 (38)Struts2总结 (39)目录➢Action⏹简单数据校验➢Result➢常用配置文件➢OGNL & ValueStack➢Tags➢---------------------Project⏹类型转换、上传与下载、interceptor、防止重复提交➢MVC思想深入剖析➢源码解读➢其他话题01 Struts2-Action一、Struts作用:将请求与结果分开二、搭建Struts2的运行环境:1、建立Web项目;2、建立Struts2的配置文件(struts.xml);将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。

配置如下:<!--struts.devMode : 是否设置为开发模式true:是开发模式,否则不是注:在开发模式下,修改Struts的配置文件后不需要重新启动Tomcat服务器即生效。

否则修改Struts配置文件后需要重新启动Tomcat服务器才生效。

--><constant name="struts.devMode"value="true"/><!--namespace :对应与项目名称后面的"/"(例如Struts2_0100_Introduction后面的"/") (localhost:8080/Struts2_0100_Introduction/)-->3、复制Struts2相应的jar包及第三方包。

将空项目中lib目录中的除junit和spring-test之外的所有文件复制到项目的WebRoot/WEB-INF/lib目录下4、修改对应的web.xml,建立struts2的filter(参考struts自带的项目),添加如下配置:三、NamespaceNamespace决定了action的访问路径,默认为“”,可以接收所有路径的action,如果没有找到相应的namespace时,则使用namespace为空的actionNamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action、/xxx/index.action、或者/xxx/yyy/index.action.Namespace最好也用模块来进行命名。

namespace :对应与项目名称后面的"/"(例如Struts2_0100_Introduction后面的"/")(localhost:8080/Struts2_0100_Introduction/)四、<package>标签<package>是用来解决重名的问题,例如当系统的前台和后台都有一个action名叫hello,这时就需要用package 来区分。

前台<package name="front">后台<package name="back">struts2中的package与java的package是相同的作用的。

五、Action具体视图的返回可以由用户自己定义的Action来决定具体的手段是根据返回的字符串找到对应的配置项,来决定视图的容,有三种手段:<constant name="struts.devMode"value="true"/><package name="front"extends="struts-default"namespace="/"><action name="index"class=".bjsxt.struts2.front.action.IndexAction1"><result name="success">/ActionIntroduction.jsp</result></action></package>注:<action>标签中的class属性是表示action的对应的类(这个类是一个普通Java类),当访问这个action 时会创建这个类成为一个对象,然后执行这个对象中的execute方法()(execute方法返回类型为String)。

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

import .opensymphony.xwork2.Action;public class IndexAction2 implements Action {Overridepublic String execute() {//return "success";return this.SUCCESS;//SUCCESS常量值为:"success"}六、路径问题的说明struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

虽然可以用redirect方式解决,但redirect方式并非必要。

解决办法非常简单,统一使用绝对路径。

(在jsp中用request.getContextRoot方式来拿到webapp的路径)或者使用myeclipse经常用的,指定basePath还有另一种方式,就是在<head>标签中,指定<base>标签值,这样就使用统一绝对路径。

注:<base>标签:当前页面中所有连接都会在前面加上base地址。

七、Action的动态调用方法Action执行的时候并不一定要执行execute方法,我们可以指定Action执行哪个方法:1、方法一(通过methed属性指定执行方法):可以在配置文件中配置Action的时候用method=来指定执行哪个方法2、动态方法调用DMI(推荐)可以在url地址中动态指定action执行那个方法。

Url地址如下:八、Action通配符(wildcard)的配置当匹配的Action有两个以上时,则会按匹配精确度高的那个Action,当有个相同的匹配精确度时,则按先后顺序进行。

九、Action的属性接收参数Action中三种传递并接受参数:1、在Action添加成员属性接受参数例如请求的URL地址:其中传递了两个参数:name和age,其值分别为:a、8,此Action执行的是add()方法。

那我们只要在user这个Action对象中添加这两个成员属性并生成set、get方法。

2、域模型(Domain Model)就是利用对象域来进行传递和接受参数例如请求的URL地址:其中,访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”利用对象域user来传递参数,为对象的属性赋值(=a user.age=8)注:需要一个对象user 并且这个对象需要有两个成员属性,且具有get、set方法。

然后在Action中添加一个User对象的成员属性。

并且有get、set方法,就可以了。

//Action类3、ModelDriven接收参数其:访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”,其传入了两个参数:name=a,age=8。

相关主题