马士兵struts2学习笔记(详细版)

合集下载

Struts2学习笔记

Struts2学习笔记

Struts2项目的构建与配置1.配置struts.xml(1)配置struts.xml可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的参考项目的struts.xml文件。

(2)主要的配置如下:<constant name="struts.devMode"value="true"/><package name="hello"namespace="/"extends="struts-default"><action name="hello"><result>/hello.jsp</result></action></package><constant name="struts.devMode"value="true"/> value="true"表示是开发模式,当修改了配置时服务器会自动加载修改后的配置,不需要中期服务器,方便开发。

(3)namespace="/"与浏览器的访问地址有关,namespace的默认值为空。

(4)<action name="hello"><result>/hello.jsp</result></action> action的name值与浏览器的访问地址有关,当地址是“http://…/hello”时,浏览器就会返回result中的hello.jsp 的页面。

2.配置web.xml(1)配置web.xml也可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的参考项目的web.xml文件(2)主要配置如下:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>3.配置Struts2的jar包(1)复制下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的参考项目的WEB-INF\lib文件夹下的所有的jar包到我们自己项目的WEB-INF\lib文件夹下即可。

struts2课堂笔录_详细版1

struts2课堂笔录_详细版1

常用的MVC框架目前常用的MVC框架,除了Struts 2的两个前身外,还有一些非常流行的MVC框架,这些框架都提供了较好的层次分隔能力。

在实现良好的MVC 分隔的基础上,还提供一些辅助类库,帮助应用的开发。

目前常用的MVC框架还有如下一些。

1.JSF准确地说,JSF是一个标准,而不是一个产品。

目前,JSF已经有两个实现产品可供选择,包含Sun的参考实现和Apache的MyFaces。

大部分的时候,我们所说的JSF都是指Sun的参考实现。

目前,JSF是作为JEE 5.0的一个组成部分,与JEE 5.0一起发布。

JSF的行为方法在POJO中实现,JSF的Managed Bean无需继承任何特别的类。

因此,无需在表单和模型对象之间实现多余的控制器层。

JSF中没有控制器对象,控制器行为通过模型对象实现。

当然,JSF也允许生成独立的控制器对象。

在Struts 1中,Form Bean包含数据,Action Bean包含业务逻辑,二者无法融合在一起。

在JSF中,既可以将二者分开,也可以合并在一个对象中,提供更多灵活的选择。

JSF的事件框架可以细化到表单中每个字段。

JSF依然是基于JSP/Servlet的,仍然是JSP/Servlet 架构,因而学习曲线相对简单。

在实际使用过程中,JSF也会存在一些不足:—作为新兴的MVC框架,用户相对较少,相关资源也不是非常丰富。

—JSF并不是一个完全组件化的框架,它依然是基于JSP/Servlet架构的。

—JSF的成熟度还有待进一步提高。

2.TapestryTapestry并不是一种单纯的MVC框架,它更像MVC框架和模板技术的结合,它不仅包含了前端的MVC框架,还包含了一种视图层的模板技术,使用Tapestry完全可以与Servlet/JSP API分离,是一种非常优秀的设计。

通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可,Tapestry实现了视图逻辑和业务逻辑的彻底分离。

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没有像struts1一样跟servletAPI和struts1API有紧密的耦合2、struts2提供了拦截器,利用拦截器可以进行AOP编程,实现权限拦截等功能。

3、struts提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型,4、struts2提供支持多种表现层技术,如:JSP、freeMaker、velocity等。

5、struts2的输入校验可以对指定方法进行校验,解决了struts1长久之痛。

6、提供了全局范围、包范围和Action范围的国际化资源文件管理实现。

二、Struts2的开发环境搭建:1、寻找开发struts2应用以来的jar文件,至少需要的六个jar文件。

2、编写struts2的配置文件。

3、Struts2在web中的启动。

当filter被读取的时候就会启动配置文件三、struts2中配置的包介绍Struts-default中定义了struts中的一些核心功能,比如拦截器,用来实现文件上传,和数据验证。

四:Action名称的所搜顺序:Htpp://localhost:8080/struts/test/helloword,在默认命名空间的情况下,或者是命名空间为空的情况下可以这样访问Htpp://localhost:8080/struts/test/path2/path1/helloword,五:Action中的各项默认值:如果没有给action配置class,会默认为actionsupport,如果没哟配置method方法,会默认配置action中excute方法,如果没有配置result,也会默认为success。

