structs2知识点

合集下载

Struts2小知识点

Struts2小知识点

Struts2简要总结1、S truts2框架简介Struts2是Struts1的下一代产品,是建立在Struts1和WebWork技术基础上的合并的全新框架;在体系结构方面,Struts1和Struts2差别巨大,Struts2以WebWork 为核心,采用拦截器机制处理用户请求,使业务逻辑控制器能够与Servlet API脱离开,所以Struts2可以理解为WebWork的更新产品,也就是说Webwork和Struts2只有很小的变化,而Struts2和Struts1的变化很大。

2、M VC简介MVC是模型(Model)-视图(View)-控制器(Controller)三层架构的简称,3、S truts2流程1)Struts2框架的大致处理流程:①浏览器发出请求,例如请求/login.action等。

②核心控制器FilterDispatcher根据请求决定调用合适的Action。

③ Struts2的拦截器链自动对请求应用通用功能,例如workflow、validation或文件上传等功能。

④回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作,既可以将数据保存到数据库,也可以数据库中检索信息。

实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户请求。

⑤ Action的execute方法处理结果信息将被输出到浏览器中,可以是HTML页面,图像,也可以是PDF文档或者其它文档。

此时支持的视图技术非常多,既支持JSP,也支持Velocity,FreeMarker等模板技术。

2)流程简介:橘黄色的部分,如:ActionContextCleanUp和Other Filters(SiteMesh,etc)和FilterDispatcher,属于过滤器层,由这三个过滤器组成过滤器链;蓝色的部分是Struts2框架的核心部分,比如Action代理,相应的配置和ActionMapper等等;绿色的是相应的拦截器,在Action执行前和执行后都要调用;浅黄色的部分是开发人员或者用户在使用框架的时候需要实现的部分,比如配置文件,Action,还有页面等当一个初始的请求到达Servlet容器,这个请求要先经过相应的一系列的标准的过滤器链的处理,最重要的是Filter Dispatcher过滤器,前面的两个过滤器在集成相应的插件的时候会用到(对页面的布局、描述进行统一的控制的时候会用到这些插件),如果请求并不使用相应的插件,那么请求会经过Filter Dispatcher过滤器,Filter Dispatcher作为核心过滤器会接受请求,然后询问ActionMapper来确定请求的Action是否应该被调用,如果请求的Action需要被调用的话,Filter Dispatche核心过滤器就会把核心控制权委派给相应的Action代理(ActionProxy),ActionProxy会询问Action框架的配置管理器(Configuration Manager,由Struts2框架提供的),而Configuration Manager的工作是由Struts.xml这样的一个配置文件来管理的(由开发人员提供,即请求该由那些资源来处理,处理后的结果是怎样的都是由开发人员在Struts.xml配置文件中配置的),那么通过配置文件和配置管理器后,Action代理(ActionProxy)会创建一个实现了命令模式的Action Invocation,实现了Action Invocation后,Action Invocation会在调用真正的业务控制器Action之前一次调用相应的Interceptor拦截器,然后执行Action,把结果会生成一个相应的响应页面(可以是JSP、FreeMarker等等),在执行完响应以后还会一次经过相应的拦截器,执行顺序跟执行Action前正好是相反的,然后响应会通过相应的过滤器链回到客户端,用户接收到响应呈现出最终的结果,也就是说通过过滤器链进来然后生成响应后又通过过滤器链返回到客户端,这就是Struts2框架的处理流程。

structs2

