研磨Struts2
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 Struts2是一个开源的Web应用框架,继承了Struts1的优点,并且在此基础上进行了很多改进,使得它更加灵活和强大。Struts2采用MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理与界面展示分离,便于开发和维护。 #### 1.2 HelloWorld示例解析 - **项目搭建**:介绍如何创建一个基本的Struts2项目,包括引入必要的jar包、配置web.xml和struts.xml等。 - **Action类**:Action是Struts2的核心组件之一,负责处理用户的请求。本节将详细讲解Action类的设计原则和实现方法。 - **配置文件**:struts.xml用于配置Action的映射关系以及其他一些设置。本节将详细介绍如何编写有效的配置文件。 - **结果页面**:通常使用JSP或FreeMarker作为视图层的技术,本节将通过一个简单的例子来展示如何在Action处理完业务逻辑后跳转到结果页面。 ### 知识点二:Struts2的架构 #### 2.1 架构概述 Struts2的架构设计非常清晰,主要由以下几个部分组成: - **拦截器(Interceptor)**:拦截器用于处理HTTP请求,可以对请求进行预处理或后处理。 - **Action**:处理业务逻辑的核心组件。 - **配置文件(struts.xml)**:定义了应用程序的行为,包括Action映射、拦截器配置等。 - **结果(Result)**:定义了Action执行完毕后的结果,如重定向、转发等。 - **值栈(ValueStack)**:用来存储Action、FormBean等对象,支持页面间的数据共享。 #### 2.2 架构优势 - **灵活性**:Struts2提供了丰富的插件机制,可以根据实际需求选择合适的插件来扩展框架的功能。 - **易用性**:内置了很多实用的功能,如文件上传、输入校验等,简化了开发工作。 - **可维护性**:由于采用了清晰的分层结构,使得代码易于理解和维护。 ### 知识点三:Action详解 #### 3.1 Action的作用 Action是Struts2中最核心的部分,它的主要职责是处理用户的请求并返回相应的结果。Action可以被看作是模型层的一部分,负责与数据库交互或者调用其他服务。 #### 3.2 Action生命周期 - **初始化**:当用户发起请求时,Struts2框架会创建一个新的Action实例。 - **执行**:调用Action中的execute()方法,执行具体的业务逻辑。 - **销毁**:Action执行完毕后,会被框架销毁。 #### 3.3 自定义Action - **实现接口**:可以通过实现Action接口来创建自定义的Action。 - **注解配置**:也可以使用注解的方式来进行配置,这种方式更加简洁。 - **异常处理**:自定义Action时还需要考虑如何处理可能发生的异常情况。 ### 知识点四:Result详解 #### 4.1 Result的作用 Result是Struts2中定义Action执行结果的组件,它决定了Action执行完毕后页面如何跳转。 #### 4.2 Result类型 Struts2提供了多种类型的Result,如dispatcher、redirect、chain等,每种类型都有其特定的应用场景。 - **dispatcher**:将请求转发到指定的JSP页面。 - **redirect**:发送HTTP重定向命令给客户端,使其重新发送一个请求到指定URL。 - **chain**:调用另一个Action。 #### 4.3 自定义Result 除了使用内置的Result类型外,还可以根据需要自定义Result。自定义Result需要实现Result接口,并在struts.xml中进行配置。 ### 知识点五:Interceptor框架 #### 5.1 Interceptor框架介绍 Interceptor框架是Struts2中的一个重要组成部分,它类似于AOP(面向切面编程),可以在Action执行前后进行拦截操作。 #### 5.2 Interceptor的使用 - **配置**:在struts.xml中配置需要使用的Interceptor以及它们的执行顺序。 - **实现**:通过实现Interceptor接口来创建自定义的Interceptor。 #### 5.3 Interceptor的生命周期 Interceptor的生命周期包括初始化、预处理、后处理和销毁四个阶段。 ### 知识点六:ActionContext和ServletActionContext #### 6.1 ActionContext ActionContext是Struts2中管理请求范围数据的对象,它包含了当前请求的所有信息。 #### 6.2 ServletActionContext ServletActionContext提供了访问Servlet API的方法,例如获取HttpServletRequest和HttpServletResponse对象。 ### 知识点七:值栈 #### 7.1 值栈的作用 值栈(ValueStack)是Struts2中用于存储和传递数据的重要工具,它可以方便地在Action和视图之间共享数据。 #### 7.2 值栈的使用 - **获取**:通过ActionContext来获取当前的值栈。 - **存储和读取数据**:可以将Action、FormBean等对象存入值栈,并在视图中读取这些数据。 ### 知识点八:OGNL表达式 #### 8.1 OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。 #### 8.2 OGNL的应用 - **属性访问**:可以通过OGNL表达式来访问对象的属性。 - **条件判断**:利用OGNL可以方便地进行条件判断。 - **循环遍历**:使用OGNL表达式可以遍历集合中的元素。 ### 知识点九:标签库 #### 9.1 标签库的作用 Struts2提供了一系列的标签库,这些标签可以帮助开发者更方便地操作页面上的数据。 #### 9.2 标签库的使用 - **数据绑定**:使用<s:property>标签来显示对象的属性值。 - **表单控件**:<s:textfield>、<s:password>等标签用于创建表单元素。 - **循环遍历**:<s:iterator>标签用于遍历集合。 ### 知识点十:类型转换器 #### 10.1 类型转换器的作用 类型转换器用于将表单提交的数据转换为Action所需的类型,以避免类型不匹配的问题。 #### 10.2 类型转换器的实现 - **默认转换器**:Struts2内置了一些常用的类型转换器。 - **自定义转换器**:如果内置转换器无法满足需求,可以通过实现TypeConverter接口来自定义转换器。 ### 知识点十一:国际化 #### 11.1 国际化的意义 为了让应用程序能够适应不同的语言环境,Struts2提供了国际化支持。 #### 11.2 国际化实现 - **资源文件**:使用.properties文件来存放不同语言的文本。 - **切换语言**:可以通过设置locale参数来切换语言。 ### 知识点十二:验证器框架 #### 12.1 验证器框架的作用 验证器框架用于检查用户输入的数据是否符合预期的要求,以确保数据的有效性和安全性。 #### 12.2 验证器的使用 - **字段级验证**:针对单个字段进行验证。 - **Action级验证**:对整个Action进行验证。 - **自定义验证器**:可以通过实现Validator接口来创建自定义的验证规则。 ### 知识点十三:防止重复提交 #### 13.1 问题背景 在Web应用中,由于网络延迟等原因,用户可能会不小心多次点击提交按钮,导致数据重复提交。 #### 13.2 解决方案 - **Token机制**:每次提交前生成一个唯一的Token,并将其存入session,在提交时进行验证。 - **服务器端控制**:记录每个请求的状态,对于已经处理过的请求不再处理。 ### 知识点十四:整合jfreechart #### 14.1 jfreechart简介 jfreechart是一个Java图表库,可以用来绘制各种图表。 #### 14.2 整合流程 - **引入依赖**:将jfreechart的相关jar包加入到项目的lib目录中。 - **创建图表**:使用jfreechart提供的API来创建图表。 - **渲染图表**:通过Struts2的标签库将图表嵌入到页面中。 ### 知识点十五:零配置 #### 15.1 零配置的概念 零配置意味着在某些情况下可以不编写struts.xml配置文件,而是通过注解或者其他方式来配置Action。 #### 15.2 零配置的实现 - **注解配置**:通过在Action类上添加注解来代替配置文件。 - **自动扫描**:Struts2可以通过扫描指定的包来自动发现Action类。 ### 知识点十六:使用Ajax #### 16.1 Ajax技术 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下更新部分网页的技术。 #### 16.2 在Struts2中使用Ajax - **JSON数据格式**:通过Action返回JSON格式的数据。 - **异步请求**:使用jQuery等JavaScript库来发送异步请求。 以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
- kindlessfriend2014-07-25谢谢奉献!
- 粉丝: 0
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件