`
yejf_java
  • 浏览: 7157 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts1.x 学习笔记系列

    博客分类:
  • SSH
阅读更多
###########################################
## Date: 2007-11-12
## Description: Struts FrameWork day3
## Author: yejf
############################################
Struts中 模板模式 的应用:
如何来写一个公共的 ACTION:

public abstract class BaseAction extends Action {

//模板模式的应用.
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res)
throws ServletException,IOException {

executeBefore(); //做一些共同的功能

ActionForward forward = executeAction(mapping,form,req,res);

executeAfter();

return forward;

}

public void executeBefore() {
//实现共同的功能.
//1. 用户的登录 
//2. 用户只能访问被授权的页面
//3. 跟踪每一次用户点击页面
//4. 可以用来显示登录过用户的姓名.

//以上有些功能可以被用来在FILTER中或LISTENER,进行实现.
}

//子类必须要实现的抽象方法.
public abstract ActionForward executeAction(ActionMapping mapping,ActionForm form,
HttpServletRequest req, HttpServletResponse res)
throws ServletException,IOException ;

public void executeAfter() {
//实现共同的功能
//1. 在ACTION执行完之后要做的其它事情.
}

protected CommonService getCommonService() {
// . . . 获取公共的业务对象
}

}

Struts高级特性:
一, 动态表单:
org.apache.struts.action.DynaActionForm
Struts提供了此类,我们只需要在struts-config.xml
文件当中来配置一个formbean, 而再也不需要去coding
一个ActionForm Bean

<!-- 配置动态表单 -->
<form-beans>

  <form-bean name="dynyLoingForm"
  type="org.apache.struts.action.DynaActionForm">
  <form-property name="" type="" />
  . . .
  </form-bean>
 
</form-beans>

二, Prebuilt Action
Struts提供了多个 prebuilt Action,我们重点使用如下
三个:
org.apache.struts.actions.DispatchAction
org.apache.struts.actions.MappingDispatchAction
org.apache.struts.actions.LookupDispatchAction

1. DispatchAction:
public class DispatchAction extends Action {
  protected HashMap methods = new HashMap();
  protected Class[] types = null;
 
protected ActionForward dispatchMethod(ActionMapping mapping,
                                       ActionForm form,
                                       HttpServletRequest request,
                                       HttpServletResponse response,
                                       String name)
                                throws Exception {
         if(name == null) { return this.unspecified(mapping,form,request,response);
         Method m  = null;
         try {
         m = getMethod(name);
         } catch (NoSuchMethodException nsme) {
         //. . .
         }      
         //依要求进行处理
         //...          
    }

protected String getParameter(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
                       throws Exception {
        //已实现              
   }
   protected Method getMethod(String name)
                    throws NoSuchMethodException {
     // 已实现              
    }
    protected ActionForward unspecified(ActionMapping mapping,
                                    ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
                             throws Exception { //已实现 }
}

  //例
public class ProductDispatchAction extends DispatchAction {
//如有需要,可以重写 dispatchMehod()方法

public ActionFoward add(mapping,form,req,res)throws Exception {

}
public ActionForward modify(mapping,form,req,res)throws Exception {

}
. ..

}

配置DispatchAction:
<action path="/product"
type="xx.xx.ProductDispatchAction"
paramemter="method">

  </action>

<a href="/product.do?method=add">添加</a>
<from action="/product.do">
<input type="hidden" name="method" value="modify">
</form>
------------------------------------------------------
org.apache.struts.actions.DispatchAction
1.特点:
a. struts-config.xml 只与一个<action>,
所有与本DispatchAction相关的请求
都对应一个<action>
b. 只能使用一个form 表单 或者不使用.

c. 做表单验证时,失败都到同一页面.

d. 由于所有请求都对应同一 path, 所以
要用parameter="method" 来指定一个"代理方法名"
真正的方法名要通过前台JSP页面使用 reqUrl?method=real method name 来指定.


org.apache.struts.actions.LookupDispatchAction
1.特点:
a. 适合用于一个页面中存在多个提交按钮的情况.

b. 根据在资源文件中配置的key 来找到方法名.

c. 此KEY 值也是前台JSP页面中的提交按钮的值, 它的name
属性要与<action>中的 parameter="" 保持一样.

d. 如果按钮是中文时要注意,编码方式一至. 这样才可以.

org.apache.struts.actions.MappingDispatchAction

1.特点:
a. 每一个请求都对应一个<action>

b. 所以可以为每个请求指定 form 表单.

c. 用 parameter 属性直接指定 方法名
分享到:
评论

相关推荐

    Struts2学习笔记

    根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    Struts 1.3.8 学习笔记(一)

    首先,Struts 1.3.8 是 Struts 1.x 系列中的一个稳定版本,它引入了许多改进和修复,以增强性能和稳定性。这个框架的核心设计目标是将业务逻辑与表现层分离,通过 Action 和 Form Beans 实现控制器功能,同时利用 ...

    Struts2.1学习笔记

    ### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...

    Struts 1.3.8 学习笔记(四)

    这个版本的学习笔记主要集中在 Struts 框架的核心概念、架构和实际应用上。在深入学习 Struts 1.3.8 时,我们需要了解以下几个关键知识点: 1. **MVC设计模式**:Struts 是 Model-View-Controller (MVC) 设计模式的...

    struts2培训笔记

    ### Struts2培训笔记 #### 一、Struts2简介 **MVC框架**:Struts2是一个基于Java的企业级Web应用开发框架,遵循MVC(Model-View-Controller)设计模式。 - **M(Model)**:业务逻辑处理部分,通常指与数据库交互...

    struts2资料可做参考

    "struts2学习笔记(一) ——struts2与spring2_0的集成 - 一嗑立扑死 - CSDN博客.mht"可能详细讨论了如何将Struts2与Spring 2.0版本集成,包括Action的配置和依赖注入的使用。而"Struts2与Spring的结合 - Naviler的...

    java常用框架学习笔记

    ### Java常用框架学习笔记 #### Hibernate ##### 1.1 Hibernate 实现数据库操作步骤 - **导入所需的Jar包**:为了使用Hibernate框架,首先需要在项目中导入Hibernate库。这通常意味着添加一系列与Hibernate相关的...

    达内笔记(基础性,很有价值)

    Struts1.x采用配置文件定义动作映射,而Struts2则提供了更灵活的注解配置和拦截器机制。 【Hibernate】:Hibernate是一个对象关系映射(ORM)框架,它允许Java开发者以面向对象的方式来操作数据库。通过XML或注解...

    spring知识总结.zip

    6. **学习笔记**:可能涵盖Spring的基本概念、配置、最佳实践、常见问题等,帮助学习者系统地掌握Spring知识。 在"新建文件夹"中,可以预期找到上述知识点的具体实现或解释。这些资料对于初学者或者希望深化Spring...

    Java_笔记整理

    通过这份笔记,我们能够深入了解Java语言的基础特性、面向对象的设计原则以及一系列高级框架的应用。此外,还简要介绍了Linux/Unix系统的一些基本操作指令。 #### Java 核心知识点 1. **Core Java** - **基础...

Global site tag (gtag.js) - Google Analytics