structs2
10
IoC方式
要使用IoC方式,我们首先要告诉IoC容器 (Container)想取得某个对象的意愿,通 过实现相应的接口做到这点
11
Acபைடு நூலகம்ionContext
一次Action调用都会创建一个ActionContext 调用:ActionContext context = ActionContext.getContext() 在structs2中,它通过包装提供了对Servlet的访问:
22
“%”符号
“%”符号的用途是在标志的属性为字符串 类型时,计算OGNL表达式的值。例如在 Ognl.jsp中加入以下代码 "%{#foobar['foo1']}"
23
“$”有两个主要的用途
用于在国际化资源文件中,引用OGNL表达 式 在Struts 2配置文件中,引用OGNL表达式
国际化支持
1 resource bundle per action
pervasive UI support for retrieving messages
8
Action
如果我要取得Servlet API中的一些对象, 如request、response或session等,应该 怎么做?这里的execute不像Struts 1.x的 那样在参数中引入。开发Web应用程序当然 免不了跟这些对象打交道。在Strutx 2.0你 可以有两种方式获得这些对象:非IoC(控 制反转Inversion of Control)方式和IoC 方式
12
二、structs2原理
XWork2的层次:
ActionProxy ActionInvocation Action

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配置
struts.properties Struts2.x另一个核心配置文件,它所配置的有效属性有 struts.configuration
• 指定加载Struts2的配置文件的配置管理器,默认是: 指定web应用的默认Locale 指定web应用的默认编码集 指定strus2所需的国际化资源文件,多份时用","分隔。

验证程序配置
根元素<validators> 根元素下可以有任意多个filed和validator 每个filed可以使用多个验证程序 嵌入多个field-validator元素 field-validator元素 必须有一个type属性,指定一个验证程序 可以有一个short-circuit属性

通配符
例子1 <action name="UserAction_*" method="{1}">
• 例如:UserAction_add
例子2 <action name="*_*" class="{1}" method="{2}">
• <result>{1}_{2}_success.jsp</resutl>
• 字段级别
– fieldName=converterClass
xwork-conversion.properties
• 类级别
– 例如:app17.Color=ColorConverter

扩展StrutsTypeConverter类
绝大多数类都需要从String -->非String类型 ,以及从非String-->String

Struts2知识点总结

Struts2知识点总结

1.简介Struts 2是Struts 的下一代产品,是在 struts 1和WebWork 的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

Struts 2以WebWork 为核心,采用拦截器的机制来处理用户的请求,2.Struts2处理流程3.Struts2基础<include >可以把struts 配置分为相应的struts.xml 文件<package >中的属性namespace 可以把action 分包,用来解决不同项目的同名action <action>中的method 属性决定action 调用action 业务类的那个方法,根据方法的返回值跳到名字队对应的result 结果集中除了Metnod 调用指定的方法为还有一种动态调用1.在请求的页面就指定调用的action 名称及方法,语法:actionName!methodName.action,action 可以省略,2.在<action>使用通配符, <action name=”house_*”>....<result >其名字可以自行定义,根据业务类返回的值,对应相应的result 官方定义的有success,login,error,input 等其中的type 属性可以决定转向类型,默认的是dispatcher(转发)其他前端控制器 StrutsPreparedAndExec uteFilter 拦截用户请求 用户请求 Action 业务处理,处理请求,返回处理结果 根据请求的url 找到action 返回处理结果 Jsp 页面 渲染结果结果数据传递给jsp 处理后的html 响应用户的是redirect,请求重定向的指定的URL,redirectAction重定向到指定的Action,chain:将请求转发到指定的Action,json返回JSON对象如果result的内容不是一个具体的jsp页面而是${}形式的这就是动态结果的配置,就是结果页面在配置是不能确定,需要在运行时才能确定,比如管理员和普通用户登录,详细的动态结果配置详见资料Action类实现的方法有三种1.继承ActionSupport (常用)2.实现Action接口3.自己编写方法Action接收参数1属性方式接收参数,2Javabean方式接收参数(常用)3.moderlDriven方式接收参数Struts2访问servletAPI的方法在jsp课程中,服务器保存数据的作用域通常有request,session,application,他们对应的servletAPI 分别是HttpServletRequest,HttpSession,servletContext,同样在struts2控制器(action)中也需要访问这些作用域,有三种方法1.使用ActionContext类提供的方法2.以依然注入(IoC)方式访问,实现响应的接口即可3.使用以耦合方式使用ServletActionContext类访问OGNL与struts标签引入的标签指令<%@taglib uri="/struts-tags" prefix="s"%>理解值栈(存储action属性的地方)和stackcontext(存储request,session的地方)概念,并且使用<s:debug>查看值栈访问的值OGNL访问集合知识点,不常用字符串转换OGNL表达式用户%{}相反的加’’单引号Struts2标签可分为通用标签,控制标签,Ajax标签通用标签又分为数据标签和控制标签数据标签:<s:property><s:debug><s:date><s:set><s:url>和<s:a><s:param><s:include>控制标签<s:if>,<s:elseif><s:else><s:iterator>UI标签理解模板与主题,模板用于生成HTML代码,共同风格和观感的模板组织到一起就成了一个主题,内建的主题有simple,xhtml,css_xhtml(默认),css_xhtml,ajax主题的更改用标签属性theme=”simple”标签:<s:form><s:textfield><s:textarea><s:submit><s:select><s:doubleselect>下拉列框和联动列框属性及实现参观相关代码Ajax标签Datetimepicker是一个日历控件导入相应的包引入<%@taglib uri="/struts-dojo-tags" prefix="sx"%>指令在<head>中添加<sx:head parseContent="true"/>添加标签<sx:datetimepicker name="timer" label="发布时间"/>4.数据校验数据校验分为客户端验证和服务器端验证,sruts2对服务器端的验证有两种,1.使用actionsupport编码实现验证2.使用验证框架实现验证,使用actionsupport编码进行验证的方法有三种,1.直接在action类业务方法中验证,2.重写validate()方法实现验证,3.使用validateXXX()方法实现验证验证的关键点在于当用户名或密码没填写时添加addFieldError()方法,此方法处理与字段相关的错误,比如输入的年龄不合理,响应的jsp输出错误的标签是<s:fielderror fieldname=”/>, addActionError()方法是用来添加与action所处理的业务相关的错误信息,在JSP输出错误的标签是<s:actionerror>如果两种情况有任何一种错误(hasErrors())就return到INPUT结果集中(事先已经配置好) 使用验证框架使用特定的配置框架即可,命名的前半部分是action 的名字,可对全局和局部进行验证!具体查看相关资料5.拦截器拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。

