`
zhouxiaowen
  • 浏览: 13636 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Struts2自学摘要

阅读更多
--------------------------------------自定义拦截器-------------------------

业务需求:
如果用户登录后可以访问action中的所有方法
  user.jsp{
    //设置用户为登录状态
  }
如果用户没有登录不允许访问action中的方法,并且提示"你没有权限执行该操作"
-----------------------------------------------------------------------------
定义拦截器类,实现com.opensymphony.xwork2.interceptor.Interceptor接口

cn.acc.interceptor.PermissionInterceptor

struts.xml:
<interceptor-stack name="permissionStack">
    <interceptor-ref name="defaultStack"/>   //系统的拦截器放在最前面
    <interceptor-ref name="permission"/>
</interceptor-stack>
...
<action name="list_*" class="cn.accp.action.InterceptorAction" method="{1}">   
    <interceptor-ref name="permissionStack" /> //调用拦截器栈
</action>


系统的拦截器一定要用上,
如果希望某个包里面的所有action都用到权限拦截器,

写上默认拦截器:<default-interceptor-ref name="permissionStack" />

注意:每个包只能指定一个默认拦截器,另外,一旦我们为该包中的某个action显示指定了某个拦截器,则默认拦截器不会起作用。

如果想有默认拦截器,又想显示指定某个拦截器,那就照下面那样做:

<action name="list_*" class="cn.accp.action.InterceptorAction" method="{1}">   
    <interceptor-ref name="permissionStack" /> //整个包中的默认拦截器
    <interceptor-ref name="xxxx" />
</action>
-----------------------------------------------输入校验----------------------------------------------
-----------------------------------------------------------------------------------------------------
对于输入校验struts2提供了两种实现方法:

1.采用手工编写代码实现。
2.基于XML配置方式实现。

通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。
当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用
addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将
请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。

-----------------------------------------------------------------------------------------------------
对action指定方法进行校验
只要把validate()方法改写成 validateXxx(),Xxx为要校验的方法,注意首字母大写。
其他内容不变。

----------------------------------输入校验的流程--------------------------------------
--------------------------------------------------------------------------------------

1.类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。

2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到
ActionContext,conversionError拦截器将异常信息添加到fieldErrors里。不管
类型转换是否出现异常,都会进入第3步。

3.系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。

4.再调用action中的validate()方法。

5.经过上面4步,如果系统中的fieldErrors存在错误信息(即存放错误信息的集
合的size大于0),系统自动将请求转发至名称为input的视图。如果系统中的
fieldErrors没有任何错误信息,系统将执行action中的处理方法。
---------------------------------------------------------------------------------------
跳到input视图有两种情况:

1、是验证失败
2、类型转换失败

validate(){

}

如果validate()方法中没有写一句代码,还是会跑到input视图,说明是类型转换出错了。

比如有个Date类型的属性,而页面输入错误格式,它就会跳到input视图。不会执行成功。

----------------------------------基于XML配置方法实现对action的方法进行校验--------------------------------------
-----------------------------------------------------------------------------------------------------------------

提供校验文件(校验文件模板可以从struts2的例子中copy出来。)
PersonAction-validation.xml

<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">

(全部校验器能在default.xml中找到)
requiredstring:必须填的字符串


-------------------------------------用XML对指定方法进行验证-----------------------------------------------------
-----------------------------------------------------------------------------------------------------------------

1、ActionClassName-validation.xml  //对整个action进行验证
2、ActionClassName-ActionName-validation.xml   //对action中的某个方法进行验证,如:PersonAction-manager_add-validation.xml
如果为某个Action同时指定了上面两个文件
系统将自动汇总,执行两个的校验。

假如:
1文件中为某一属性设置成1-5的长度,而2文件中也为同一个属性设置成1-10的长度,那么系统默认会执行后面文件的验证。

当action继承了另一个action,父类action的校验文件会先被搜索到。

应用于action的是父类和子类的总和。

系统是先搜索到BaseAction-validation.xml,BaseAction-user-validation.xml,
接着搜索子类的校验文件UserAction-validation.xml,UserAction-user-validation.xml


---------------------------------------------国际化-----------------------------------------------
全局范围:
itcast_zh_CN.properties

itcast_en_US.properties

包范围:
在java的包下放置package_language_country.properties资源文件。package为固定写法,
处于该包及子包下的action都可以访问该资源。当查找指定key的消息是,系统会先从package
资源文件查找,当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的
资源文件(全局范围)中寻找。

Action范围:
ActionClassName_language_country.properties资源文件。

要在页面直接指定某个资源文件,可以用<s:i18n name="cn/acc/action/PersonManageAction"></s:i18n>标签

----------------------------------------------------------OGNL表达式------------------------------------------------
OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。
Struts2框架使用OGNL作为默认的表达式语言。

相对EL表达式,它提供了平时我们需要的一些功能,如:
1.支持对象方法调用,如xxx.sayHello();
2.支持类静态方法调用 和 常量值访问,表达式的格式: @[类全名(包括包路径)]@[方法名|值名],
例如:@java.lang.String@format('foo%s','bar')或@cn.itcast.Constant@APP_NAME;
3.操作集合对象。

Ognl有一个上下文(Context)概念,其实上下文就是一个MAP结构,它实现
了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext
分享到:
评论

相关推荐

    struts2自学文档

    ### Struts2自学文档知识点详解 #### 一、Struts2简介 Struts2是一个用于构建企业级Java Web应用程序的开源框架。它基于MVC(Model-View-Controller)架构模式,提供了一种灵活的方式来组织代码,使得业务逻辑、...

    struts2 自学材料

    综上所述,"struts2 自学材料"这个压缩包包含的练习和资源,覆盖了Struts2的主要特性和实践应用,是学习和掌握Struts2框架的宝贵资料。通过深入研究和实践这些例子,开发者可以更好地理解如何在实际项目中运用Struts...

    Struts 2 自学入门教程

    这个"Struts 2自学入门教程"涵盖了Struts 2的核心概念和技术,是初学者了解和掌握Struts 2框架的绝佳资源。 首先,我们要理解Struts 2的标志(Tag)。这些标签是用于构建用户界面的JSP标签库,它们简化了在页面上...

    Struts2完全自学手册(16-19)

    本书全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对Ajax的支持、Struts 2...

    struts2自学笔记

    Struts2自学笔记 Struts2是Java Web开发中的一款广泛应用的MVC框架,它基于Model-View-Controller设计模式,旨在简化企业级应用的开发流程。本自学笔记将深入探讨Struts2的核心概念、主要功能及其实现原理。 1. **...

    完美版(适合自学)struts2

    Struts2是一个强大的Java web应用程序框架,它是Struts1的后续产品,融合了WebWork的核心技术,提供了全新的架构。在Struts2中,基于拦截器的机制被...对于自学Struts2的人来说,理解这些核心概念和配置方式至关重要。

    Struts2自学笔记——Struts2的文件上传

    这篇自学笔记将深入探讨Struts2的文件上传机制。 1. **文件上传原理** 文件上传是基于HTTP协议的POST请求实现的。在HTML表单中,通过`&lt;input type="file" /&gt;`元素让用户选择本地文件。当用户提交表单时,浏览器会...

    struts2视频自学总结

    ### Struts2框架深入解析与自学总结 #### Struts2框架简介 Struts2是Apache组织维护的一个开源框架,它是Struts1的升级版本,基于MVC(Model-View-Controller)架构模式,用于简化Java Web应用的开发过程。Struts2...

    Struts2漏洞检查工具Struts2.2019.V2.3

    Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...

    Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明

    这篇博客"Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明"将引导我们深入了解如何使用这个至关重要的文件。 首先,`struts.xml`位于项目的`src/main/resources`或`WEB-INF/classes`目录下,它是Spring框架与...

    struts2jar包

    Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    struts2实战案例(项目+建库语句)

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、结构清晰的MVC(模型-视图-控制器)架构的应用程序。本实战案例旨在帮助开发者深入理解并掌握Struts2的核心概念和实践技巧。案例包含了一个完整的...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    Struts 2 自学之路: 1 准备工作及helloworld

    &lt;artifactId&gt;struts2-core &lt;version&gt;2.5.24 ``` 确保其他必要的依赖(如Servlet API)也已添加。 ### 4. 编写Hello, World!程序 1. 创建一个Action类,如`HelloWorldAction.java`,实现`...

    struts2项目开发

    Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

Global site tag (gtag.js) - Google Analytics