六:struts视图研究(result各种转发类型):七、Action属性注值当数据经常发生变化时就会采用此种方法八、指定需要struts2处理的请求后缀:默认使用的是.action后缀访问Action,其实可以通过struts.action.extension进行修改的。

马士兵Struts2学习笔记

马士兵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学习笔记-1

Struts2学习笔记-1

Struts学习1.1一、Struts的流程,简单入门例子a)创建工程b)导入jar包c)编写JSP页面d)创建Actione)配置Struts.xmlf)配置过滤器g)运行二、导入jar包a)struts2-core-2.3.1.1.jar-----Struts的核心包b)xwork-core-2.3.1.1.jar-----Command模式框架c)ognl-3.0.3.jar-----对象图导航语言(Object Graph NavigationLanguage), struts2框架通过其读写对象的属性d)freemarker-2.3.18.jar-----Struts 2的UI标签的模板使用FreeMarker编写e)commons-logging-1.1.1.jar-----ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录f)commons-io-2.0.1.jar-----文件上传包g)commons-fileupload-1.2.2.jar-----文件上传包h)commons-lang-2.5.jar对ng包的增强i)asm-3.3.jar:提供了字节码的读写的功能,包含了核心的功能,而其他的jar,都是基于这个核心的扩展j)asm-commons-3.3.jar: 提供了基于事件的表现形式k)asm-tree-3.3.jar: 提供了基于对象的表现形式l)javassist-3.11.0.GA.jar:代码生成工具, struts2用它在运行时扩展Java类三、创建JSP页面a)<a href="${pageContext.request.contextPath}/primer/helloWorldAction">超级链接</a>b)其中${pageContext.request.contextPath}EL表达式,获取到当前工程的根目录c)/primer:包名,与Struts.xml配置包时的namespace的值相同d)helloWorldAction:Action名称,与Struts.xml配置Action时的name值相同四、创建Actiona)必须实现Action接口,但是Struts提供了一个写好的类ActionSupport,该类已经实现Action接口,所以我们可以在该类上扩展一些更复杂的功能和逻辑五、编写Struts的配置文件a)如图b)其中:<!DOCTYPE引入外部的DTD文件对该XML文件进行约束c)<struts></struts>是该XML文件的根d)<package></package>代表一个包,name属性:是该包的唯一标识,主要用于包的继承,namespace属性:是该包的命名空间,唯一的,extends属性:用于包的继承。

Struts2第一天课堂笔记

Struts2第一天课堂笔记

一、框架概述1、框架的意义与作用:所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面。

特点:封装了很多细节,程序员在使用的时候会非常简单。

2、三大框架:Struts2,Hibernate,Spring3、学好框架:由于框架中细节很多,知识点比较零散,课后总结和做好笔记就变得尤为重要。

二、关于三层架构三、控制器:MVC中的控制器1、MVC回顾M:Model 模型,封装数据。

javabeanV:view 视图,展示界面。

jspC:Controller 控制器,控制程序流程。

Servlet2、Servlet和FilterServlet:Filter:总结:Servlet能做的事情,过滤器也可以做到。

并且过滤器比Servlet还多了一个放行的功能,因此过滤器比Servlet功能更为强大。

结论就是:过滤器同样也适合做控制器。

四、案例中的问题规律:1、获取请求正文,用户要做什么事情2、根据不同的请求,做出不同的判断3、执行具体的方法代码(动作)4、转向页面,展示给用户缺陷:1、重复性劳动太多,具体的执行代码也有冗余代码。

2、到底要做什么全是硬编码,像用户要做什么事情,对应执行什么代码,可以写在配置文件中。

3、具体的代码方法放到了控制器中,过于臃肿。

五、Struts2简介1、Struts2概述Struts2是Apache发行的MVC开源框架。

注意:它只是表现层(MVC)框架。

2、Struts2的来历Struts1:也是apache开发的一套mvc的开源框架。

在2005年之前非常流行。

弊端:Struts1的核心控制器就是一个Servlet。

随着使用者的增多,弊端开始出现。

Struts2:在long long ago,有一个设计超前的框架XWork,后来推出了XWork1和WebWork2。

