1. Struts is integrated into container in web.xml as an filter. It is different from Spring, which is an Listener.
<?xml version="1.0" encoding="UTF-8"> ... <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-patter> </filter-mapping> ... </xml>
2. Struts uses JavaBean to carry the data from JSP to Action and vice versa. The JavaBean is defined as properties and its set and get methods.
After transferred with the request, the data from JSP is stored in ValueStack and in the action (Struts initializes one action object for each request. In contrast, the container initializes only one servlet to serve all the requests).
3. When we do not define actions in struts.xml, we want instead, use annotation in java to do so. By doning this, there is no below definition in struts.xml
<action name="Register" class="manning.Register"> <result>/RegistrationSuccess.jsp</result> <result name="input">/Registration.jsp</result> </action>
as we lost the action -> class mapping, we need to specify the default location to find the action classes, so we tell struts where to find the annotation:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>manning</param-value> </init-param> </filter>
The framework looks for classes either implement Action interface or named XXXAction for actions.
5. struts-default package provides lots of useful intercepter and etc. Normally, our action package should be inheriting it in struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="Menu"> <result>/menu/Menu.jsp</result> </action> </package> <include file="manning/chapterTwo/chapterTwo.xml"/> <include file="manning/chapterThree/chapterThree.xml"/> . . . <include file="manning/chapterEight/chapterEight.xml"/> </struts>
6. Action 通过 extend ActionSupport来继承default execute()实现. ActionSupport相当于java里的wrapper类. 同时ActionSupport还提供很多有用的方法, 比如配合ValidationInterceptor的addFieldError()方法.
7. ValidationIntercepter如果发现有error, 将redirect the workflow到action的"input" result.
Filter VS Action
- Filter只能执行定义在filterclass的logic. 而Intercepter能够执行action class里面的方法. e.g. the public void validate() 方法.
8. Struts implements i18N with ActionSupport's TextProvider.
9. Model driver could be used to transfer obejct between Page and Actions.
10. ParameterIntercepter passes params from Page to action & ValueStack. (what is relationship between parameterintercepter and OGNL?)
11. FileUploadIntercepter gets run before ParamIntercepter. It converts File into Parameters:
<h4>Complete and submit the form to create your own portfolio.</h4> <s:form action="ImageUpload" method="post" enctype="multipart/form-data"> <s:file name="pic" label="Picture"/> <s:submit/> </s:form>
? Where is the type of file
? what is the path of the "pic" file.
12. OGNL = expression (in JSP) + data type converter(struts)
13. steps to define customized OGNL converter
1) write a class to extend StrutsTypeConverter's two abstract methods:
public abstract Object convertFromString(Map context, String[] values, Class toClass); public abstract String convertToString(Map context, Object o);
2) connect the field name in <s:textfield name="XXX", label="..."/> to class in .property file: XXX=ConverterClassName
to be continued...
struts 2 interview questions: http://www.journaldev.com/2354/struts2-interview-questions-and-answers#custom-interceptor
相关推荐
《Struts 2实战 Struts2 in Action》这本书不仅介绍了Struts 2的基本概念和技术细节,更重要的是,它通过丰富的实战案例帮助读者深入理解框架的工作原理,并掌握了如何高效地利用Struts 2来解决实际问题。...
**Struts2实战——《Struts2 In Action中文版》** 《Struts2 In Action》是一本专为Java开发者设计的实战指南,旨在深入解析Struts2框架的使用与实践。Struts2作为一款强大的MVC(Model-View-Controller)框架,极...
"Struts2 in Action" 是一本深入探讨Struts2框架的专业书籍,旨在帮助开发者掌握这一框架的核心概念和实践技巧。这本书的中文版不仅提供了理论知识,还附带有配套的源代码,方便读者进行实践操作,加深理解。 ...
《Struts 2实战 Struts 2 in action 的中文版》这本书系统地介绍了Struts 2框架的基础知识、核心组件、工作原理以及实际开发技巧。对于希望深入学习和掌握Struts 2框架的开发者来说,这本书是一本不可多得的经典参考...
通过阅读《Struts2 in action》这本书,你可以深入学习Struts2的各个方面,包括最佳实践、高级特性和案例分析,从而在实际项目中更加熟练地运用这个框架。无论你是初学者还是经验丰富的开发者,这本书都将为你的Java...
struts2 in action 源码
当用户通过浏览器发送请求时,Struts2会将请求转发给相应的Action处理。 - **执行流程**: - 用户发起HTTP请求。 - 请求被Struts2的前端控制器(FilterDispatcher)拦截。 - FilterDispatcher根据配置找到对应的...
总的来说,《Struts2 in Action》中文版是Java Web开发者必备的参考书籍之一,它不仅提供了全面的技术解析,还强调了实际开发中的问题解决和性能优化。通过学习这本书,开发者可以提升自己在Struts2框架上的专业技能...
通过阅读README,你可以了解如何配置开发环境,如何编译和部署`Struts2InAction.war`这个Web应用。 `Struts2InAction.war`是一个预打包的Web应用程序,它是按照Maven或者Ant等构建工具的标准结构组织的。这个WAR...
《Struts2 in Action》中文版是一本深入探讨Struts2框架的专业书籍,该书不仅提供了详尽的理论知识,还包含了大量的实战案例,对于希望掌握Struts2框架的开发者来说,是一本不可或缺的参考书。 ### Struts2框架概览...
学习Struts2第三天笔记
《Struts2 in Action》是一本深入介绍该框架的专业书籍,无论是中文版还是英文版,都为读者提供了全面理解和实践Struts2的知识。 中文版的《Struts2 in Action》为中文阅读者提供了方便,使得理解复杂的框架概念变...
struts2 in actionstruts2 in actionstruts2 in actionstruts2 in actionstruts2 in actionstruts2 in actionstruts2 in action
学习Struts2第四天笔记
- **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...
本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与ValueStack、Tags以及项目中的关键实践。 **一、Action** Action是Struts2中处理业务逻辑的核心组件,它是实现了`...
### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...
张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...
2. **Action类**:在Struts2中,Action类是处理用户请求的核心组件。它实现了`com.opensymphony.xwork2.Action`接口,负责接收请求,执行业务逻辑,并返回结果。 3. **配置文件**:Struts2的配置主要在两个文件中...