struts2课程知识点总结

struts2课程知识点总结

<s:param
<s:property <s:include <s:push <s:set
<s:debug></s:debug>
<s:action
6、Struts2 类型转换
1、自动类型转换 2、list 列表自动类型转换 3、类型转换错误提示 定义 AddMaterialAction.properties 文件
5、tags(标签库)
引入:<%@ taglib uri="/struts-tags" prefix="s"%> 1、 <form> 标签
<s:form> <s:textfield <s:password <s:textarea <s:select <s:checkboxlist
2、控制标签
………………………
validate="true">
8、Struts2 国际化支持
步骤: 1、JSP 中配置
<s:textfield name="username" key="username"/>
2、struts.properties 中配置
struts.custom.i18n.resources=messageResource
f) session 等 jsp 内置对象的应用
两种方法 1、普通 2 、map
g) action 通配符的配置
* 与 {} 或 *_*
<action name="Student*" class="example.StudentAction"method="{1}">

Struts2知识小结

Struts2知识小结

Struts2知识点小结Struts Tag Library对于一个MVC框架而言,重点是实现二个部分:控制器部分和视图部分。

Struts2框架同样如此:控制器部分由Action(以及隐藏的系列拦截器)来提供支持,而视图部分则通过大量标签来提供支持。

Struts2标签库使用OGNL表达式作为基础,且默认支持OGNL, JSTL, Groovy和Velcit y表达式。

