struts2为Action配置method属性将Action类中的每一个处理方法都定义成一个逻辑Action方法。
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="my" extends="struts-default" namespace="/manage"> <action name="userLogin" class="org.qiujy.web.struts2.action.LoginAction" method="login"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="userRegist" class="org.qiujy.web.struts2.action.LoginAction" method="regist"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
如上,把LoginAction中的login和regist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置为"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action设置为"manage/userRegist.action"。
使用通配符映射(wildcard mappings)方式:
在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。
当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:
<action name="user_*" class="org.qiujy.web.struts2.action.UserAction" method="{1}"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action>
如上,<action name=”user_*”>定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。
处理结果
如果在配置文件中写Action执行完的跳转的路径,那么在编写Action Java代码的时候还需要切换至配置文件才能知道action转向那个页面,直接写在Action中不好么?
依照这种并且结合struts1,struts2的零配置,已经在多个项目中应用,也没发现问题
struts1中我的做法是
-
public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //...... return new ActionForward("/demo/Blog/edit.jsp"); }
struts1中自己另外做了扩展,可以将action的name作为formBean的配置,整个项目的struts-config配置只有下面这么一段话,path举例/admin/User/delete.do
-
<action-mappings> <action path="/*/*/*" type="com.kingsoft.{1}.web.action.{2}Action" name="com.kingsoft.{1}.web.form.{2}Form" scope="request" validate="false" parameter="{3}" attribute="{2}Form"> </action> </action-mappings>
跳转到页面和跳转到action
struts2中自己另外做了扩展,实现forward的做法是
/**进入更新页面*/ public String edit() { blog = (Blog)blogManager.getById(id); return "/demo/Blog/edit.jsp"; }
struts2
-
/**保存更新*/ public String update() { blogManager.update(this.blog); return "!/demo/Blog/list.action"; }
具体跳转例子
struts2
<package name="default" namespace="/demo" extends="custom-default"> <action name="*/*" method="{2}" class="com.kingsoft.demo.action.{1}Action"> <result name="*" type="direct">通过Action直接返回</result> </action> </package>
java action中进行调用
public class StatAction extends BaseStruts2Action implements Preparable,ModelDriven{ protected static final String JSP_dataDay="/WEB-INF/pages/stat/dataDay.jsp"; /** * 日数据查询 * @return */ public String dataDay(){ //.... return JSP_dataDay; }
例子:请求(注意,xml中的namespace必须为“”,否则报错;namespace的含义:命名空间,在浏览器里面输入的东西,http://ip地址:端口号/项目部署名称/namespace/action名称):
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <!-- 替换struts.properties中的属性 action name="*/*/*" 中的/ 可用 --> <constant name="struts.enable.SlashesInActionNames" value="true"></constant> <!-- struts2的action必须放在一个指定的包空间下定义 --> <package name="kk" namespace="" extends="struts-default" > <!-- 定义处理请求URL为:功能模块包名/Bean名/方法名 例如:bankinfor/BcmBankInfor/queryBankInfor--> <action name="*/*/*" method="{3}" class="function.business.{1}.action.{2}Action"> <result name="success">/pages/{1}/list.jsp</result> </action> </package> </struts>
相关推荐
这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识。 1. **MVC架构**: MVC模式是软件设计中的一个经典模式,它将应用逻辑分为三个主要部分:...
### Struts2 通配符映射创建步骤详解 #### 一、项目环境搭建与配置 根据提供的描述,本文将详细介绍如何实现Struts2中的通配符映射,并结合具体的步骤来阐述整个过程。 **第一步:创建动态Web工程** 1. **创建...
这个"struts2简单实例"是针对学生信息查询功能的实现,它演示了如何利用Struts2的核心机制来处理用户请求、展示数据以及进行后台数据传输。以下是关于这个实例的详细知识点: 1. **Struts2框架基础**: - Struts2...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于开发Java EE的Web应用程序。它在企业级Java应用开发中被广泛使用,尤其是在建立动态Web页面方面。作为一个基于WebWork核心的框架,Struts2在许多方面对...
这个"基于Struts2的简单购书管理系统"是一个典型的案例,它可以帮助初学者理解如何在实际项目中运用Struts2框架。下面将详细阐述这个系统中涉及的核心知识点。 1. **Struts2框架**:Struts2是Apache软件基金会的一...
在这个“Struts2简易计算器”项目中,我们可以看到一个基础的JavaEE入门级编程练习,它展示了如何利用Struts2框架来实现一个简单的计算器功能。 首先,Struts2框架的核心在于它提供了控制器组件,用于处理HTTP请求...
通过这个简单的实例,你已经初步了解了Struts2的工作原理和基本操作。在实际开发中,你可以根据需求添加更多的Action、拦截器和结果类型,实现更复杂的业务逻辑和页面跳转。同时,Struts2还提供了丰富的插件和第三方...
这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...
通过实践简单的Struts2模拟代码,可以更好地理解和体验Struts2框架的工作原理和优势。在实际开发中,还需要不断学习和熟悉Struts2的高级特性,如自定义拦截器、类型转换、插件使用等,以提升开发能力。
这个"struts2简单的登陆验证"项目是一个基础入门级别的教程,适合初学者学习理解Struts2的核心概念和工作原理。 在Struts2中,登陆验证是常见的功能,涉及到用户身份的确认和权限控制。下面我们将详细探讨Struts2...
实践这个例子,你可以了解到如何设置一个简单的Struts2应用,从而为进一步学习更复杂的特性如国际化、文件上传、异常处理等奠定基础。 总之,Struts2是一个强大的MVC框架,它的核心在于`struts.xml`配置文件,通过...
3. **动态方法调用**:Struts2支持动态方法调用,即通过URL中的参数名自动映射到Action类的方法,大大简化了控制器的配置。 4. **国际化支持**:Struts2内置了强大的国际化支持,可以通过配置文件轻松实现多语言切换...
总的来说,这个“struts2登录注册简单实现”项目涵盖了Struts2框架的基础应用,包括Action的创建、配置文件的编写、视图设计、数据处理以及安全性考虑等多个方面。通过实践,开发者能更深入地理解Struts2的架构和...
通过这个视频教程,你将能够深入理解Struts2的基本原理和用法,学会如何利用Struts2构建一个简单的Web应用。同时,掌握Struts2的开发环境搭建,有助于你在实际项目中快速上手。传智播客的教程以通俗易懂的方式讲解,...
这些案例覆盖了从简单的CRUD操作到复杂的业务逻辑处理等多个方面,帮助读者逐步掌握Struts 2的使用技巧。 ### 总结 《Struts 2实战 Struts2 in Action》这本书不仅介绍了Struts 2的基本概念和技术细节,更重要的是...
6. **Struts简单数据验证** Struts2提供了内置的数据验证机制,可以在Action类中定义验证规则,或者使用注解进行字段级验证。此外,Struts2也支持自定义验证逻辑和全局错误处理。 7. **Struts ValueStack(值栈)*...
6. **模型(Model)**:虽然在“Struts2Demo2”这个简单的例子中可能没有明确体现,但在实际应用中,模型层通常包含业务对象和数据访问对象,负责处理业务逻辑和数据交互。 7. **国际化(i18n)**:Struts2支持多...
这个"struts2的一个简单的例子"旨在帮助初学者理解并掌握Struts2的核心概念和工作原理。以下是对这个例子的详细解释: 一、Struts2框架概述 Struts2是基于MVC(Model-View-Controller)设计模式的开源框架,它继承...
本实例是一个基础的Struts2应用,展示了如何创建一个简单的Action,配置Action映射,以及生成相应的视图。随着你对Struts2的深入学习,你会了解到更多高级特性,如动态方法调用、国际化、主题和模板、拦截器栈等。...