- 浏览: 1210817 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (434)
- js (20)
- struts2 (77)
- spring (11)
- hibernate (17)
- ssh整合 (9)
- 程序例子 (4)
- 正则表达式 (8)
- JSP (20)
- IDE (15)
- 数据库 (10)
- 工作经验技巧感悟 (21)
- 程序员的幽默 (4)
- windows设置 (4)
- 名词解释 (4)
- 技术入门 (4)
- jFreeChart (16)
- OGNL (5)
- java基础 (46)
- dwr (4)
- portal (1)
- 示例用到的附件 (0)
- 优秀程序员45个习惯 (1)
- webService (1)
- shell (3)
- ibatis (3)
- 开发工具 (1)
- OS (3)
- xmlbean (2)
- design_pattern (0)
- error (1)
- testng (2)
- python (18)
- hadoop (21)
- mapreduce (9)
- Hive (0)
- HBase (0)
- ubuntu (22)
- 多线程 (7)
- 自我改进 (6)
- 设计模式 (1)
- ssh (2)
- ant (4)
- guake (2)
- 云计算 (9)
- hdfs (3)
- 大数据 (1)
- 电信业务 (1)
- maven (2)
- svn (5)
- UML (1)
- 待处理问题 (2)
- log4j (1)
- css (1)
- LevelDb (0)
- thrift (6)
- 辅助工具 (3)
- 算法 (1)
- tornado (0)
- twisted (1)
- jvm (0)
- 图书 (1)
- 其他 (1)
- oracle (2)
- mvn (1)
- 私人信息 (0)
- nio (1)
- zookeeper (1)
- JavaIO (3)
- mongodb (1)
- java-高级 (6)
- spring-深入 (1)
- tomcat (1)
- quartz (1)
- 面试题 (1)
- redis (3)
- EJBCA (0)
- spring-3.0 (1)
- memcache (3)
- 性能检测 (1)
- android (0)
- 开源项目 (1)
- 将博客搬至CSDN (0)
- 架构之路 (1)
最新评论
-
pjwqq:
“子类对象”都拥有了“父类对象的一个实例的引用”我晕,应该是“ ...
java继承--父类属性的存放位置 -
gwgyk:
关于楼主最后的问题,我想可能是这样:InputFormat默认 ...
eclipse 运行hadoop wordcount -
fanjf:
上述7点基本具备,可惜现在因为项目需要,做管理方面工作!
如何判断自己是否具有成为一名优秀程序员的潜质 -
摸爬滚打NO1:
链接已经失效
Eclipse添加JSEclipse 插件(js插件) -
younglibin:
看了以上7条, 自己 也不知道是否能够对上, 感觉没一点都有那 ...
如何判断自己是否具有成为一名优秀程序员的潜质
让我们再来回顾一下之前我们曾经用过的一张Action LifeCycle的图:
图中,我们可以发现,Struts2的Interceptor一层一层,把Action包裹在最里面。这样的结构,大概有以下一些特点:
1. 整个结构就如同一个堆栈,除了Action以外,堆栈中的其他元素是Interceptor
2. Action位于堆栈的底部。由于堆栈"先进后出"的特性,如果我们试图把Action拿出来执行,我们必须首先把位于Action上端的Interceptor拿出来执行。这样,整个执行就形成了一个递归调用
3. 每个位于堆栈中的Interceptor,除了需要完成它自身的逻辑,还需要完成一个特殊的执行职责。这个执行职责有3种选择:
1) 中止整个执行,直接返回一个字符串作为resultCode
2) 通过递归调用负责调用堆栈中下一个Interceptor的执行
3) 如果在堆栈内已经不存在任何的Interceptor,调用Action
Struts2的拦截器结构的设计,实际上是一个典型的责任链模式的应用。首先将整个执行划分成若干相同类型的元素,每个元素具备不同的逻辑责任,并将他们纳入到一个链式的数据结构中(我们可以把堆栈结构也看作是一个递归的链式结构),而每个元素又有责任负责链式结构中下一个元素的执行调用。
这样的设计,从代码重构的角度来看,实际上是将一个复杂的系统,分而治之,从而使得每个部分的逻辑能够高度重用并具备高度可扩展性。所以,Interceptor结构实在是Struts2/Xwork设计中的精华之笔。
发表评论
-
struts2 学习资料
2013-10-08 12:23 953struts2.0 系列文章 http://www.blo ... -
javaweb项目RuntimeException不能默认打印到控制台
2012-11-26 15:46 3047前几天搭建了一个框架: 配置 struts2 spring2 ... -
ajax和js实现下拉列表级联的两种方式(ajax和dwr)
2010-01-19 21:54 5831今天遇到一个问题: ... -
jsp页面用s:datetimepicker不显示时间下拉框(提示dojo未定义错误)
2010-01-15 09:49 5799在写时一定要加上:form 标签外加上<s:head t ... -
struts2中struts.xml 文件详解(中文版翻译)入门篇
2009-12-21 11:15 2125<!DOCTYPE struts PUBLIC &quo ... -
Struts2中的(Interceptor)拦截器的执行顺序
2009-12-10 15:00 5947Interceptor的接口定义没 ... -
struts2 中Action的生命周期
2009-12-10 14:40 1826接下来,我们再来看看Struts2中的Action的生命周期: ... -
Struts2的Action并不带有任何Web容器相关的对象,Action又是如何工作在Web容器中
2009-12-10 14:39 2129虽然Struts2的Action只是一 ... -
Struts2中的Action 定义
2009-12-10 14:38 1349多数的MVC框架中的Control层,都是一个Java对象。按 ... -
struts2中Action的五大元素
2009-12-10 14:23 2636在大概了解了Struts2的Action后,我们来重点研究一下 ... -
jsp 向Action传值(不提交committ 也能传值)
2009-12-05 09:45 3820今天发现 当药提交表单是 页面的 字段 在Action接收不 ... -
struts2 Tooltip和radio 还有关系吗?
2009-10-12 17:19 1780今天遇到一个奇怪的问题,拿来大家看看! 我用stru ... -
jsp向action传值的几个错误一点
2009-09-23 08:36 16221. 在jsp页面首次请求时正确!通过查询可以正确显示数 ... -
struts2 标签展示 map
2009-09-21 17:59 2264从数据库中查找出来的 ... -
struts2 标签展示 map
2009-09-21 17:48 2705在jsp页面用iterator 迭代时,如果 list中放的是 ... -
struts.properties 配置解析
2009-09-11 10:45 2051### struts.properties这是一 ... -
Struts1和Struts2的区别和对比
2009-09-11 10:05 1584? Struts1要求Action类继承 ... -
el表达式函数
2009-09-11 09:48 1277<%@ taglib prefix="fn&q ... -
struts2 手动校验原理图解
2009-09-02 10:37 17401、Struts 2的类型转换器负责对客户端的字 ... -
struts2 校验器——正则表达式校验器(regex)(内建校验器)
2009-09-02 10:19 5118正则表达式校验器的名称:regex,他检查被校验字段是否匹配一 ...
相关推荐
- 全局转向配置:在拦截器内部,通过`returnAction.LOGIN`指令触发转向流程,查找`struts.xml`中配置的全局转向配置,以实现统一的登录失败处理策略。 #### 结论 通过Struts2的拦截器机制,可以高效地实现登录验证...
在Struts2中,Action类扮演控制器角色,处理用户请求;结果映射决定哪个JSP页面作为视图展示;模型则通常由业务服务和数据访问对象组成。 2. **Action类**:Action类是Struts2的核心组件,负责接收请求、处理业务...
在Struts1中,拦截器(Interceptor)是实现业务逻辑与表现层解耦的重要组件,它允许在动作执行前后插入额外的功能,比如日志记录、事务管理、权限控制等。 标题中提到的"struts1实现拦截所用的jar包"主要涉及以下几...
3. **掌握Struts 2的基本结构**:从Action、拦截器、配置文件等方面入手,逐步深入框架内部。 4. **实践项目开发**:通过实际的项目开发来加深对Struts 2的理解,同时也能积累宝贵的实战经验。 5. **学习最佳实践**...
- **Interceptor**:在`package`元素内部,可以定义拦截器或引用拦截器堆栈,拦截器是Struts2中非常重要的组件,用于在Action执行前后进行一系列的前置和后置处理操作,比如登录验证、数据校验等。 - **Result ...
通过对Struts2源码的深入研究,开发者可以更好地理解其内部工作原理,从而优化应用性能,解决实际问题,以及设计出更符合框架精神的代码结构。同时,这也为面试中展示自己的技术深度和问题解决能力提供了有力的支持...
3. **第三章:struts2配置详解**:详细解析XML配置文件(struts.xml)的结构和用法,包括Action配置、结果映射、拦截器栈配置等,同时也会涉及动态方法调用和注解配置。 4. **第四章:struts2中的OGNL**:OGNL...
拦截器是Struts 2中非常重要的特性,它们在Action执行前后执行,可以实现如日志记录、事务管理、权限验证等功能。通过自定义拦截器,开发者可以扩展框架功能。 3. **配置文件** `struts-default.xml`是Struts 2的...
3. **Interceptor(拦截器)**:拦截器是Struts2中的一个重要特性,它可以拦截Action的执行流程,实现如日志、权限验证、事务管理等通用功能。 4. **Result**:Action执行后,会返回一个Result,Result负责将控制权...
5. **值栈(Value Stack)**:值栈是Struts2中的数据存储结构,它管理Action的属性值,可以方便地将数据传递给视图层。 6. **结果类型(Result Types)**:Struts2支持多种结果类型,如JSP、FreeMarker、 Velocity...
- **包结构**:Struts2对WebWork2的包结构进行了重新组织,将其纳入到Struts的命名空间下,这不仅仅是简单的名称更改,更是为了统一框架内部结构,便于开发者理解和使用。 - **社区与生态**:Struts2凭借其更广泛的...
在Struts2中,异常处理是一项重要的功能,它确保了应用程序的健壮性和用户友好的错误反馈。这篇博客文章“Struts2中异常处理(demo)”可能详细介绍了如何在Struts2框架下优雅地处理程序中的异常。 在Java Web开发...
- 在Struts2中,Action类是处理用户请求的核心,每个Action对应一个特定的业务操作。 - Action类需要实现`com.opensymphony.xwork2.ActionSupport`接口,通过重写`execute()`方法来定义业务逻辑。 4. **配置文件*...
WebWork框架则被认为是设计更为先进的框架,引入了拦截器机制和OGNL(Object-Graph Navigation Language,对象图导航语言)表达式语言。 Struts2的出现是为了结合Struts1和WebWork的技术优势,形成了一个全新的框架...
- Interceptors(拦截器):介绍Struts2拦截器的工作原理和自定义拦截器的编写。 - Actions和Results:Action类的编写,Result的配置及使用,以及如何将Action和Result关联。 - 配置文件struts.xml:详解配置文件的...
Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...
6. 在Struts2的拦截器链中添加自定义拦截器,实现特定功能,如登录验证。 7. 测试应用,确保请求能正确路由到Action,FreeMarker模板能正确渲染数据。 在实际开发中,这种组合提供了良好的分离关注点,让开发者可以...
2. **Action类**:在Struts2中,Action类是控制器的主要实现,负责处理用户请求并调用模型层进行业务处理。每个Action类对应一个URL,用于执行特定业务操作。 3. **配置文件**:Struts2的配置文件通常为struts.xml...
在深入解析Struts2的章节中,你可能会了解到如何创建自定义拦截器以及如何将它们链式组合,以实现复杂的业务逻辑。 其次,Struts2的Action是业务逻辑的主要载体。每个Action对应一个特定的用户请求,并负责处理该...
2. **拦截器链**:在Struts2中,请求会经过一系列预定义和自定义的拦截器,这些拦截器按照配置的顺序执行,提供了如验证、日志、事务管理等功能。拦截器是Struts2灵活性的关键,允许开发者插入新的行为而无需修改...