且把所有标签都定义在URI为/struts-tags 命名空间下,但我们依然可以依据功能将其分为三类:1. UI标签;a. 表单标签;b. 非表单标签;树、Tab页等;2. 非UI标签;a. 流程控制:条件、循环;b. 数据访问:输出ValueStack中的值;3. AJAX标签;Object Graph Navigation Language, 缩写为OGNL,是类似于EL的脚本语言,一. 控制标签Struts2中的非UI标签包括控制标签和数据标签,其中控制标签可以完成输出流程控制,例如条件、循环等操作,也可完成对集合的合并、排序等操作,它有如下九个:1) if: 选择输出;2) elseIf/elseif: 与if标签结合使用;3) else: 与if标签结合使用4) append: 将多个集合拼接成一个新的集合;5) generator: 将一个字符串解析成一个集合;6) iterator: 将集合迭代输出;7) merge: 将多个集合拼接成一个新集合,与append拼接方式不同;8) sort: 对集合进行排序;9) subset: 截取集合部分元素,形成新的子集;1. iterator标签对集合进行迭代,包括List,Set和数组,Map.. value: 可选,被迭代的集合,通常使用OGNL表达式指定,如无,则使用ValueStac k栈顶集合;. id: 可选,指向集合中元素;. status: 可选,指向迭代时IteratorStatus实例,通过该实例可判断当前迭代元素的属性;每次迭代都有一个IteratorStatus实例,该实例包含以下方法:a. int getCount(): 返回当前迭代了几个元素b. int getIndex(): 返回当前迭代元素的索引c. boolean isEven(): 当前索引是否为偶数d. boolean isFirst(): 当前迭代元素是否是第一个元素e. boolean isLast(): 当前迭代元素是否是最后一个元素f. boolean isOdd(): 当前索引是否为奇数2. if标签根据一个Boolean表达式的值,来决定是否计算,输出标签体等内容。

struts2知识点汪

struts2知识点汪

一、Framework框架概念
二、Struts2的概念
三、Webwork
四、Struts2的工作原理
五、如何搭建struts2框架
六、什么是Action
七、编写action的三种方式
八、Action的5个常量
九、Action的一个执行方法
十、属性驱动
十一、模型驱动之OGNL
十二、模型驱动之ModelDriven
十三、输入校验
十四、Xml配置方式校验
十五、valuestack
十六、Ognl
十七、Action 中的动态方法使用及调用十八、通配符的使用
十九、Struts2的作用域
二十、Result字符串常量
二十一、ResultType常量
二十二、数据标签
二十三、控制标签
二十四、UI标签
二十五、国际化
二十六、Struts2回显
二十七、Struts2上传
二十八、Struts2下载
二十九、enctype用法
三十、UUID
三十一、拦截器
三十二、自定义拦截器
三十三、Token拦截器
三十四、Token拦截器的工作原理。

Structs 2复习资料1

Structs 2复习资料1

客户端初始化一个指向Servlet容器的请求;请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器)接着FiterDispatcher询问ActionMapper来决定这个请求是否要调用Action如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxyActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action ActonProxy创建一个ActionInvocation的实例ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关的拦截器的调用一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到相应的返回结果Package:处于模块化的考虑,可将各种动作分门别类的组织成不同的包必须有一个name属性,namespace属性是可选的以“/”作为默认值,调用该包里的动作,必须将命名空间的添加到有关的URI字符串中使用extends扩展某一个包<package name="default" namespace="/" extends="struts-default"> Result元素:是<action>的子元素,指出动作完成后把控制权交给谁对应着动作方法的返回值;同一个action可以有多个result;结果和方法返回值之间的映射关系有result的name属性负责建立,默认值是:success;如果某方法返回一个值,而该值没有与之匹配的result,structs 将尝试在global-results元素下为它匹配结果,再找不到就抛出异常可以在struts.xml文件里利用constant元素来覆盖default.properties 文件里的某个设置POJ O:plain and old Java Object动作类需要遵循的规则遵守JavaBeans属性名的命名规则;必须有一个不带任何参数的构造器;每个动作类至少有一个方法供struts在执行时调用(默认为execute)同一个动作类可以包含多个方法;编写动作类可以不考虑线程安全的问题Action的作用得到请求参数;调用逻辑处理类处理业务;返回String类型结果Action的一些重要元素ActionContext 数据环境需要为每个Action准备一个数据环境获取与Web容器相关的对象Interceptor 丰富的层次结构使用类似责任链的设计模式对Action的责任进行分类并连接起来Result 执行结果执行结果被抽象成一个层次,可以定义任意类型的View层的构造ActionProxy 执行环境需要一个类似调度器的产品将上面的元素整合起来ActionInvocation 调度者ActionProxy接口中有个比较特殊的变量:ActionInvocation,它就是Action的调度者,负责一些列的调度动作可以继承一下5个静态字段SUCCESS NONE ERROR INPUT LOGIN ActionSupport类ServletActionContext对象getRequest() 返回HttpServetRequest对象getSession()getResponse()getServletContext()result 的type属性默认为dispatcher,含义是把控制权转交给某个JSp页面type的其他常用类型:Redirect 重定向到另一个URLRedirectAction 重定向到另一个动作Session的创建和使用private Map session;public void setSession(Map session) {this.session = session;}public String execute() {this.session.put("USER_NAME", "Test User 1");return SUCCESS;}}Map session = invocation.getInvocationContext().getSession();OGNL:对象图形导航语言表达式:ONGL就是表达式,用简洁直观的语法表达想法。

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>

