Struts2的总结和Strut2集成Spring
### Struts2与Spring的集成详解 #### Struts2框架概览 Struts2是Apache组织下的开源项目,它是基于MVC模式的Web应用框架,主要用于构建企业级Java Web应用程序。Struts2提供了丰富的标签库,支持AJAX,且与各种第三方框架(如Spring和Hibernate)有良好的兼容性。它通过拦截器机制处理请求,使得业务逻辑和Web层分离,易于维护和扩展。 #### Struts2中实现动态Action 动态Action允许开发者根据传入的参数执行不同的方法,这提高了代码的灵活性和重用性。例如,可以设计一个`UserAction`类,通过传递参数`method`来调用不同的方法,如`list()`, `edit()`, `delete()`等。 #### Struts2中Action自定义方法 除了传统的execute方法,Struts2允许在Action中定义多个方法,每个方法可以有自己的输入参数和结果视图。这种机制使得Action更加模块化,便于管理复杂的应用逻辑。 #### Struts2中获取request、response和session对象 在Struts2中,可以通过注入的方式直接在Action中使用`HttpServletRequest`, `HttpServletResponse`和`HttpSession`对象,无需手动从Servlet API中获取。这简化了数据的读取和响应的控制。 #### Action的返回值 Action的返回值用于指示视图层如何渲染页面或进行下一步操作。Struts2支持多种类型的返回值,包括重定向、转发和JSON/XML数据响应等。 #### 动态Action配置 动态Action的配置通常在struts.xml文件中进行,通过指定`<action>`元素的属性`name`和`class`,以及通过`method`属性动态选择Action的方法。 #### Struts2标签库 Struts2的标签库提供了一系列功能强大的标签,用于数据绑定、表单元素生成和页面导航等。这些标签简化了HTML和JavaScript的编写,同时增强了页面的动态性和交互性。 #### Struts1.x与Struts2的区别 相比于Struts1.x,Struts2采用了更现代的设计理念,如拦截器机制替代了请求处理器,以及对依赖注入的支持,使得代码结构更加清晰,开发效率更高。 #### 非UI标志与UI标志 非UI标志指的是那些不直接参与用户界面呈现的组件,如服务层、DAO层等。而UI标志则特指用于用户界面展示的组件,如Action、标签库等。 #### Struts国际化 Struts2支持多语言环境,通过资源文件(如`.properties`文件)存储不同语言的文本,实现了应用的全球化和本地化。 #### 参数化国际化字符串 在Struts2中,可以将参数化的字符串用于国际化文本,使得文本可以根据不同的条件动态变化,增强了文本的灵活性。 #### struts.properties文件配置 `struts.properties`文件用于配置Struts2的全局设置,如默认的视图解析器、拦截器栈等。合理的配置可以优化应用的性能和安全性。 #### Struts2转换器(Converter) Struts2提供了转换器机制,用于将HTTP请求中的字符串转换为Action类中的属性类型,确保了数据的一致性和准确性。 #### Struts2拦截器 拦截器是Struts2的核心机制之一,它可以在请求处理的各个阶段进行拦截,执行额外的逻辑,如权限检查、数据验证等。 #### 拦截器实现原理 拦截器的实现基于AOP(面向切面编程)的思想,通过定义拦截器栈,可以灵活地控制拦截器的执行顺序和范围。 #### 配置和使用拦截器 在struts.xml文件中,通过`<interceptor>`和`<interceptor-stack>`元素配置拦截器和拦截器栈,然后在`<action>`元素中引用相应的拦截器栈。 #### 自定义拦截器 开发者可以根据应用需求自定义拦截器,通过实现`Interceptor`接口或继承`AbstractInterceptor`类,编写特定的拦截逻辑。 #### Struts2控制实现IoC控制反转 Struts2支持依赖注入(DI),即IoC(Inversion of Control),通过配置文件(如Spring的bean配置)自动装配Action和其他组件的依赖关系,降低了组件间的耦合度。 #### 具体实现 通过在Spring的配置文件中定义Bean,可以将Action和其他组件的实例化和依赖关系交由Spring容器管理,实现了控制反转。 #### Struts2实现文件上传 Struts2内置了文件上传支持,只需在Action中声明`File`和`File`数组类型的属性,Struts2会自动解析HTTP请求中的文件数据并绑定到相应的属性上。 #### 错误处理 Struts2提供了异常拦截器,可以捕获并处理运行时发生的异常,通过配置错误页面或结果视图,向用户显示友好的错误信息。 #### Struts2中的OGNL OGNL(Object-Graph Navigation Language)是Struts2中使用的表达式语言,用于访问Java对象的属性和调用方法,增强了视图层的表达能力和灵活性。 #### 表达式语言主要好处 OGNL的主要好处包括简洁的语法、强大的功能和高效性,它能够方便地操作对象图,避免了复杂的Java代码。 #### Struts2支持的表达式语言 除了OGNL,Struts2还支持EL(Expression Language)等其他表达式语言,但OGNL是其默认和推荐的选择。 #### OGNL的用法 OGNL可以用在Struts2的标签、配置文件和Action中,用于动态生成HTML代码、配置属性值和执行业务逻辑。 #### Struts2新表单 Struts2提供了一些新的表单标签,如`<s:checkboxlist/>`, `<s:doubleselect/>`和`<s:token/>`,它们分别用于生成复选框列表、双重选择列表和防止跨站请求伪造的令牌。 #### 结论 Struts2与Spring的集成不仅增强了应用的灵活性和可扩展性,还简化了代码的管理和维护。通过上述知识点的学习,开发者可以更好地掌握Struts2的高级特性,并在实际项目中有效地利用这些技术。
剩余25页未读,继续阅读
- 粉丝: 8
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Prophet时间序列预测入门.ipynb
- 一款由Java写的射击游戏.zip算法资源
- 一些java的小游戏项目,贪吃蛇啥的.zip用户手册
- 在线实时的斗兽棋游戏,时间赶,粗暴的使用jQuery + websoket 实现实时H5对战游戏 + java.zip课程设计
- HTML5酒店网站模板.zip
- 基于SpringBoot开发的支付系统(包括支付宝支付,微信支付,订单系统).zip
- C基于Qt的学生成绩管理系统.zip毕业设计
- 基于深度卷积神经网络(CNN)模型的图像着色研究与应用系统实现
- Java Web实验报告五:基于JSP的留言本
- Java Web实验报告四:基于AJAX的级联下拉菜单