一、struts1
Bean需要继承ActionForm,Struts1会给你封装form,而且需要配置到struts1的配置文件中。<form-beans></form-beans>,还需要在action中引用,<action name=”usr”>
继承DispatchAction可以自己编写自己的方法,在配置文件中加个paramter,可指定方法名的字段
步骤:
1. 导包
2. 配置web.xml,配置ActionServlet,设置初始化参数config value=struts-config.xml
3. 编写实现了Action的类
4. 编写继承Action的类。重写其方法或自己写方法。编写domain,需继承ActionForm
5. 配置struts-config.xml
a) 配置bean
b) 配置action
多方法请求,继承DispatcherAction,此类在strut1的扩展包中.
二、struts2
Struts2的request
Struts2会将属性信息放到值栈 中去。而且页面中获取的request对象已经经过struts2包装。类似与在Tomcat中,访问的jsp页面取出的request是被tomcat包装过。Struts2的实现是经过struts2的核心过滤器后,重新包装了它的request
Struts2不是把Action的属性放在request中,而是直接把自己的Action放进去,然后在自己get
1、通过属性驱动来封装对象
2.2.3可以把未初始化的对象自动初始化。
2、通过模型驱动
在Action中实现ModelDriver接口,重写getMode方法,先初始化接收的对象
3、可获得原生的ServletAPI
1.通过ServletActionContext.getRequest()/ getSession()
2.可通过注入方式获取,需实现ServletRequestAware/ServletSessionAware
4、非IOC方式,实现RequestAware,实现的方法返回map
可通过ActionContext.getContext().getParameters()
Result结果类型
plantText注意IE必须设置头
redirect 参数可以由${name}取出 默认从request中取<param name=”xxx” > ${xx}</parma>
,而#{session.xx}是获取非根对象
Redirect与redirectAction的区别:
redirectAction继承redirect参数不一样
redirectAction:参数
actionName
namespace
supressEmptyParamters控制空参数
dispatch:必须是一个JSP或html资源
chain:必须转发到一个action资源,共享属性值
参数:actionName :
namespace : /xxx
异常的处理。
<exception-mapping />
Struts2的类型转换
自动转换
COS上传下载(见徐文海文件上传下载)
Struts2自带上传
1. 声明一个File类型的成员变量,需要与字段名相同img
2. 必须实现保存功能.在execute中利用FileUtils.copyFile
3. 必须要再实现另一个变量来转梦保存文件名 imgFileName
4. 必须再实现一个变量来获得文件类型 imgContentType
Struts2的get方式乱码解决方式:
写过滤器,重写request的getPramaterMap();
多文件上传: 都是数组类型也可以使List
1. 声明文件 File[] file;
fileFileName
fileContextType
文件下载
Result类型stream
参数
inputName 作为action的属性
contentType image/jpeg
contentDisposition attachment/filename=”xx.pdf”
contentSize 缓冲大小
拦截器
一、步骤
1. 书写实现Interceptor接口的类
2. 实现interceptor方法,返回值
3. 配置文件中配置
4. 配置哪个action拦截
<Interceptors> Minterceptor name=”fist” class=””>
b) 在Action配置中使用拦截器
5. 获取session
ActionContext.getContext().getSession()
Invocation.getInvocationContext().getSession();
二、配置了拦截器的影响:默认拦截器失效将会失效(例如:参数获取不到)
影响的解决:引用系统的拦截器。如果需要上传,则引用系统的上传拦截器,等等。
三、 配置默认拦截器:即使不引用也可以执行的拦截器。配置default-interceptor-ref 会对本包的action起作用。
四、 配置拦截器栈:可包含多个拦截器。
<interceptors>
<interceptor name=”first” class=”” />
<interceptor-stack name=”complex”>
<interceptor-ref name=”first” />
<interceptor-ref name=”defaultStack” />”
</interceptor>
</interceptors>
Interceptor 的实现方法
Public String interceptor(ActionInvocation invo) {
}
五、 拦截器栈会创建一次拦截器的默认构造,另外每配置的action都会创建一次,如果把拦截器放在栈中,则只会创建一次。
六、拦截方法的拦截器: MethodFilterInterceptor
·使用param标签设置excludeMethods过滤排除某方法不拦截
includeMethods谁配置谁起作用,includeMethods优先
Struts2的标签,OGNL表达式
1.OGNL以某个对象作为根
2.%不是脚本的变为脚本 ,类似js的eval
<s:url value=”%{#request.url}” />
3.$表示 用在xml
4. @调用静态的方法,默认为java.lang.Math配合 struts.ognl.allowStaticMethodAccess 为true
5.#号
1.用于其他范围内的取,
2.声明Map或List。{{‘a’,’b’,c}},#{‘a’:’AAA’,’b’:’BBB’}
3.投影过滤{#{’name’:’wj’,’age’:40},#{’name’:’other’,’age’:99}} #a1.{?this.age>90}
^#第一个 $#最后一个
标签
Uri=”/struts-tags”
<s:property value=”xxxx” /> àJSTL 里的<c:out/>
<s:a action=”xxx” />
<s:iterator value=”xxx” var==”x” /> à <c:forEach />
<s:action name=”xx.action”/>包含action资源
struts2处理json
1、布置JSON插件
2、继承json-default包
3、修改result 的Type=json
4、使用注解@JSON(NAME=”XXX”)改名,@JSON(serialized=fasle)不输出
注意循环调用
使用JsonConfig jc = new JsonConfig();
Js.setExcludes(new String[]{“addr”,”addr.user”});
JsonObect o = JsonObject.from(u,jc);
自定义类型转换器
两种方式:局部和全局,局部为某个Action
1. 继承父类的opensym. DefaultTypeConvertor
可双向转换
2. 配置
a). 局部的
需在Action所在的包中放置XXXAction-convertion.properties,然后配置文件 这个Action的属性birthday=DateTypeConverter.,这样就转换好了
b). 全局类型转换器
将上述的properties放在classpath根下,更名为xwork-conversion.propertis.
将上面的字段换成需转换的类型如java.util.Date
输入校验
方式:
1. 手工编写方式
XML配置方式
校验内容:
Action所有方法
Action中某个方法
步骤:
1. 继承ActionSuppor类
2. 重写validate方法
3. 在方法在判断如果不符合,使用addFieldError方法输出信息(对所有方法进行验证),此操作会往fieldErrors集合中添加错误信息,如果集合中包含错误信息,会请求转发input的result
4. 第3步的输出可在input的转发页面上使用struts2的标签输出<s:fielderror/>
5. 如果想对某个方法进行校验,可以修改第三步的validate为validateXxx方法,其他的步骤一样。
XML验证:
1. 继承ActionSupport类
2. 新建XXXAction-validation.xml,放在action所在的包
3. 配置xml, <validators><field name=”username>
<field-validator type=”requiredstring”>//必须 的,是校验器
<param name=”trim”>true</parrm>
<message>用户名不能为空</message>
</field-validator>
</field>
/validators>
4. 校验器是在struts的包中,校验器:
Regex expiress <![CDATA[^1[358]\d{9}$]]>
requiredstring trim必填
required不能为null
stringlength maxLength/minLength 符合长度
int 整型 min max
double 双精度浮点 min max
fieldexpression OGNL表达示
email
url网址
date min max
conversion 类型转换校验器
visitor 校验复合属性
expression OGNL
5. 对Action的方法校验:ActionClassName-ActionName-validation.xml
验证的流程:
1. 获得参数,进行类型转换,封装到Action的属性中去。
2. 在类型转换期间如果发生异常,则把异常信息保存到ActionContext中,conversionError拦截器会把它添加到fieldErrors里,不管类型转换是否成功,都会进入下一步。
3. 系统通过反射调用action中的validateXxx方法。
4. 再调用action中的validate方法
5. 如果fieldErrors中有值,则进入input视图,否则执行action中的视图
分享到:
相关推荐
Struts2作为成熟的MVC框架,为开发者提供了高效、灵活的Web应用开发工具。理解并熟练运用其核心概念和特性,能有效提高开发效率和代码质量。然而,随着Spring Boot等现代框架的兴起,Struts2的使用逐渐减少,但其...
Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛...通过阅读个人总结笔记和文档,结合源代码的分析,你将能够深入理解Struts2在租房网站项目中的具体应用。
总结来说,Struts框架通过提供MVC架构,使得Web应用的开发更加规范,提高了代码的可读性和可维护性,降低了复杂性,促进了团队协作。理解和掌握Struts框架,对于Java Web开发者来说是非常重要的。
Struts2是一个开源的Web应用程序框架,基于MVC(Model-View-Controller)架构模式。它为Java Web开发者提供了一个强大的平台来构建高度可扩展的应用程序。Struts2的核心组件包括Action、Interceptor、Result等。 ##...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
总的来说,张龙圣思园的Struts2学习笔记是全面了解和掌握Struts2框架的宝贵资源,无论你是初学者还是有经验的开发者,都能从中受益。它会帮助你深入理解Struts2的工作原理,掌握其核心特性和最佳实践,从而提升你的...
从最初的Model1发展到Model2,再到现代的MVC框架,这一模式不断演变以适应更加复杂的应用需求。 - **Model1**:早期的MVC实现方式,主要在服务器端实现,将业务逻辑和显示逻辑混合在一起。 - **Model2**:随着技术...
1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,它将业务逻辑(Model)、用户界面(View)和控制器(Controller)分离,使得代码结构清晰,易于维护。 2. **Action类**:在Struts2中,Action类...
- **发展演变**: Struts2 结合了传统 Struts1 和 WebWork 两个经典框架的优点,是一个成熟的 MVC 框架。 - **核心功能**: - 允许使用 POJO (Plain Old Java Object) 作为 Action 类,使得 Action 更易于测试。 - ...
### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...
- **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序的开发过程。 - **Struts2的起源**:Struts2最初由WebWork和Struts1的核心...
Struts2是Java Web开发中一个非常重要的MVC框架,由Apache软件基金会维护。这个"struts2框架2016版资料day01"涵盖了Struts2的基础知识,包括框架的基本架构、核心概念和初步配置。传智播客作为知名的IT教育机构,其...
### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...
Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中广泛使用,提供了丰富的功能和灵活性。下面将详细讲解Struts2的一些核心知识点。 **一.Struts2核心文件:struts.xml配置** Struts2的...
Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace ...
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化的、灵活的、可扩展的方式来构建Web应用程序。本资源“北京圣思园Struts2 全套笔记 课件 详解”...
Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种...同时,对于进一步学习Spring MVC或其他MVC框架也会有所帮助,因为很多设计思想和技术原理都是相通的。
### Struts2框架知识点概述 ...以上是对Struts2框架的一些关键知识点的总结,这些内容对于理解和掌握Struts2框架具有重要意义。通过学习这些知识点,开发者可以更好地利用Struts2框架开发高效稳定的Web应用程序。
### 魔乐科技Struts2.x框架笔记详解 #### 一、框架开发基础与特性 **框架开发来源**:框架开发的核心在于反射机制的应用,它使得开发者能够以更为灵活的方式构建应用程序。在Struts2.x框架中,这一点体现得尤为...