1.在struts2中,为了访问HttpSession实例,struts2提供了一个ActionContext类(com.opensymphony.xwork2.ActionContext
),该类提供一个getSession的方法,此方法的返回值类型不是HttpSession,而是Map(struts2为了简化action的测试,将action类与servlet API完全分离,因此返回值类型是Map,而不是HttpSession),然后struts2的系列拦截器会负责此session与HttpSession之间的转换。
ActionContext.getContext().getSession().put("user" , getUsername());
对于上面的语句放入session中的属性user的值,在jsp中可通过jsp2.0表达式(jsp2.0表达式可参考《轻量级J2EE企业应用实战》)取得:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title></title>
</head>
<body> ${sessionScope.user},您已经登陆!
</body>
</html>
2.action中的成员属性,并不一定用于封装用户的请求参数,也可能是封装了action需要传入下一个页面需要显示的值。实际上,这些值将被封装在ValueStack中。
当action设置了某个属性值后,struts2将这些属性值全部封装在一个叫做struts.valueStack的请求属性里。
在Jsp中可以通过以下语句来获取包含全部信息的ValueStack对象
//获取封装出去信息的ValueStack信息
ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
通过OGNL表达式能非常方便的访问ValueStack对象封装的信息。从数据结构上看,ValueStack有点类似Map结构,但它比Map结构更强大(可以根据表达式来查询值)。Action所有的属性都被封装到了ValueStack对象中,Action中的属性名可以理解为ValueStack中value的名字。
//调用ValueStack的findValue方法查看某个表达式的值
vs.findValue("books");
3.当控制器需要调用业务逻辑方法时,比较成熟的做法是利用工厂模式来管理业务逻辑组件实例,或通过依赖注入将业务逻辑组件实例注入控制器组件。实际项目中不会在控制器中直接创建业务逻辑组件的实例,因为控制器不应该关心业务逻辑组件的实例化过程。
4.struts2应用中的国际化
以下命令将包含非西欧字符的资源文件处理成标准的ASCII格式
native2ascii messageResouce.properties messageResouce_zh_CN.properties
资源文件命名格式:
basename_语言代码_国家代码.properties
将资源文件放在WEB-INF/classes路径下,加载资源文件可以通过struts.proterty文件来定义,如:
//定义struts2的资源文件的baseName是messageResource
struts.custom.il8n.resources=messageResource
struts2默认加载WEB-INF/classes下的资源文件。如果资源文件放在WEB-INF/classes的子目录,例如保存在WEB-INF/classes/lee路径下,则需要修改struts.property的定义如下:
//定义struts2的资源文件的baseName是messageResource,且文件放在WEB-INF/classes/lee目录下
struts.custom.il8n.resources=lee.messageResource
5.数据校验
1)继承ActionSupport
ActionSupport类是一个工具类,已实现了Action接口,还实现了Validateable接口,提供数据校验功能。通过继承ActionSupport类,可以简化struts2 的action开发。
在Validateable接口中定义了一个validate()方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过OGNL表达式负责输出。
在action类中重写validate方法后,此方法会在execute方法之前执行,执行后,如果Action类的fieldErrors域中已经包含数据校验错误,请求将被转发到input逻辑视图处。
为了在校验失败后,系统能将视图转入input处,必须在配置该action时配置input属性。如:
<!--定义login的Action -->
<action name="Login" class="lee.LoginAction">
<!-- 定义input的逻辑视图名,对应login.jsp页面 -->
<result name="input">/login.jsp</result>
<!-- 定义error的逻辑视图名,对应error.jsp页面 -->
<result name=" error ">/error.jsp</result>
<!-- 定义success的逻辑视图名,对应welcome.jsp页面 -->
<result name="success">/welcome.jsp</result>
</action>
提示:struts2的<s:form .../>默认已经提供了输出校验错误的能力。
ActionSupport增加了让提示信息国际化的能力,ActionSupport提供的getText方法可以根据资源文件加载获得国际化提示信息。
2)使用struts2的校验框架
类似struts1,struts2也允许通过定义配置文件来完成数据校验,struts2的校验框架实际上是基于XWork的validator框架。
struts2提供了大量的数据校验器,包括表单域校验器和非表单域校验器。
分享到:
相关推荐
本学习笔记主要探讨了Struts2中的校验器(Validator)和校验框架,帮助开发者理解如何有效地实现数据验证,确保应用程序的健壮性。 首先,我们来看Struts2的校验框架。这个框架提供了强大的功能,可以对用户输入...
2. **模型驱动**:使用一个公共对象作为模型,Action类持有这个模型的引用,Struts2将请求参数填充到模型对象中,这种方式更便于数据管理和共享。 此外,Struts2还支持动态方法调用、国际化、主题和模板、AJAX集成...
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
Struts2 学习笔记-part2: 实现用户登录功能 在上一部分中,我们了解了构建一个基于Struts2的Java Web项目所需的基本库和配置文件。现在,我们将逐步实现一个简单的用户登录功能。 一、创建Action类 在Struts2框架...
在本文中,我们将深入探讨Struts2的核心组件——Action,以及如何配置和使用它来构建一个简单的Hello World应用程序。 在Struts1.x中,Action是处理用户请求的核心,它需要继承`org.apache.struts.action.Action`...
博客文章"Struts学习笔记之ActionForm - xiaodaoxiaodao——蓝小刀的自言自语 - BlogJava.mht"可能包含更深入的实践示例和经验分享,包括如何处理ActionForm的生命周期、动态Form Beans、国际化等话题。通过阅读这篇...
在本篇学习笔记中,我们将重点讨论Struts2框架中的Action和拦截器(Interceptor)如何处理请求参数。 首先,Struts2的核心是拦截器机制,它允许我们在Action执行前后插入自定义的处理逻辑。在`struts-default.xml`...
本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让我们了解Struts2的基本特性。Struts2是一个基于Servlet的框架,它通过将JSP作为视图(View),Servlet作为控制器(Controller),并将...
- 学习如何使用 Struts2 提供的各种标签和插件来简化开发工作。 综上所述,Struts2 是一个功能强大且灵活的 MVC 框架,适用于构建复杂的 Web 应用程序。通过深入理解其核心概念和技术细节,开发者能够充分利用 ...
### 传智播客Struts2全程学习笔记 #### Struts2的优点 1. **无侵入式设计**:与Struts1相比,Struts2的设计更为先进,它不依赖于Servlet API或Struts API,这使得Struts2更加灵活且易于集成到其他环境中。在代码...
在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理用户提交的数据时非常关键,它允许Struts2自动将请求参数转换为Java对象的属性。 在Struts2中,类型转换主要由`...
框架通过配置文件(struts-config.xml)来定义Action类和相应的映射,这使得请求可以被正确路由到对应的业务逻辑。 2. **Model(模型)** 模型组件负责处理业务逻辑,通常由JavaBeans或Entity Beans组成。它们与...
虽然笔记中没有提供源代码,但学习过程中可以通过模仿示例创建简单的Struts2应用,如用户登录注册系统,熟悉Action配置、视图展现和拦截器的使用。 总结,黑马程序员Struts2 2016版的前3Days笔记重点介绍了Struts2...
在第九讲中,我们将深入探讨Struts2的校验框架,这是一个非常重要的功能,它有助于确保输入数据的准确性和完整性,防止非法数据导致的系统异常。 在传统的Java web开发中,数据验证通常在服务器端进行,如Servlet或...