`
jianwwpro
  • 浏览: 29589 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MVC框架之Struts2总结笔记

    博客分类:
  • Java
阅读更多
一、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学习笔记总结

    Struts2作为成熟的MVC框架,为开发者提供了高效、灵活的Web应用开发工具。理解并熟练运用其核心概念和特性,能有效提高开发效率和代码质量。然而,随着Spring Boot等现代框架的兴起,Struts2的使用逐渐减少,但其...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    MVC框架(Struts2)开发租房网站([培训]doc和源代码).rar

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛...通过阅读个人总结笔记和文档,结合源代码的分析,你将能够深入理解Struts2在租房网站项目中的具体应用。

    MVC框架struts学习笔记

    总结来说,Struts框架通过提供MVC架构,使得Web应用的开发更加规范,提高了代码的可读性和可维护性,降低了复杂性,促进了团队协作。理解和掌握Struts框架,对于Java Web开发者来说是非常重要的。

    Struts2框架笔记

    Struts2是一个开源的Web应用程序框架,基于MVC(Model-View-Controller)架构模式。它为Java Web开发者提供了一个强大的平台来构建高度可扩展的应用程序。Struts2的核心组件包括Action、Interceptor、Result等。 ##...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    张龙圣思园struts2学习笔记word

    总的来说,张龙圣思园的Struts2学习笔记是全面了解和掌握Struts2框架的宝贵资源,无论你是初学者还是有经验的开发者,都能从中受益。它会帮助你深入理解Struts2的工作原理,掌握其核心特性和最佳实践,从而提升你的...

    Struts2学习笔记

    从最初的Model1发展到Model2,再到现代的MVC框架,这一模式不断演变以适应更加复杂的应用需求。 - **Model1**:早期的MVC实现方式,主要在服务器端实现,将业务逻辑和显示逻辑混合在一起。 - **Model2**:随着技术...

    struts2四天的学习笔记

    1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,它将业务逻辑(Model)、用户界面(View)和控制器(Controller)分离,使得代码结构清晰,易于维护。 2. **Action类**:在Struts2中,Action类...

    struts2综合笔记

    - **发展演变**: Struts2 结合了传统 Struts1 和 WebWork 两个经典框架的优点,是一个成熟的 MVC 框架。 - **核心功能**: - 允许使用 POJO (Plain Old Java Object) 作为 Action 类,使得 Action 更易于测试。 - ...

    struts2框架学习笔记整理

    ### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...

    struts2学习笔记.doc

    - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序的开发过程。 - **Struts2的起源**:Struts2最初由WebWork和Struts1的核心...

    struts2框架2016版资料day01

    Struts2是Java Web开发中一个非常重要的MVC框架,由Apache软件基金会维护。这个"struts2框架2016版资料day01"涵盖了Struts2的基础知识,包括框架的基本架构、核心概念和初步配置。传智播客作为知名的IT教育机构,其...

    struts2学习笔记黑马程序员

    ### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...

    struts2学习笔记

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中广泛使用,提供了丰富的功能和灵活性。下面将详细讲解Struts2的一些核心知识点。 **一.Struts2核心文件:struts.xml配置** Struts2的...

    struts2 学习笔记 实战

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace ...

    北京圣思园Struts2 全套笔记 课件 详解

    Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化的、灵活的、可扩展的方式来构建Web应用程序。本资源“北京圣思园Struts2 全套笔记 课件 详解”...

    黑马程序员Struts2笔记

    Struts2是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种...同时,对于进一步学习Spring MVC或其他MVC框架也会有所帮助,因为很多设计思想和技术原理都是相通的。

    框架笔记struts2

    ### Struts2框架知识点概述 ...以上是对Struts2框架的一些关键知识点的总结,这些内容对于理解和掌握Struts2框架具有重要意义。通过学习这些知识点,开发者可以更好地利用Struts2框架开发高效稳定的Web应用程序。

    魔乐科技Struts2.x框架笔记

    ### 魔乐科技Struts2.x框架笔记详解 #### 一、框架开发基础与特性 **框架开发来源**:框架开发的核心在于反射机制的应用,它使得开发者能够以更为灵活的方式构建应用程序。在Struts2.x框架中,这一点体现得尤为...

Global site tag (gtag.js) - Google Analytics