Struts2就是apache和OpenSymphony 组织合并开发出来。

struts2学习笔记2

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学习笔记
6. Struts2 使用了新的 OGNL 的表达式语言,可以访问值栈,在对集合和索引属性的支持上功能更强大。
7. Struts1 的配置文件只需 struts-config.xml;Struts2 的配置文件有 struts.xml 和 struts.properties。struts.properties 中有两个 struts.devMode = fase 和 struts.configuration.xml.reload = true 很可爱,分别设置当前是开发还是生产模式,以及 struts.xml 改变后是否自动重新加载,免去了改配置手工重启应用的必须步骤。
Struts2 学习笔记(四)
1. 按这个顺序加载 Struts2 的常量,struts-default.xml、struts-plugin.xml、struts.xml、web.xml;后加载的会覆盖前面的同名常量。强烈不推荐在 web.xml 中配置 Struts2 常量。
2. Struts1 中有一种 Action 类型是 ForwardAction,而在 Struts2 中相应的配置方式是 <action name="Showcase"><result>/showcase.jsp</result></action>,Showcase.action 直接映射到 /showcase.jsp。
3. Struts1 的 Action 须继承抽象 Action 类,侵入了 Servlet API;而 Struts2 的 Action 可以实现 ActionSupport,或者只要一个纯净的 POJO 来充当,完全与 Servlet 绝缘。也因此带来测试性 Struts2 要比 Struts1 强,可把 Struts TestCase 扔到一旁去了。

Struts2学习笔记

Struts2学习笔记
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
要访问other()方法,可以通过这样的URL访问:/test/helloworld_other.action
9.OGNL
Struts2将应用范围里的数据以及Action处理的数据都存储在一个区域里。在Struts2中叫做值栈,valueStack。
OGNL就是从值栈中取出自己数据,并在某些条件下进行数据过滤和计算的表达式语言。先入后出。
OGNL中如果搜索的数据不是值栈里存储的数据,而是其他对象,特别是Struts2的ActionContext中的对象,则在访问
这些对象的时候,前面要加上“#”。
价格小于50元的建材
<s:iterator value="materials.{?#this.mainbid<50}">
<s:property value="materialName" />建材的价格是<s:property value="materialValue" />元!
</result>
当多个action中都使用到了相同视图,这时我们应该把result定义为全局视图。struts1中提供了全局forward,struts2中也提供了相似功能:
<package ....>
<global-results>
<result name="message">/message.jsp</result>

struts2课堂笔记(第一天)

struts2课堂笔记(第一天)
七、 结果页面的配置(处理结果Result的详解)
八、 基于注解的struts2 开发
知识结构(原理及流程------>所有配置文件----->重点配置文件(struts.xml)----------->常量配置(还有Action)------>
Action类的编写------>action中方法调用-------->动态方法调用--------->ServletAPI获取三种方法
今天所学:
一、框架概述
二、Struts2开发快速入门
三、struts2 运行流程分析
四、 struts2 常见配置(配置文件加载顺序,struts.xml常用配置,常量配置)
五、 Action的访问(Action的三种编写方法,详细配置Action , 动态方法调用)
六、在Action中使用Servlet API
四、 struts2 常见配置
学习路径
1)、 struts.xml常量配置(配置文件顺序)、Action访问(Servlet API)、结果集 (使用Struts2 编写简单案例)
2)、 请求数据
3)、 响应页面生成
1、 struts2 配置文件的加载顺序
struts2 配置文件 由核心控制器加载 StrutsPrepareAndExecuteFilter (预处理init(),执行过滤)
init_DefaultProperties(); // [1] ---------- org/apache/struts2/default.properties
init_TraditionalXmlConfigurations(); // [2] --- struts-default.xml,struts-plugin.xml,struts.xml

struts2学习笔记