第1章Struts2框架技术入门

第1章Struts2框架技术入门
3
1.1.1 Struts2的由来与发展

Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于 MVC框架。,但Struts2和struts1在代码编写风格上几乎不一样的, struts2有以下优点:
Struts2的应用可以不依赖于Servlet API和struts API。 Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等
6
2. Struts2软件包中主要文件
7
(1)apps文件夹:该文件夹中存放基于 Struts2的实例应用,这些实例对学习者来说 是非常有用的资料。 (2)docs文件夹:该文件夹中存放Struts2的 相关文档,Struts2 API、Struts2快速入门等 文档内容。 (3)lib文件夹:该文件夹中存放Struts2框架 的核心类库以及Struts2的第三方插件类库。 (4)src文件夹:该文件夹中存放Struts2框架 的全部源代码。
27
不同的开发者有自己的方式来实现模型组件,
Struts2框架的目的是使用Action来调用模型 组件。例如一个银行存款的模型组件,代码 如【例1-1】所示。
28
29
【例1-1】中的代码是一个完成某一功能的业
务逻辑模块,在执行saving(String accounts,String money)方法时能够通过调用 其他类或者直接访问数据库完成存款功能。 使用业务控制器Action可以调用该业务逻辑 组件在Action的execute()中实现,代码如 【例1-2】所示。
25
26
1.2.2 Struts2的模型组件
模型组件可以是实现业务逻辑的模块,可以

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学习笔记

struts2学习笔记Struts2 框架第一天今天重点内容: 1、什么是Struts2框架?框架特性分析 2、 struts2 快速入门(分析struts2 运行原理) 3、 struts2 常用配置 4、如何访问Struts2 Action (Servlet) 5、 Struts2 结果集使用(响应跳转/ajax) 1. Struts2 框架概述1.1. 什么是struts2Struts2 框架问题:什么是框架?为什么要学习框架?框架是一些已经写好代码,通常和具体业务无关(可以看成:软件的半成品)学习框架,提高开发效率,简化开发(应用框架,实现代码代码开发实现开发标准化) javaEE三层结构在web阶段 DAO模式符合JAVAEE三层结构的三层结构出自 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 1asm.* 3 jar 处理字节码信息 javassist.jar 1 代理相关 freemarker 1 jar 图形模板引擎开发strutrs2 基包导入web 工程!感谢您的阅读,祝您生活愉快。

Struts2基础

Struts2基础

s:property 标签显示Action类“name”属性的值,这个值是使用HelloWorldAction类 的 getName() 方法返回的
案例1: SSH_Struts2_Demo01
3. 创建主页 —— index.jsp
视图文件里定义的 hello action将通过 struts.xml文件影射到 HelloWorldAction类及其 execute方法。
• 视图技术 而Struts2 与传统的MVC框架略有不同,因为它由Action扮演模型的角色,而不 是控制器,虽然这样会有一些重叠。
Struts2架构
控制器是通过Struts2 分派 Servlet过滤器以及拦截器进行
实现
模型是通过Actions进行实现 视图则是结果类型和结果的结 合 值栈和OGNL提供共同的路线、
Struts.xml
struts.xml文件包含有随着Actions的开发需要修改的配置信息。它可用于覆
盖应用程序的默认设置,例如:struts.devMode=false 以及其他定义为属性 文件的设置。
所有的Struts配置文件都需要有正确的doctype
根标记元素
声明不同的包,允许配置的分离和模块化
当用户点击提交按钮时,将使
得Struts2框架运行 HelloWorldAction类中的
execute方法,并基于该方法
的返回值,选择一个适当的视 图_Demo01
4. 配置文件—— struts.xml
我们需要一个映像把URL、HelloWorldAction类(模型)以及 helloworld.jsp(视图)联 开发者模式,开发时打开 Action 请求对应的名字 系在一起。映像告知Struts2 框架哪个类将响应用户的动作(URL),类里的哪个方法将要 执行,以及基于方法所返回的字符串结果,会呈现怎样的视图。 Action 请求对应的类

