Struts2 Action接口实现详解与FreeMarker特性

需积分: 9 1 下载量 40 浏览量 更新于2024-08-18 收藏 1.47MB PPT 举报
"本资源主要讲解了Struts2框架中Action接口的实现,包括扩展ActionSupport类,使用ValidationAware接口,validate和execute方法的使用以及它们的执行顺序。同时,也简单提到了FreeMarker模板引擎的一些核心特性,如其通用目标、强大的模板语言、通用数据模型以及针对Web的优化和智能的国际化与本地化功能。" 在Struts2框架中,Action接口是业务逻辑处理的核心。为了简化开发,通常我们不会直接实现Action接口,而是选择扩展`ActionSupport`类。`ActionSupport`类已经提供了许多内置功能,例如错误和异常处理,以及支持国际化。 `ValidationAware`接口用于支持表单验证。当Action类实现了这个接口,它可以获取并处理验证过程中产生的错误信息。`validate`方法就是用于进行业务逻辑验证的地方,它会在`execute`方法之前被调用,确保数据的合法性。如果`validate`方法中发现了错误,那么`execute`方法将不会被执行,从而阻止非法数据进入后续的业务流程。 `execute`方法是Action类的核心,它是处理用户请求并返回结果的关键。通常,`execute`会根据业务逻辑的不同,返回不同的常量字符串,这些字符串对应着Struts2配置文件中的结果类型,决定着页面跳转的方向。 关于`validate`和`execute`的执行顺序,按照Struts2的默认配置,`validate`方法总是先于`execute`执行。如果`validate`返回非空的错误列表,那么`execute`会被跳过,请求处理将直接转向处理错误的逻辑。 接下来,简要介绍下FreeMarker,这是一个强大的模板引擎。它的设计目标是通用,可以生成各种文本格式,并且能够轻松地嵌入到各种环境中,即使没有Servlet环境也能工作。FreeMarker的模板语言强大,支持包括条件判断、循环、变量操作和复杂表达式等在内的各种指令。此外,它还具有命名宏、命名空间等功能,方便模板的组织和复用。 FreeMarker的数据模型是通用的,它通过对象封装机制将Java对象暴露给模板,使得模板开发者可以专注于呈现逻辑,而无需关心底层技术细节。特别适合Web开发,它可以与Model2Web应用框架集成,作为JSP的替代品,支持JSP标记库,并且有内置处理Web相关的特性,如HTML转义。 最后,FreeMarker在国际化和本地化方面表现出色,它能智能地处理不同地区和语言的需求,使得应用能够适应全球用户。 了解和掌握Action接口的实现以及FreeMarker的特性,对于开发基于Struts2的Web应用至关重要。这不仅能够提高开发效率,也有利于实现良好的代码结构和用户体验。

192.168.85.1 - - [26/Jun/2022:06:07:07 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 14 192.168.85.1 - - [26/Jun/2022:06:08:06 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 15 192.168.85.1 - - [26/Jun/2022:06:08:16 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 1227 192.168.85.1 - - [26/Jun/2022:06:10:15 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 79 192.168.85.1 - - [26/Jun/2022:06:13:25 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 404 752 192.168.85.1 - - [26/Jun/2022:06:16:42 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:16:57 -0400] "GET //struts2-showcase/hhh.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:18:55 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:19:02 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:19:09 -0400] "GET //struts2-showcase/hhh1.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:19:34 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 400 192.168.85.1 - - [26/Jun/2022:06:20:37 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 5 192.168.85.1 - - [26/Jun/2022:06:20:42 -0400] "GET //struts2-showcase/hhh1.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:20:46 -0400] "GET //struts2-showcase/hhh.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:20:51 -0400] "GET /struts2-showcase/hhh.jsp HTTP/1.1" 403 642

2023-07-12 上传