`
duan10jun
  • 浏览: 21907 次
  • 性别: 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 in action中文版

    第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...

    struts2+spring+hibernate整合示例

    1 首先整合spring和hibernate,这次我们在spring 中配置bean使用注解的方式 ,hibernate实体映射关系也使用注解的方式,配置完毕后用简单方法测试下hibernate是否整合成功。 a 加入支持:添加 spring核心包、...

    基于Struts2和Hibernate的简单学生选课系统

    基于Struts2和Hibernate的简单学生选课系统,只包含管理员,学生,教师,课程内容的简单选课系统,主要使用hibernate的一对多双向关联,多对多双向关联映射实现。

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版

    struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动生成表结构 freemarker 用摸版来表现视图,这个例子就是简单的用法没进行进一不的架设

    struts2+hibernate学习示例

    struts2+Hibernate 示例 目的:构建struts2开发框架 使用 Hibernate作为持久层操作 适合:有一定struts2基础 实现:通过对用户信息的基本操作来给大家做个示范 1、struts2的搭建 2、web.xml文件的简单配置 3、...

    struts2+Hibernate+Spring学习示例

    struts2+Hibernate+Spring 示例 目的:构建struts2开发框架 使用 Hibernate作为持久层操作 采用Spring容器 适合:有一定struts2基础 对Hibernate有一定的了解 对Spring有一定的知识 实现:通过对用户信息的基本...

    简单的Struts1.0的实现

    NULL 博文链接:https://sunweiherber.iteye.com/blog/622094

    Struts2+Spring+Hibernate整合入门详解

    Struts:作为基于 MVC 模式的 Web 应用最经典框架,两个项目Struts 和webwork已经集成,成为现在的Struts2。目前的最新版本是2.0.9(2007-7)。 Spring: 是一个轻型的容器,利用它可以使用一个外部 XML 配置文件...

    Jakarta Struts编程(中英文双版版电子书part1)

    Jakarta Struts编程(中英文双版版) 高效的Model 2编程并不是一项简单的任务,开发人员经常自己发现难于找到很多问题的最佳解决方式。本书是Struts项目的完全指南,引导开发人员理解概念、设计和实现方式。虽然...

    Struts与Hibernate结合

    3.1 Struts简单介绍 3.2 Struts简单例子 第四章 Hibernate框架 4.1 Hibernian简单介绍 4.2 Hibernate简单例子 第五章 Struts与hibernate结合 5.1 Struts与Hibernate简单结合 5.2 国际化程序和中文编码问题 ...

    源码基于JSP的内容管理系统(hibernate3+struts2+spring2).rar

    本资料包是一个基于JSP的内容管理系统,采用了Hibernate3、Struts2和Spring2这三个流行的Java框架进行开发。整个系统的设计遵循了MVC(Model-View-Controller)模式,将数据、界面和控制逻辑分离,使得代码结构清晰...

    Struts 通俗易懂

    一个struts入门的简单流程图。 next1: 根据你提交表单的申请JSP服务器容器把HelloWorld.do映射到 next2: JSP服务器容器把的HelloWorld.do指到的path="/HelloWorld"; next3: struts控制器根据name="HelloForm"找中...

    Jakarta+Struts+编程[扫描版][中文]

    Struts映射到Model 2设计模式的完整介绍 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 Struts应用程序的打包和发布

    Jakarta Struts编程(中英文双版版电子书part2)

    Struts映射到Model 2设计模式的完整介绍 , 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...

    struts学习笔记

    建立一个Java Web项目,提取最少运行Struts2应用的包集合,目标:实现一个简单的用户登录 包括内容: 一、先实现登录页面 二、实现处理页面的Action 三、配置Web.xml 四、配置Action处理结果和资源资源之间的映射关系 ...

    Struts Spring Hibernate 整合 OpenSessionInView 例子

    为了练手培训,给大家准备的 Open Session In View 的简单例子,纯代码,大家可以参考,其中主要说了六部分内容: 1.通过接口编程 2.通过spring注入dao到 action 3.通过 open session in view filter 支持 延迟加载...

Global site tag (gtag.js) - Google Analytics