尚学堂马士兵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。

合集下载

Struts2学习笔记

Struts2学习笔记

Struts2项目的构建与配置 (2)1. 配置struts.xml (2)2. 配置web.xml (2)3. 配置Struts2的jar包 (2)Struts.xml的配置 (2)1. <package>的属性与配置 (2)2. <action>的属性与配置 (3)3. <result>的属性与配置 (5)4. <include>的属性与配置 (6)5. <constant>配置struts.properties (6)6. <exception-mapping>与<global-exception-mapping> (6)7. <default-class-ref> (6)8. <default-action-ref> (6)9. <default-interceptor-ref> (7)10. <interceptors> (7)11. <interceptor-ref> (7)12. <global-results> (7)Struts的常见问题 (7)1. 超链接路径问题的说明 (7)2. 声明式的异常处理 (8)3. i18n国际化 (8)4. 拦截器 (8)5. 类型转换 (9)OGNL表达式 (10)1. 访问值栈中action的属性 (10)2. 访问方法 (10)3. 访问集合 (11)4. 投影(过滤的作用) (11)5. 使用“[]”访问元素 (11)Struts2的标签 (11)1. $、#、%的区别 (11)2. 控制标签 (11)3. 数据输出标签 (12)4. 通用标签 (13)5. HTML非表单标签 (13)6. HTML表单标签(很少用) (14)7. AJAX标签(很少用) (15)作者:李志伟编写完成时间:2013-11-21Struts2项目的构建与配置1.配置struts.xml(1)struts.xml文件位置:在项目的src目录下创建该文件,并配置。

Struts2学习笔记

Struts2学习笔记

Struts1是一个优秀的框架,但是还是具有很多不好的地方,如Action和ActionForm严重倚赖系统框架中的API。

如ActionForm必须继承ActionForm,Action控制器继承Action,测试麻烦。