struts2学习笔记
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
</package>
</struts>
2.6 部署、运行项目
第三章 访问Servlet API
HttpServletRequest/HttpSession/HttpContext
struts2获取的Servlet API的三个对象都是Map
3.1 与Servlet API 解耦访问
com.opensymphony.xwork2.ActionContext
通过ActionContext类获取Servlet API 对象
构造3个Map对象替代这三种对象
3.1.1 public Object get();方法
ActionContext ac=ActionContext.getContext();
Map request=(Map)ac.get("request");
2.1.2 public Map getSession();
private String username="";
private String password="";
public String execute(){
if(){
return "success";
}else{
return "fail";

struts2学习笔记

struts2学习笔记
<s:doubleselect list="#foobar.keySet()"
doubleName="technology"
doubleList="#foobar[top]"
label="Technology" />
<result>/HelloWorld.jsp</result>
</action>
既可用action名调用该方法了
2)(比较常用)
访问Action时,在Action名后加上“!xxx”(xxx为方法名)。
9:Struts 2.0有两个配置文件,struts.xml和struts.properties都是放在WEB-INF/classes/下。
listKey="key"
listValue="value"
value='5'
/>
2):这里的key和value的值是一样的(checkboxlist or radio)
<s:checkboxlist
list="{'Red', 'Blue', 'Green'}"
name="favoriteColor"/>
value="{ 'Java', '.Net' }" />
<s:checkboxlist name="skills2"
label="Skills 2"

尚学堂科技 马士兵 Struts 学习小结 v

尚学堂科技 马士兵 Struts 学习小结 v
3、如何导入项目? 1)右击选择 Import…
2)必须勾选“Copy projects into workspace”
3) 唯一可能出现的问题:拷贝项目的 JRE System Library 的存储路径,重新 Configure Build Path 即可 建立第 3 个 Struts2 小项目:Struts2_0300_Action 1、关于 Action 的详述 1)<action> 如果不包含 class 属性,则会自动默认调用
/Struts2_0100_Introduction/WebRoot/WEB-INF/lib 目录 3. 修改 web.xml 文件如下(从 struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\web.xml 拷贝 的):
4. 修改 struts.xml 文件如下:
%> <head> <!-- 设置base标签,当前页面的所有超链接前面都会自动加上basePath --> <base href="<%=basePath%>" /> </head> <body> <a href="index.jsp">index.jsp</a> </body>
建立第 5 个 Struts2 小项目:Struts2_0500_ActionMethod 1、可以为 Action 指定 method 属性,而 class 属性的类 UserAction 中只有一个 add ()方法
建立第 1 个 Struts2 小项目:Struts2_0100_Introduction 1. 拷贝 struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\classes\struts.xml 至项目的源文件夹

struts2课堂学习笔记

struts2课堂学习笔记

话题一:Struts 简介1:Struts是由apache开源联盟提供的一套基于构建java web应用程序的框架,他的目标是分离web程序的表示层(view),控制层(control)和模型层(model),即mvc模式。

使程序员将更多的精力投入到后台的业务逻辑设计,而不是底层的web基础框架。

2:Struts的所有功能都是建立在已有的java web组件上,例如servlet,jsp或者java bean,它只是利用一种方式将这些元素组织起来,使他们协同工作。

并不是开发一种新的组件3:总之,struts只是mvc框架,用于快速开发java web应用,struts的核心重在C(Controller),包括中心控制器ActionServlet和我们定制的Action,也为V(View)提供了一些列的标签。

Struts几乎没有涉及到M(Model)除了actionform,所以struts可以采用java实现的任何形式的商业逻辑。

4:Mvc的优点:(1)所有的控制逻辑都在控制层,便于维护(从维护角度考虑)(2)使软件便于扩充(3)开发的速度快,成本低(4)分工清晰,使团队管理井井有条。

话题二:开发简单的struts应用1:web应用的配置文件web.xml,(主要配置struts提供的中心控制器ActionServlet)<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name>//可以不写,但是如果想要有多个struts配置文件,则用以下方式<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-dis.xml</param-value></init-param><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>2:书写ActionForm类public class LoginForm extends ActionForm {private String name;private String password;public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {ActionErrors errors=new ActionErrors();ActionMessage message=new ActionMessage(“name.errors”);errors.add(“name”,message);return errors;}public void reset(ActionMapping mapping, HttpServletRequest request) { //用于重置属性,主要是多选框的重置} }(1)ActionForm是表单数据的封装对象,主要是用来封装页面的form传过来的值。

struts2学习笔记

struts2学习笔记

【讨厌的中文问题】一直以为对中文问题理解的比较透了,结果这几天一直遇到中文问题,今天的struts2.0上的特别讨厌,在get方式,url上包含中文,后台action一直无法处理。

