Struts2深入学习:OGNL、拦截器与ValueStack实战

需积分: 3 0 下载量 74 浏览量 更新于2024-07-19 收藏 1.15MB DOCX 举报
"这篇教程是关于Struts2框架的基础知识,特别是关注OGNL表达式、Interceptor拦截器以及ValueStack的数据存取。通过学习,你将能够掌握如何在Action中访问Servlet API,理解OGNL的工作原理,使用ValueStack来管理数据,以及如何自定义拦截器。" Struts2是一个流行的Java Web应用程序框架,它简化了MVC(模型-视图-控制器)设计模式的实现。在"Struts2框架基础 二"中,我们深入探讨了几个关键概念: 1. OGNL (Object-Graph Navigation Language):OGNL是一种强大的表达式语言,用于获取和设置Java对象的属性。在Struts2中,它用于在Action类和视图之间传递数据。OGNL表达式可以用来访问和修改ValueStack上的任何对象的属性。例如,`#username`是OGNL表达式,用于获取或设置名为`username`的值。 2. Interceptor(拦截器):拦截器是Struts2的核心组件,它们在Action执行前后进行拦截,执行预处理和后处理任务。例如,验证、日志记录、事务管理等都可以通过拦截器实现。Struts2内置了多种拦截器,如Params拦截器负责参数绑定,Validation拦截器进行字段验证,而ModelDriven拦截器帮助将模型对象与Action关联。 3. ValueStack:ValueStack是Struts2中的一个重要数据容器,它保存了Action的实例以及可能的模型对象。你可以将数据放入栈顶的对象,然后使用OGNL表达式在JSP页面上方便地访问这些数据。例如,`<s:textfield name="username" />`标签会自动查找ValueStack中的`username`属性。 4. 使用ServletAPI:在Action类中,可以通过`ServletActionContext`来获取`HttpServletRequest`、`HttpServletResponse`、`ServletContext`和`HttpSession`对象。这样,Action可以直接操作HTTP请求和响应,以及与Servlet容器进行交互。 5. 自动注入ServletAPI:Struts2提供了自动注入这些对象的机制,比如通过实现`ServletRequestAware`、`ServletResponseAware`等接口,Struts2会在执行Action之前自动填充这些属性,简化了代码。 6. 自定义拦截器:除了使用内置的拦截器,开发者还可以根据需求创建自己的拦截器。自定义拦截器需要实现`Interceptor`接口,并在配置文件中声明,这样它就可以按需插入到Action执行路径中。 学习以上知识点后,开发者可以更有效地构建Struts2应用,提高代码的可维护性和复用性。理解并熟练运用这些工具和机制,对于开发高质量的Java Web应用至关重要。
2016-06-03 上传