01-Struts2框架知识点总结

01-Struts2框架知识点总结

Struts2框架培训日志●Struts框架的起源Struts是在2001年5月发布第一个版本。

Struts主要目的实现MVC模式开发。

结合Servlet和JSP技术将业务逻辑代码与数据显示代码分离开,实现低耦合Struts不断改进中两个最受瞩目的方案是Shale和Struts Ti。

Shale是一个基于构件的框架,并在最近成为Apache的顶级项目。

Struts Ti则是在Struts的成功经验基础上继续坚持对前端控制器(Front Controller)和MVC(model-view-controller)模式进行改进。

WebWork是在2002年3月发布的。

在2005年12月,WebWork与Struts Ti宣布合并。

与此同时,Struts Ti改名为Struts Action Framework 2.0。

Struts1.x与Struts2区别1.Struts2核心控制器由Servlet修改为Filter(核心控制器控制对目标程序(Action程序)的访问.)2.Action对象多实例,不需要考虑线程安全问题。

3.支持多种视图展现技术(JSP,Freemarker,V olicity)4.扩展性强,提供了拦截器Interceptor5.Struts2不是Struts1的升级,而是继承webwork的血统,它吸收了struts1和webwork的优势。

因为struts1框架存在固有的一些问题,所以这里我们只介绍Struts2框架。

Struts1框架不再做介绍。

●Struts2框架是一个轻量级的MVC流程框架轻量级:用普通JavaBean程序代替EJB完成代码开发,从开发角度,从运行角度,比较快速和简单.无侵入性.MVC:Model – View – Controller1.Model : 做业务逻辑代码(Service),数据处理代码(DAO),数据封装(User/Page) -> JavaBean/EJB2.View : 数据展示JSP(JSTL/EL)/Freemarker3.Controller : 流程控制(接收数据,调用Model,跳转页面) Servlet/Filter流程: 数据流程. 数据从哪来的,到哪里去框架: 框架是对通用代码进行封装,做项目开发利用框架来做,可以提高开发效率,程序员将开发任务重点放在业务逻辑代码的实现上. 框架从设计的角度,利用6大开发原则(开闭原则(OCP);迪米特法则,依赖倒转原则,里氏代换原则,接口隔离原则,合成聚合/复用原则),以及相关设计模式(工厂,模板,适配器,代理,单例,多例…),所以,框架都遵循迪米特法则.●Struts2框架的文件结构: apps : 包含了框架的多个应用压缩包(war)docs : 框架的说明文档(学习手册,API文档)。

Struts2基础知识大全

