"学习目标-Action和类型转换"
在学习Struts2框架时,我们的目标是理解和熟练运用Action以及相关的类型转换。以下是对这些知识点的详细解释:
1、实现Action控制类:
Struts2的设计允许Action类是任何普通的Java对象(POJO),这意味着你无需强制遵循特定的规范来创建Action。不过,为了方便开发,Struts2提供了Action接口和ActionSupport基类。Action接口定义了execute方法和其他几个静态常量,但通常我们更倾向于使用ActionSupport类,因为它不仅实现了Action接口,还实现了Validateable接口,提供了数据验证、错误处理、Action信息设置以及国际化的功能。
2、访问ActionContext:
ActionContext是Struts2中的核心组件,它存储了Action执行过程中所需的所有上下文信息,包括请求、响应、session和application范围内的数据。可以通过`ActionContext.getContext()`获取当前线程的ActionContext实例,然后利用其提供的方法如`get(Object key)`、`getApplication()`、`getParameters()`、`getSession()`、`put(Object key, Object value)`等来获取或设置数据。
3、直接访问ServletAPI:
虽然ActionContext提供了间接访问ServletAPI的能力,但有时我们需要直接操作HTTP请求或响应。这可以通过在Action类中注入`HttpServletRequest`和`HttpServletResponse`来实现,或者通过ActionContext获取它们的引用。
4、配置Action:
在Struts2中,Action的配置可以在struts.xml文件中进行,这里可以定义Action的类、方法映射、结果页面、拦截器等。例如,你可以指定哪个方法对应哪个HTTP请求,以及请求成功后跳转的视图。
5、使用通配符:
在Action配置中,可以使用通配符(如*)来匹配多个请求,这样可以减少配置文件的复杂性。例如,`*`可以代表任意字符,用于处理一类相似的请求。
6、动态方法调用:
Struts2支持动态方法调用,这意味着可以不预先在struts.xml中配置,而是根据请求参数动态决定调用Action中的哪个方法。这种灵活性让代码更具可扩展性。
7、类型转换:
Struts2的类型转换机制允许将HTTP请求参数自动转换为Action字段的期望类型。Struts2的ConversionService负责这项工作,它可以处理基本类型和复杂类型的转换,同时也可以自定义转换器以满足特殊需求。
在实际练习中,你可能需要创建一个Action,通过ActionContext来获取或设置请求参数,实现业务逻辑,并可能涉及到数据类型的转换。例如,你可以随机生成一个字符串,将其存储在ActionContext中,然后在JSP页面上展示这个随机字符串。这样的练习有助于加深对Action和ActionContext使用方式的理解。