`
duan10jun
  • 浏览: 22467 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struct2 简单映射

阅读更多

struts2Action配置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中的loginregist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置为"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action设置为"manage/userRegist.action"

使用通配符映射(wildcard mappings)方式:

struts.xml文件中配置<action…>元素时,它的nameclassmethod属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。

当我们使用通配符定义Actionname属性时,相当于用一个元素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_*”>定义一系列请求URLuser_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URLuser_login.action时,将调用到UserAction类的login方法;用户请求URLuser_regist.action时,将调用到UserAction类的regist方法。

处理结果

如果在配置文件中写Action执行完的跳转的路径,那么在编写Action Java代码的时候还需要切换至配置文件才能知道action转向那个页面,直接写在Action中不好么?
依照这种并且结合struts1,struts2的零配置,已经在多个项目中应用,也没发现问题



struts1
中我的做法是

  1. public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request,   
            HttpServletResponse response) {   
             //......   
        return new ActionForward("/demo/Blog/edit.jsp");   
    } 
     

  public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request,

     HttpServletResponse response) {

           //......

   return new ActionForward("/demo/Blog/edit.jsp");

  }

struts1中自己另外做了扩展,可以将actionname作为formBean的配置,整个项目的struts-config配置只有下面这么一段话,path举例/admin/User/delete.do

  1. <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-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";

  }

/**进入更新页面*/  
public String edit() {   
    blog = (Blog)blogManager.getById(id);   
    return "/demo/Blog/edit.jsp";   
}  

 

struts2

中实现redirect的做法是,前面增加了一个"!"
  1. /**保存更新*/  
    public String update() {   
        blogManager.update(this.blog);   
        return "!/demo/Blog/list.action";   
    } 
      

  /**保存更新*/

  public String update() {

   blogManager.update(this.blog);

   return "!/demo/Blog/list.action";

  }

具体跳转例子



struts2

增加了direct的返回类型,struts.xml配置也只有一段话
<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>

 

  • 大小: 5.3 KB
分享到:
评论

相关推荐

    struts2简单例子

    这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识。 1. **MVC架构**: MVC模式是软件设计中的一个经典模式,它将应用逻辑分为三个主要部分:...

    Struts2_通配符映射

    ### Struts2 通配符映射创建步骤详解 #### 一、项目环境搭建与配置 根据提供的描述,本文将详细介绍如何实现Struts2中的通配符映射,并结合具体的步骤来阐述整个过程。 **第一步:创建动态Web工程** 1. **创建...

    struts2简单实例

    这个"struts2简单实例"是针对学生信息查询功能的实现,它演示了如何利用Struts2的核心机制来处理用户请求、展示数据以及进行后台数据传输。以下是关于这个实例的详细知识点: 1. **Struts2框架基础**: - Struts2...

    struts2简单入门教程

    Struts2是一个强大的MVC(Model-View-Controller)框架,用于开发Java EE的Web应用程序。它在企业级Java应用开发中被广泛使用,尤其是在建立动态Web页面方面。作为一个基于WebWork核心的框架,Struts2在许多方面对...

    基于struts2的简单购书管理系统

    这个"基于Struts2的简单购书管理系统"是一个典型的案例,它可以帮助初学者理解如何在实际项目中运用Struts2框架。下面将详细阐述这个系统中涉及的核心知识点。 1. **Struts2框架**:Struts2是Apache软件基金会的一...

    Struts2简易计算器.zip

    在这个“Struts2简易计算器”项目中,我们可以看到一个基础的JavaEE入门级编程练习,它展示了如何利用Struts2框架来实现一个简单的计算器功能。 首先,Struts2框架的核心在于它提供了控制器组件,用于处理HTTP请求...

    Struts2简单实例

    通过这个简单的实例,你已经初步了解了Struts2的工作原理和基本操作。在实际开发中,你可以根据需求添加更多的Action、拦截器和结果类型,实现更复杂的业务逻辑和页面跳转。同时,Struts2还提供了丰富的插件和第三方...

    留言板留言板struts2留言板struts2

    这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...

    struts2简单模拟

    通过实践简单的Struts2模拟代码,可以更好地理解和体验Struts2框架的工作原理和优势。在实际开发中,还需要不断学习和熟悉Struts2的高级特性,如自定义拦截器、类型转换、插件使用等,以提升开发能力。

    struts2简单的登陆验证

    这个"struts2简单的登陆验证"项目是一个基础入门级别的教程,适合初学者学习理解Struts2的核心概念和工作原理。 在Struts2中,登陆验证是常见的功能,涉及到用户身份的确认和权限控制。下面我们将详细探讨Struts2...

    struts2入门例子

    实践这个例子,你可以了解到如何设置一个简单的Struts2应用,从而为进一步学习更复杂的特性如国际化、文件上传、异常处理等奠定基础。 总之,Struts2是一个强大的MVC框架,它的核心在于`struts.xml`配置文件,通过...

    struts2中文学习文档

    3. **动态方法调用**:Struts2支持动态方法调用,即通过URL中的参数名自动映射到Action类的方法,大大简化了控制器的配置。 4. **国际化支持**:Struts2内置了强大的国际化支持,可以通过配置文件轻松实现多语言切换...

    struts2登录注册简单实现

    总的来说,这个“struts2登录注册简单实现”项目涵盖了Struts2框架的基础应用,包括Action的创建、配置文件的编写、视图设计、数据处理以及安全性考虑等多个方面。通过实践,开发者能更深入地理解Struts2的架构和...

    传智播客struts2.1视频教程_介绍struts2及struts2开发环境的搭建

    通过这个视频教程,你将能够深入理解Struts2的基本原理和用法,学会如何利用Struts2构建一个简单的Web应用。同时,掌握Struts2的开发环境搭建,有助于你在实际项目中快速上手。传智播客的教程以通俗易懂的方式讲解,...

    Struts 2实战 struts2 in Action

    这些案例覆盖了从简单的CRUD操作到复杂的业务逻辑处理等多个方面,帮助读者逐步掌握Struts 2的使用技巧。 ### 总结 《Struts 2实战 Struts2 in Action》这本书不仅介绍了Struts 2的基本概念和技术细节,更重要的是...

    马士兵Struts2笔记2013

    6. **Struts简单数据验证** Struts2提供了内置的数据验证机制,可以在Action类中定义验证规则,或者使用注解进行字段级验证。此外,Struts2也支持自定义验证逻辑和全局错误处理。 7. **Struts ValueStack(值栈)*...

    Struts2Demo2

    6. **模型(Model)**:虽然在“Struts2Demo2”这个简单的例子中可能没有明确体现,但在实际应用中,模型层通常包含业务对象和数据访问对象,负责处理业务逻辑和数据交互。 7. **国际化(i18n)**:Struts2支持多...

    struts2的一个简单的例子

    这个"struts2的一个简单的例子"旨在帮助初学者理解并掌握Struts2的核心概念和工作原理。以下是对这个例子的详细解释: 一、Struts2框架概述 Struts2是基于MVC(Model-View-Controller)设计模式的开源框架,它继承...

    java框架struts2 简单完整实例

    本实例是一个基础的Struts2应用,展示了如何创建一个简单的Action,配置Action映射,以及生成相应的视图。随着你对Struts2的深入学习,你会了解到更多高级特性,如动态方法调用、国际化、主题和模板、拦截器栈等。...

Global site tag (gtag.js) - Google Analytics