Struts2基础知识大全
</interceptor-stack>
</interceptors>
十一、Struts2响应JSON数据
1、导包:json-lib、struts2-json-plugin(可以把有get方法的属性自动转换成JSON格式)
十二、FreeMarker(模板引擎)
1、web.xml配置filter
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
资源文件中放信息:名字=值(#表示注释)
切换语言环境:给它发一个请求参数
JSP使用资源:<s:text name="资源文件中的名字"/>(主要用来取资源文件)
<s:textFiled key="资源文件中名字"/>
Ognl中使用资源:继承ActionSupport类,在Ognl中调getText("资源文件中的名字")方法
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>(允许静态方法访问)
三、Struts2请求过程
1、根据请求url到struts.xml找到action
2、确定action类实例化
3、把请求参数赋给action属性
2、判断方法是否需要校验,若不需要校验,则进入action的处理方法。若需要,则判断有没有校验文件,若有校验文件则进行校验,若没有则判 断有没有validate处理方法名,若有则进行校验,若没有则判断有没有validate方法,有则进行校验。判断校验是否成功,若判断成功则进入 action的处理方法,若不成功则进入对应action的input的result

struts2知识点摘要1

struts2知识点摘要1
1、StrutsPrepareAndExecuteFilter称为核心控制器,XxxAction称为业务控制器
2、Struts2的默认配置文件名为struts.xml,该文件放在Web应用的类加载路径下,通常放在WEB-INF/classes路径下;
3、struts2.properties文件是一个标准的Properties文件,管理常量,只要将struts2.properties文件放在类加载路径下,Struts2框架就可以加载该文件。
Map para=ctx.getParameteequest对象的getParameterMap()方法。
在jsp页面中使用它们
${applicationScope.counter}
${er}
${requestScope.tip}
ctx.getSession().put("user",user);
//通过ActionContext访问request范围的属性值
ctx.get("tip");类似于HttpServletRequest的getAttribute(String name)方法。
ctx.put("tip","welcome to my home!");
ctx.getApplication().put("counter",counter);
//通过ActionContext访问session范围的属性值
Map session=ctx.getSession();
void setSession(Map session);直接传入一个Map实例,将该Map实例里的key-value对转化成session的属性名、属性值。

structs2笔记

structs2笔记

一、struts配置文件struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><!-- 当value设置成为true时,tomcat自动刷新;struts.devMode为开发模式--><constant name="struts.devMode" value="false" /><include file="example.xml"/><package name="default" namespace="/" extends="struts-default"><default-action-ref name="index" /><!-- name存放的是路径,如index.action,.aciton可以省略--><action name="index"><result type="redirectAction"><param name="actionName">HelloWorld</param><param name="namespace">/example</param></result></action></package><!-- Add packages here --></struts>二、web.xml的配置<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>三、struts.xml提示在Preference中找到xmk catalogAdd。

Structs2学习笔记

Structs2学习笔记

1.函数显示注释方法Action1.实现一个Action的最常用方式:从ActionSupport继承2.DMI动态方法调用!3.通配符配置* {1} {2} …a)*_*4.接收参数的方法(一般用属性或者DomainModel来接收)5.简单参数验证addFieldErrora)一般不使用Struts2的UI标签6.访问Web元素a)Map类型i.IoCii.依赖Struts2b)原始类型i.IoCii.依赖Struts27.包含文件配置8.默认action处理2.s tructs2把请求与展现分开,请求与最后的结果分开3、页面传值给action三种方法传值1,/user属性下,user的action对应的add方法,name和age为对应的get后面的名字见下面使用action属性接收参数<a href="user/user!add?name=a&age=8">添加用户</a>下面是对应struct配置文件的配置<struts><constant name="struts.devMode"value="true"/><package name="user"extends="struts-default"namespace="/user"><action name="user"class="erAction"> <result>/user_add_success.jsp</result></action></package></struts>(域模型)/user属性下,user的action 传值2,对应的add方法,user类对应的name和user 类对应的age为对应的get后面的名字见下面使用action属性接收参数<a href="user/user!add?=a&user.age=8">下面是对应struct配置文件的配置<struts><constant name="struts.devMode"value="true"/><package name="user"extends="struts-default"namespace="/user"><action name="user"class="erAction"><result>/user_add_success.jsp</result></action></package></struts>传值3,使用ModelDriven接收参数<a href="user/user!add?name=a&age=8">添加用户</a><struts><constant name="struts.devMode"value="true"/><package name="user"extends="struts-default"namespace="/user"><action name="user"class="erAction"><result>/user_add_success.jsp</result></action></package></struts>Struct2先创建new一个action,然后发下他实现了modeldriven接口,然后调用它的实现的model,有该model返回他调用的model,然后使用里面的get,set方法4通配符配置5,动态方法调用6,<s:debug></s:debug>标签里数据解释7,多个submit提交。

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

Struts2原理上图来源于Struts2官方站点,是Struts 2 的整体结构。

Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。

在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

(1)核心控制器:FilterDispatcherFilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter 会过滤用户请求。