Struts2是基于webwork发展而来,并非struts1使用MyEclipse8.5版本,可自动添加依赖struts2的系统库Struts2原理:说明:Struts2没使用Servlet作为核心控制器,而是换做一个Filter过滤器来进行,其类是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 过滤器所拦截的请求是<url-pattern>/*</ url-pattern>(当然根据版本的不同,过滤器类也不同,如Org.apache.Struts2.dispatcher.FilterDispatcher)如果请求中带有.action或.do,则转入Struts2框架处理。

配置文件:Web.xml中:<filter><filter-name>struts2</filter-name><!-版本不同这里的配置不同-→<!—<filter-class>Org.apache.Struts2.dispatcher.FilterDispatcher</filter-class>→<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFi lter</filter-class><init-param><param-name>config</param-name><param-value>struts-default.xml,struts-plugin.xml,../struts.xml </param-value></init-param></filter><filter-mapping><filter-name>struts2</ filter-name><url-pattern>/*</ url-pattern></filter-mapping>Struts.xml<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN""/dtds/struts-2.1.dtd"> <struts><!—这个package可以处理文件同名的情况,一般不会更换-- ><package name="default"extends="struts-default"namespace="\"> <action name="Login"class="com.test.action.LoginAction"><result name="cheng">/index.jsp</result><result name="bai">/fail.jsp</result></action></package></struts>配置文件说明:1、package中的name为了区分不同的包2、extends是继承的包名3、namespace是提交时区分的地址,如namespace=”user”,则提交时需要加入action=”/user/xxx.action”控制其中的代码,其中数据直接封装和页面表单元素名称对应。

struts2学习笔记(部分)

struts2学习笔记(部分)

1、namespaece(最好用模块的名字命名)Namespace 为空时,用于处理其他package不能处理的全部的action2、Package 用于区分重名的情况3、copy项目的方法及注意事项修改它的启动项引入别人的项目的方法4、action4`1修改文件的默认编码4`2每次访问action都重新new出一个新的对象,不存在同步的问题执行过程4`3Action 继承ActionSupport5、路径:获取系统绝对路径<% String context = request.getContextPath(); %><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>使用绝对路径6、ActionMethod动态调用方法7、ActionWildcard通配符使用通配符,将配置量减到最低约定优于配置8、数值传递ActionAttrParamInputDomainModelDrivenModel过程9、中文问题 2.1.6.的bug不能解决中文问题10、11、value stack值栈< s:property value=“Name”/>取值栈中的数值如:< s:property value=“error”/>< s:property value=“[0]Propertyvalue是一个map,name就是key name is error 就是value 13、访问页面元素访问Stack Context中的元素14、include,模块包含15、认Action (好处:访问不存在时自动跳转带默认页)Default-action-ref默认action引用16、result类型1)默认是dispatcher 常用服务器端跳转2)Rdiect 只能是视图不能是action 客户端跳转,最后显示jsp3)Chain ---forwordaction action前不可以加”/”action之间的跳转,最后显示action4)RedirectAction action跳转,最后显示jsp服务器断的跳转:17、Global_ResultExtends =“要继承的包名“Result name属性:18、取value stack中的值动态绑定的。

struts2学习笔记

struts2学习笔记
(2).Action类实现RequestAware,SessionAware,ApplicationAware这三个接口
(3).
HttpServletRequest request=ServletActionContext.getRequest();//得到request
(4).实现ServletRequestAware等
国际化实现中英文切换:
两个超链接:<s:a action="changeLanguage?flag=zh">中文</s:a>
<s:a action="changeLanguage?flag=en">英文</s:a>
ChangeLanguageAction中内容:
public class ChangeLanguageAction {
{
struts.i18n.encoding=UTF-8 //设置编码格式
}
6.重定向跳转也可传Action中的属性值
<param name="username">${ername}</param>
7.struts2 中设置request ,session,application值
locale=;
context.setLocale(locale);
}
context.getSession().put("WW_TRANS_I18N_LOCALE",locale);
//必须将此WW_TRANS_I18N_LOCALE存放在session中
return "input";
}
}
11.struts2 文件上传下载,下载时需配置如下

struts2学习笔记

struts2学习笔记

1.包头的设置name是struts的包,与Java的包名效果类似,但不是按项目中SRC中包名设置的。

namescape是该包的命名空间。

将作为访问该报Action的路径的一部分。

默认命名空间为namescape=””;假设form 表单提交给helloworld的action ,其action=”/test/helloworld”exctends是表示该包继承的其他包struts_default是任何包都必须继承的包。

否则无法使用struts的核心功能,比如参数上传到action,文件上传,数据校验等。

abstract=”true”定义为抽象包,不得包含Action。

2.action的查找顺序(1)寻找namespace为path1/path2/path3/的包,有这个包:寻找test的Action有这个action:执行没有这个action:寻找namespace为””的命名空间(默认命名空间)是否有这action,没有的话提示找不到action没有这个包:寻找namespace为path1/path2/的包重复(1)步骤。

3.action的默认属性4.Action中各种result的转发类型dispatcher(默认类型)redirect(重定向)redirectAction (重定向到新的Action)plainText (显示原始文件内容)result转发还可包含参数,该参数取自Action中的属性。

例:<action name=”login” class=”xxxx.xxx.xxx.sdsds”><result name=”sucess”> /aaa.jsp?username=${ssss}</result></action>其中ssss是login这个Action中所必须具有的属性redirect书写格式1.<result name=”sucess” type=”redirectAction”>login</result>该写法只能访问位于同一包中的Action;2. <result name=”sucess” type=”redirectAction”><parma name=”actionname”>login</parama><parma name=”namespace”>/xxxxx</parama></result>该写法可访问位于其他包的ActionplainText书写格式1.<result type=”plainText”>/login.jsp</result>2. <result type=” plainText”><parma name=”location”>/login.jsp</parama><parma name=”charSet”>UTF-8</parama></result>全局转发只能在包内定义全局转发。

struts2学习笔记

struts2学习笔记

Struts2 框架第一天今天重点内容:1、什么是Struts2框架?框架特性分析2、struts2 快速入门(分析struts2 运行原理)3、struts2 常用配置4、如何访问Struts2 Action (Servlet)5、Struts2 结果集使用(响应跳转/ajax)1.Struts2 框架概述1.1.什么是struts2Struts2 框架问题:什么是框架?为什么要学习框架?框架是一些已经写好代码,通常和具体业务无关(可以看成:软件的半成品)学习框架,提高开发效率,简化开发(应用框架,实现代码代码开发实现开发标准化)javaEE三层结构在web阶段DAO模式符合JA V AEE三层结构的三层结构出自JavaEE规范(体系结构图)表现层⏹业务层⏹持久层/集成层Struts2 是一个表现层框架(简化表现层代码开发)分层开发:代码结构更加清晰,为了更好维护和扩展1.2.struts2 由来由两个框架优点合并后发展而来(struts1 + webwork)历史由来:Java兴起98年(最早进行java开发分方向j2se 、j2ee、j2me )J2EE 企业级应用软件开发2000 年左右出现struts1 (几乎所有开发人员都在用)随着互联网的发展struts1 设计慢慢开始存有缺陷和不足Webwork框架的出现该框架的设计思想比struts1 先进的多,例如:引入拦截器机制、ognl 表达式语言Apache 推出struts2 框架,特点: 开发流程类似struts1 ,内部结构类似webwork (struts2 和webwork 源自xwork 命令模式框架)1.3.struts2 开发包结构使用框架,导入jar包课程使用struts-2.3.15.3-all.zip 版本学习apps 使用demo (方便后期快速导入jar包和配置文件)开发中war重命名成zip包解压找到里面的13个核心jar包doc 文档(学习struts2的官方官方规范文档)lib 开发struts2 需要的所有jar包src 源代码开发struts2 没必要导入lib下128个jar包(去struts2_blank.war下方找struts2 最基本jar)将war包改为zip 扩展名,解压缩回顾jar记忆: 核心struts2-core-3.15.3.jar+ xwork-core+ognl (3) 上传(2jar) 日志: 2 jar 字符串lang 1 asm.* 3 jar 处理字节码信息javassist.jar 1 代理相关freemarker 1 jar 图形模板引擎开发strutrs2 基包导入web 工程!1.4.struts2入门理论JavaEE设计模式:前端控制器模式过滤器模式访问如图:前段控制器作用: 请求分发!通过struts.xml配置给指定Actionstruts前端控制器:开发中将所有的重复的代码提前到前端控制器去完成,在Action 中只要写不重复业务处理代码!编写快速入门开发流程说明2.Struts2快速入门案例第一步:在myeclipse 新建web project选择javaee版本,课程优先5.0 ------ myeclipse2014 servlet 版本2.5 采用JDK6 编译器第二步:导入struts2 开发jar包apps/struts2_blank.war/WEB-INF/lib/ 13个jar包asm-* 字节码操作类库(.class文件)commons-fileupload 文件上传依赖commons-iocommons-lang3 对字符串、数据操作公共方法commons-logging Java通用日志接口,依赖日志实现log4j freemarker 模板引擎(struts2标签库,依赖freemarker )javassist 生成代理ognl 表达式语言(比EL强大很多倍)struts2-core 核心jar包xwork-core struts2和webwork依赖命令模式框架2: 配置web.xml3:配置struts.xml 推荐找到2.3.15.jar --> apps 目录:struts-blank自带struts.xml 文件导入!编写HelloAction (类似之前写的Servlet )5 struts.xml 注册action 和请求资源虚拟路径映射!访问该action http://localhost/strut2_day01/hellAction运行流程分析图解:3.分析struts2运行原理Struts2 核心控制器Struts Prepare And Execute Filter (准备和执行)-------- 前端控制器模式查看系统执行默认一组拦截器打开文档: struts2核心jar 内struts-default.xml系统执行前端控制器根据struts-default.xml 配置文件配置默认拦截器栈执行一组拦截器然后再执行目标Action -->execute 方法!请求---执行一堆拦截器组件(业务功能)---- 具体ActionStruts2 可以复用代码功能,基于Interceptor 实现的问题:执行了哪些拦截器?小结原理:1: 通过web.xml 配置前端控制器2: 前端控制器执行一组拦截器通过struts.xml 访问具体action 执行业务方法3: action execute 方法返回字符串结果页面跳转!拦截器组件执行顺序:参考struts-core.jar 提供struts-default.xml 配置文件默认情况下,访问每个Action ,defaultStack 都会执行!每个拦截器都会被调用,一些重复功能,由拦截器去实现的!!!问题: 是否是struts2 开发每一次请求都会执行拦截器?拦截器并不是每次都执行!! 看访问资源的!1: 访问资源目标是一个Action 组件必然会调用拦截器然后执行action ' 2: 如果访问是jsp/html 静态资源前端控制器不会调用默认拦截器栈的!拦截器只针对Action 有效!3.1.配置struts.xml DTD提示struts.xml 引入DTD约束(限制如何配置这个文件)⏹如果电脑可以联网,自动从网上下载DTD,缓存提供提示⏹如果电脑没有联网,在本地配置DTD文件位置,提供本地提示struts-2.3.15.3\src\core\src\main\resources文件struts.xml关闭重新打开有自动提示标签!4.struts2 常用配置文件了解前端控制器在容器启动的时候执行哪些配置文件的加载! 配置文件源码分析流程: 分析StrutsPreparedAndExecuteFilter先加载*.properties 然后再加载*.xml 配置文件properties:配置框架启动一些基本配置信息: 比如: 请求虚拟路径配置乱码配置..... default.properties : 框架加载的默认配置信息其次加载xml 文件: 三个struts-default.xml : 核心包下struts-plugin.xml : struts 和第三方插件整合的时候加载插件配置文件举例: struts-json-plugin.jarstruts2 + json 整合整合第三方插件配置文件.struts.xml: 用户自定义配置文件: 可以重写上述框架配置文件信息以及用户开发相关信息: action exception result .... 小节: 容器一旦启动: 加载xxx.properties 又加载三个xml ...继续加载src 必须名称叫做struts.properties配置文件修改: default.properties 信息4.1.框架配置文件配置文件加载顺序通过源码跟踪执行主要的配置文件哪些?init 容器启动的时候加载配置文件!!跟踪dispatcher.init();配置文件的加载顺序!! 核心defalust.properties [1] struts-default.xml struts-plugins.xml struts.xml [2] struts.properies[3](修改框架默认配置信息)⏹Struts2 常量配置文件⏹default.properties (框架执行加载配置信息) struts-core jar包org.apache.struts2 包下⏹项目默认配置信息!!!⏹Struts2 框架内置核心配置文件struts-core jar包struts-default.xml 拦截器结果集⏹(Bean元素、结果集类型、拦截器… )在struts2框架体系中,package 实现一些配置复用,编写子包继承struts-default⏹Struts2 框架插件配置文件位于每个插件包根目录struts-plugin.xml扩展一些插件配置用户自定义配置因为开发中往往需要更改框架默认配置信息参数⏹在用户项目src目录struts.xml ,推荐使用!进行用户开发相关配置⏹⏹用户也可以添加properties 修改框架默认加载信息!!⏹在用户项目src目录struts.properties ,文件名不能修改!⏹用户自己常量配置文件default.properties 不推荐!⏹在web.xml 配置struts2 常量(更不推荐)规则:后加载配置文件,配置内容,可以覆盖之前加载配置内容!!!开发人员主要采用struts.xml 或者struts.propertiesstruts.properties (只能配置常量)struts.xml 修改struts.xml添加标签<constant name="" value=""></constant>测试通过struts.xml 或者自定义struts.properties 修改框架加载的默认配置信息!! 修改访问路径扩展名struts.action.extension=action,, 改成自己的扩展名4.2.小节配置文件1: default.properties : 框架加载默认配置信息如果用户需要修改推荐: struts.xml 引入<constant 标签name="key"> 2: TranditionXml :struts-default.xml : 定义struts2 大量结果集以及拦截器配置和工厂Bean : 使用默认拦截器和结果集跳转程序员在struts.xml 使用<package extends="struts-default"> 使用struts2 提供结果集和拦截器3: struts-plugin.xml : 整合第三方插件: 如果需要使用第三方插件: 程序员在struts.xml <package extends="xxx插件包名称">4: struts.xml : 定义用户自己的配置信息:4.3.详细分析Action相关映射配置Struts2 提供前端控制器,采用请求分发思想,将不同url请求,分配给不同Action进行处理,需要在struts.xml 配置请求路径和Action 映射关系!问题:struts2 package作用Package可以用来管理Action,实现包内配置复用(通过包继承实现)struts-default.xml 定义一个package包内定义大量结果集类型和拦截器用户开发package 通常继承struts-default 包name属性:包名称,在struts容器具有唯一性(在开发中可以用模块名称作为包名)namespace 属性:名称空间区分重复性举例:如果两个包存在同名Action ,需要名称空间区分action访问路径访问上面Action 应用名称空间http://localhost/struts2_day01/demo2/hello.action4.4.struts2 常量配置在struts2 六种配置文件中,都可以配置struts2 常量,后加载配置文件常量可以对先加载配置文件进行覆盖!常用常量分析1、struts.i18n.encoding=UTF-8相当于request.setCharacterEncoding(“utf-8”); 解决post 请求乱码问题Struts2开发时,无需关注post 乱码问题2、struts.action.extension=action,,Action请求映射路径默认扩展名问题:http://localhost:8080/struts2_day1/hello 也可以访问HelloAction如果请求路径必须以.action结尾3、struts.configuration.xml.reload=true修改struts.xml 配置后,无需重启服务器当设置devMode =true 激活xml自动重新加载4、struts.ui.theme=xhtml设置页面标签显示样式// struts-tag 标签库5、struts.objectFactory=struts负责创建Action对象类6、struts.enable.DynamicMethodInvocation=true // 默认是false访问Action 支持动态方法调用访问action组件可以采用动态调用的方式进行.配置文件分离,在大型项目中,因为如果使用一个配置文件,需要配置很多Action,不方便维护,struts.xml 提供<include> 标签,将配置分离出去5.访问Action5.1.Action 三种书写格式第一种写法,编写自定义Action类,实现Action接口Action 接口提供execute 处理业务逻辑方法1: 实现Action 接口!!struts.xml配置访问: Action http://localhost/struts2_day01/helloAction第二种写法:编写自定义Action 继承ActionSupport 类(间接实现Action接口)ActionSupport 类的特点:源码:添加了更多的接口实现ActionSupport 提供更多功能(数据校验、国际化…)编码:struts.xml 配置注册!注意DTD 约束规范逗号表示标签书写顺序!访问action http://localhost/struts2_day01/helloAction2第三种特殊写法:POJO plain old java object写法domain--->充当Action 场景: 请求封装对象本身就是javaBeanUser --->== Action提供一个execute 方法struts.xml 配置http://localhost:8099/struts2_day01/helloUserPOJO(Plain Old Java Object)简单的Java对象,实际就是普通JavaBeans 小结:5.2.关于Action的业务方法说明5.2.1.通配符的使用1: 访问指定业务方法<action 标签添加method ="对应Action中指定方法名称">配置struts.xml 注意每一个method属性值匹配Action具体的方法名称问题: 如果目标Action 方法业务过多struts.xml 引入多个action 标签重复性很高!如何简化struts.xml 配置??解决方案: 2种简化: 1: 通配符(重点) 2: 动态方法调用(掌握)5.2.2.通过设置method属性,执行Action不同业务方法设置method属性,指定调用Action 组件的对应方法启示:可以在一个Action中编写多个业务方法,在访问时,通过method 区别5.2.3.使用通配符简化路径和Action业务方法映射配置案例1: index.jsp 搭建请求访问Action 编写注意: 星的和占位符{1} {2} struts.xml{1} 对应name中第一个* 匹配的内容--->方法名称演示 2 颗星使用index.jsp 引入多个模块struts.xml 配置可以简化多个模块配置引入2颗星第一颗表示类名第二颗表示方法名称修改请求地址index.jsp测试!通配符完成!5.2.4.动态方法调用动态方法调用,效果类似通配符玩法,无需配置method 属性举例:在新版本struts2 中动态方法调用,默认是关闭的演示动态方法调用:编写:index.jsp注意请求资源地址的路径写法: ! 编写ProductAction配置struts.xml 完成配置最后开启动态方法调用配置查看默认的default.properties默认是关闭的在自己的strut.xml 开启测试完成!5.3.Action访问Servlet 相关API5.3.1.Action与ServletAPI 解耦合方式调用Servlet API doGet(HttpServletRequest, HttpServletReponse)--- Servlet 依赖request和response (代码中直接依赖---- 耦合)Struts2 设计思想与Servlet API 解耦合,编写Action 中不再直接依赖Servlet 任何APIStruts2 提供ActionContext 类(Action 上下文)上下文:与容器相关,获取容器相关对象、信息---- 工具类提供大量间接操作Servlet API (request、response、session、application)方法5.3.2.Action 直接操作Servlet API方式一:接口注入Servlet APIindex.jsp编写入口2:struts.xml 引入其他配置文件信息主文件: struts.xml模块化文件: myservlet.xml注意子文件不能和其他文件包名冲突3: 采用指定接口注入获取对应servlet api 对象。

Struts2课堂笔记2

一:Struts2标签库
2. Generic Tag
二:OGNL
值栈的含义正如它的名字所表示的那样——对象所组成的栈。

OGNL的全称是Object
Graph Navigational Language(对象图导航语言),提供了访问值栈中对象的统一方式。

它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。

几个概念
1. ActionContext: ActionContext是Action上下文,可以得到request session application
一次Action调用都会创建一个ActionContext
调用:ActionContext context = ActionContext.getContext()
2. ValueStack: 是值栈存放表单中的值
由OGNL框架实现, 可以把它简单的看作一个List
3. Stack Object:放入stack中的对象,一般是action。

Stack Context stack上下文也是用来存值的
Stack Context(map):stack上下文,它包含一些列对象,包括request/session/attr/application map等。

马士兵Struts2学习笔记


1noitcAnigoL A COI�者三后 .4 器容于赖依�者三后 .3 )种这用只( COI�者三前 .2 器容于赖依�者三前 .1 :用引的txetnoCtelvreS ,noisseSpttH ,tseuqeRtelvreSpttH 型类实真,noitacilppa,noisses,tseuqer型类paM得取 …点重 ) stnemelEbeWsseccA_0021_2sturtS( 素元面页问访 .21
>tluser/<psj.sseccus_dda_resu/>tluser<
>noitca/<
>egakcap/<
用调态动IMD dohteMnoitcA .5
>a/<psj.xedni>"psj.xedni"=ferh a< >daeh/< … ………
ecroFXevoL yb 71:15:0 6-7-0102 记笔课听 2sturtS_兵士马堂学尚
象对 troppuSnoitcA 行执则,””=ssalc 有没
ecroFXevoL yb 71:15:0 6-7-0102 记笔课听 2sturtS_兵士马堂学尚
> "xedni"=eman noitca<
3
{ )(dda gnirtS cilbup ;resu resU etavirp
noitca应对 >a/<户用加添>"8=ega.resu&a=eman.resu?dda!resu/resu"=ferh a<数参收接ledoM niamoD用使 )tupnImaraPledoMniamoD_0080_2sturtS( 数参收接型模域ledoMniamoD用

struts2学习笔记2

11.Result配置详解说明:在前面的许多案例中我们所用到的Action基本都继承自ActionSupport这个类,而在这个类中我们定义了五个字段:SUCCESS,NONE,ERROR,INPUT,LOGING。

我们可以直接返回这些字段值,这些字段值实质是被定义成:String SUCCESS=”success”这样的形式,所以我们只要在Result元素中用它们的小写即可。

<result>标准完整形式如下:<result name="success" type="dispatcher"><param name="location">/default.jsp</param></result>如果我们都采用默认的形式,最终可以简写成:<result>/default.jsp</result>探讨type类型:以上对type 类型作简要的说明,下面来看实例:当一个Action 处理后要返回的Result 是另一个Action 时,作如何配置,关键就是配置type 类型。

步骤一:建立两个Action:TestAction 、Test2Action步骤二:web.xml 配置省略。

struts.xml 主要配置内容如下:<struts ><package name ="resultTest" extends ="struts-default"><action name ="test" class ="com.asm.TestAction"><result name ="success" type ="chain"> <param name ="actionName">test2</param ></result></action><action name="test2" class="com.asm.Test2Action"><result name="success">/test2Suc.jsp</result></action></package></struts>说明:在名为“test”的action中,我们配置result元素的type类型值为chain,意为将继续把Action传递到下一个名为test2的Action中去,在test2.action中会把页面转向到test2Suc.jsp中去。

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

Struts2 学习笔记---wjt276 [二○一○年一月五日完]目录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)Struts学习笔记第3页共39页三、Struts2国际化 (35)1、Action级别 (35)2、Package级别 (36)3、Application级别 (36)四、资源文件中的参数处理 (37)五、国际化-动态语言切换 (37)09 自定义拦截器 (38)10 类型转换 (38)Struts2总结 (39)目录Action⏹简单数据校验Result常用配置文件OGNL & ValueStackTags---------------------Project⏹类型转换、上传与下载、interceptor、防止重复提交 MVC思想深入剖析源码解读其他话题01 Struts2-Action一、Struts作用:将请求与结果分开二、搭建Struts2的运行环境:1、建立Web项目;2、建立Struts2的配置文件(struts.xml);将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。

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