原来不光是设置struts.i18n.encoding=UTF-8 的问题,还有设置tomcat的默认编码方式为utf-8。

在 server.xml中修改为:<Connectorport="8080"redirectPort="8443"minSpareThreads="25"connectionTimeout="20000"maxSpareThreads="75"maxThreads="150" URIEncoding="UTF-8"></Connector>另外今天使用struts2.0的url标签时,发现总是自动把当前请求的参数加到url标签中去,第二次在请求时,参数有重复。

例如<s:url id="formurl" action="customList" namespace="salemanager" ><s:param name="queryType" value="queryType"></s:param><s:param name="query" value="query"></s:param></s:url>第一次正常,然后加入请求中加入参数page,第二次处理,再加入参数page后,就有两个page参数。

解决办法由:方案一:增加属性: includeParams="none"<s:url id="formurl" action="customList" namespace="salemanager"includeParams="none" encode="false"><s:param name="queryType" value="queryType"></s:param><s:param name="query" value="query"></s:param></s:url>方案二:在加入参数的处理类中,先判断是否有该参数,如果有则修改,不是增加。

struts2学习笔记

struts2学习笔记

1.15、23__Struts2_模块包含2.<struts>3. <constant name="struts.devMode" value="true" />4. <include file="login.xml" />5.</struts>6.可以将别的写好的配置文件直接包含到struts得配置文件中,方便多人开发避免不必要的配置文件冲突.7.login.xml8.<?xml version="1.0" encoding="UTF-8" ?>9.<!DOCTYPE struts PUBLIC10. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"11. "/dtds/struts-2.0.dtd">12.13.<struts>14. <package name="login" extends="struts-default" namespace="/login">15. <action name="login*" class="er.action.LoginAction{1}">16. <result>/user_login_success.jsp</result>17. </action>18. </package>19.</struts>20.21.16、24__Struts2_默认Action22.<package name="default" namespace="/" extends="struts-default">23. <!-- 当配置文件中没有用户要访问的Aciton的时候,会调用<default-action-ref 所定义的Action --处理错误页面-->24. <default-action-ref name="index"></default-action-ref>25. <action name="index">26. <result>/default.jsp</result>27. </action>28. </package>29.30.17、27__Struts2_结果类型_result_type_131. ResultType的最常用的几种配置:(四种配置分别代表了四种不同的跳转方式)32. <package name="resultTypes" namespace="/r" extends="struts-default">33. <action name="r1">34. <!--type不写默认的为dispatcher:用服务器跳转跳转到结果页面--只能跳转到页面,不能跳转到Action -->35. <result type="dispatcher">/r1.jsp</result>36. </action>37.38. <action name="r2">39. <!--客户端跳转的方式跳转到结果页面只能跳转到页面,不能跳转到Action -->40. <result type="redirect">/r2.jsp</result>41. </action>42.43. <action name="r3">44. <!--服务器跳转的方式跳转到Action -->45. <result type="chain">r1</result>46. </action>47.48. <action name="r4">49. <!--客户端跳转的方式跳转到Action -->50. <result type="redirectAction">r2</result>51. </action>52.<!--当要跳转的Action在别的包下的时候应该这样写-->53. <action name="r5">54. <result type="china">55. <parma name="actionName">dashboard</param>56. <parma name="namespace">/sesure</param>57. </result>58. </action>59.60.18、30__Struts2_Global_Results_全局结果集61. <package name="user" namespace="/user" extends="struts-default">62. <!-- 配置全局的结果集:当返回的result没有配置的时候会执行全局结果集的配置-->63. <global-results>64. <result name="mainpage">/main.jsp</result>65. </global-results>66.67. <action name="index">68. <result>/index.jsp</result>69. </action>70. </package>71.<!--关键字extends的使用:我想在下面的这个配置包中使用上面那个包中的结果集,那么可以使用extends关键字继承上一个包72.<package name="admin" namespace="/admin" extends="user">73. <action name="admin" class="er.action.AdminAction">74. <result>/admin.jsp</result>75. </action>76. </package>77.78.17、31__Struts2_动态结果集_dynamic_result79.可以在strtus.xml文件中动态的指定返回的结果集。

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