如果用户请求以action结尾,该请求将被转入Struts2框架处理。

Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。

Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action 时,定义了该Action的name属性和class属性,其中name属性决定了该Action 处理哪个用户请求,而class属性决定了该Action的实现类。

Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。

而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。

(2)一个请求在Struts2框架中的处理大概分为以下几个步骤1 .客户端初始化一个指向Servlet容器(例如Tomcat)的请求,即HttpServletRequest请求。

2 .这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 .如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5 .ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6 .ActionProxy创建一个ActionInvocation的实例。

7 .ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8 .一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。

在表示的过程中可以使用Struts2 框架中继承的标签。

在这个过程中需要涉及到ActionMapper在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。

struts2有哪些优点?1)在软件设计上Struts2的应用可以不依赖于Servlet API和struts API。

Struts2的这种设计属于无侵入式设计;2)拦截器,实现如参数拦截注入等功能;3)类型转换器,可以把特殊的请求参数转换成需要的类型;4)多种表现层技术,如:JSP、freeMarker、Velocity等;5)Struts2的输入校验可以对指定某个方法进行校验;6)提供了全局范围、包范围和Action范围的国际化资源文件管理实现struts2是如何启动的?struts2框架是通过Filter启动的,即StrutsPrepareAndExecuteFilter,此过滤器为struts2的核心过滤器;StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。

struts2读取到struts.xml的内容后,是将内容封装进javabean对象然后存放在内存中,以后用户的每次请求处理将使用内存中的数据,而不是每次请求都读取struts.xml文件struts2框架的核心控制器是什么?它有什么作用?1)Struts2框架的核心控制器是StrutsPrepareAndExecuteFilter。

2)作用:负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。

默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入struts2框架处理,否则struts2框架将略过该请求的处理。

可以通过常量"struts.action.extension"修改action的后缀,如:<struts><constant name="struts.action.extension" value="do"/></struts>如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。

如:<constant name="struts.action.extension" value="do,go"/>struts2配置文件的加载顺序?struts.xml ——> struts.properties常量可以在struts.xml或struts.properties中配置,如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.struts.xml文件的作用:通知Struts2框架加载对应的Action资源struts2常量的修改方式?常量可以在struts.xml或struts.properties中配置,两种配置方式如下:1)在struts.xml文件中配置常量<struts><constant name="struts.action.extension" value="do"/></struts>2)在struts.properties中配置常量(struts.properties文件放置在src下):struts.action.extension=dostruts2如何访问HttpServletRequest, HttpSession 和 ServletContext三个域对象?方案一:HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();HttpSession session = request.getSession();ServletContext servletContext = ServletActionContext.getServletContext();方案二:类 implements ServletRequestAware,ServletResponseAware,SessionAware,ServletContextAware注意:框架自动传入对应的域对象struts2是如何管理action的?这种管理方式有什么好处?struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的。

主要用于管理一组业务功能相关的action。

在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。

struts2中的默认包struts-default有什么作用?1)struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。

当包继承了struts-default包才能使用struts2为我们提供的这些功能。

2)struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件。

Struts2每次都会自动加载 struts-default.xml文件。

3)通常每个包都应该继承struts-default包struts2的工作流程?用户请求——> StrutsPrepareAndExecuteFilter——> Interceptor——> Action——> Result——> Jsp/html——> 响应struts2的action的URL访问路径由什么构成?由两部分组成:包的命名空间+action的名称 [ + action的后缀 ],即:space + 在struts.xml中可以不为action指定class属性吗?struts2中有哪些默认的属性?可以,如果没有为action指定class,默认是com.opensymphony.xwork2.ActionSupport默认属性:如果没有为action指定class ActionSupport如果没有为action指定method execute() 注意:ActionSupport的execute方法里面就一句话return "success";如果没有指定result的name success如果没有指定result的type dispatcheraction中默认都有一个拦截器的引用,即:<interceptor-ref name="defaultStack">;注意:1)一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用,所以此时要显式的引进默认的拦截器;2)每个包只能指定一个默认拦截器,每个默认拦截器只针对当前包下有效。

相关文档
最新文档