1、02_尚学堂马士兵_Struts2_Struts2_HelloWorld_2.avi指定Tomcat的目录,指定JDK搭建开发环境(拷贝jar包,复制struts.xml 文件此文件不要放在WEB-INF下面,应该放到src下面),在web.xml文件中:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAn dExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>其中<url-pattern>/*</url-pattern> 不要写/*.do 或者 /*.action约定俗成用/*2、04_尚学堂马士兵_Struts2_Struts2_HelloWorld_3.avi(1)<!-- <constant >:常量的配置 --><!--name="struts.devMode" value="true":当前是开发模式,改动配置文件会自动装载默认是false--><!--命名空间 ---> action -->相应的处理类或页面 --><constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default"><action name="hell" class="package + class xxxx"><result>/Hello.jsp</result></action></package>(2)struts.xml不自动提示的解决办法: window--perferences-XML catalog---add---key Type="URI" key="*.dtd"3、09_尚学堂马士兵_Struts2_Struts2_HelloWorld_7_2.avistruts2的执行流程:当用户在浏览器中敲入要访问的地址的时候,浏览器会将这个请求发送给tomcat然后tomcat判断应该交给那个WebApplication来处理,然后会读取它下面的web.xml配置发现有配置:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAn dExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>因为<url-pattern> 为/* 它会过滤所有的请求然后就交给filter类org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 处理执行调用doFilter()方法,然后再方法中会读取struts-xml文件,根据用户请求的地址找到相应的package、 action、 result、然后将相应的页面返回给浏览器4、10_尚学堂马士兵_Struts2_Struts2_Namespace_命名空间.avi(1)namespace决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.actionnamespace最好也用模块来进行命名5、11_尚学堂马士兵_Struts2_Struts2_Action.avi(1)struts1 与struts2的一个重要区别:在struts1中进行多次访问的时候用到的是同一个Action对象。

而struts2则是每一次访问都会创建一个Action 对象,所以struts2不会有线程安全问题的发生(2)<result>标签如果没有指定name属性默认返回值为success(3)<action>标签中的class值如果没有配置相应的类,它会调用struts默认的一个处理类的execute()方法.(4)实现struts的处理类的时候不要自己随便写类然后定义execute()方法,也不要实现Action类而要从ActionSupport类继承,可以直接使用它为我们定义好的方法.6、12_尚学堂马士兵_Struts2_Struts2_Path_路径问题.avi(1)struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

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

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

(在jsp中用request.getContextRoot 方式来拿到webapp的路径)或者使用myeclipse经常用的,指定basePath(2)request.getContextPath()得到项目的名字,一般用来解决路径问题如果项目为根目录,则得到一个"",即空的字条串。

request.getscheme()返回的协议名称.默认是httprequest.getServerName()就是获取你的网站的域名,如果是在本地的话就是localhostrequest.getServerPort()获取服务的端口号7、13_尚学堂马士兵_Struts2_Struts2_ActionMethod_DMI_动态方法调用.avi Action执行的时候并不一定要执行execute方法<br />可以在配置文件中配置Action的时候用method=来指定执行哪个方法也可以在url地址中动态指定(动态方法调用DMI)(推荐)<br /><a href="<%=context %>/user/userAdd">添加用户</a><br /><a href="<%=context %>/user/user!add">添加用户</a><br />前者会产生太多的action,所以不推荐使用配置文件:<package name="user" extends="struts-default" namespace="/user"><action name="userAdd" class="erAction" method="add"><result>/user_add_success.jsp</result></action><action name="user" class="erAction"><result>/user_add_success.jsp</result></action></package>8、14_尚学堂马士兵_Struts2_Struts2_ActionWildcard_通配符配置.avi主要学习通配符的使用通配符可以将配置量降到最低,不过一定要遵守"约定优于配置"的原则<package name="actions" extends="struts-default" namespace="/actions"> <action name="Student_add"></action><action name="Student_*" class="com.bjsxt.struts2.action.StudentAction" method="{1}"><result>/Student_{1}_success.jsp</result></action><!-- 更简便的配置法 --><action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}"><result>/{1}_{2}_success.jsp</result></action></package>说明:(1){1}代表name="Student*"后面第一个'*',同理{2}代表第二个'*'(2).如果action之间有重复配置,struts2会匹配最精确的action。

相关文档
最新文档