23.JavaWeb基础 Struts 1 DispatchAction(分发Action)
来源:互联网 发布:全民枪战qcwo5炎黄数据 编辑:程序博客网 时间:2024/05/16 05:36
一.DispatchAction简介
在原始的Struts开发中,一个Action中只包含一个execute()方法,但是如果此时的
项目很大,会有多个业务类型的Action出现(增、删、改、查),会造成后期的维护困难,所
以在Struts中为了解决这样的问题,专门增加了一个DispatchAction类,此类继承Action
类,并且完成分发的处理操作。
分发Action的使用与普通Action类似,仍然要被一个类所继承,并且根据要求覆写方法。唯
一不同的是,此时的方法可以有多个,而且这多个方法分别表示着不同的操作。
二.实现DispatchAction
si.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>si.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><jsp:forward page="emp.do?status=a"></jsp:forward></body></html>
OperateAction.java:
package com.zyy.struts.action;import javax.servlet.RequestDispatcher;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;/** * 集成DispatchAction的类中,不要覆写execute()方法 不然其他的分发方法存在的话,会出现异常 * * @author CaMnter * */public class OperateAction extends DispatchAction {public ActionForward a(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {System.out.println("***** a *****");RequestDispatcher rd = request.getRequestDispatcher("emp.do?status=b");rd.forward(request, response);return null;}public ActionForward b(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {System.out.println("***** b *****");RequestDispatcher rd = request.getRequestDispatcher("emp.do?status=c");rd.forward(request, response);return null;}public ActionForward c(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {System.out.println("***** c *****");return null;}}
struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config><form-beans></form-beans><global-exceptions></global-exceptions><global-forwards></global-forwards><action-mappings><action path="/jsp/emp" input="/jsp/si.jsp" parameter="status"scope="request" type="com.zyy.struts.action.OperateAction"></action></action-mappings><message-resources parameter="resource.MessageResources" /></struts-config>
在action节点中设置属性parameter="status",是要求执行/jsp/emp.do的时候要传
入参数status=xxx ,否则报错。
这里,我采用了<jsp:forward>服务器跳转并传入参数status=a,此时从配置文件Action节
点中找到对应的path。再从type中找到OperateAction,接着根据参数status=a,找到对应
的a()执行方法。我又在a()和b()方法中利用了RequestDispatcher对象的forward()方法进
行服务器端跳转(request.getRequestDispatcher("emp.do?status=b")和request.
getRequestDispatcher("emp.do?status=b")),是为了执行a、b、c三个方法。
三.Struts 1 的其他功能
动态ActionForm:目的为了解决ActionForm过多的问题,原理就是:在配置文件中配置动态
ActionForm,然后在Action中建立动态ActionForm对象接受参数,实质
上就是少建议一个***Form的类,然后在对应的Action中通过手写代码的方式
建立ActionForm,从而达到动态的效果,但本质上没有解决ActionForm过多
的问题,所以不做多讲。
验证框架:通过建立配置文件validator-rules.xml。在此文件中自定义了验证的标准,可以从St
ruts的jar包中src/core/src/main/resources/org/apache/struts/validator
/validator-rules.xml。不过过多代码展示,因为验证框架看起来方便,实际上非常不好用
有时规定太死板,而导致程序开发困难;万一逻辑变化了,又要重新开始编写验证标准的代码。
- 23.JavaWeb基础 Struts 1 DispatchAction(分发Action)
- struts 1 中的DispatchAction-【分派action】
- Struts常用的Action--DispatchAction
- Struts 1之DispatchAction
- struts 分发action问题
- Struts(7)Struts的DispatchAction(分派Action)和全局跳转
- 18.JavaWeb基础 Struts 1
- struts Action 方法分发dispatch
- Struts旅程(五)struts控制器DispatchAction
- Struts旅程(五)struts控制器DispatchAction
- Struts -- DispatchAction
- struts DispatchAction
- struts DispatchAction
- Struts-DispatchAction
- 在Struts中可以继承 Action DispatchAction LookupDispatchAction
- struts中合并多个Action用DispatchAction
- Struts中DispatchAction和Action类有什么不同?
- 19.JavaWeb基础 Struts 1标签
- C#编写NotifyIcon 将窗口最小化到托盘
- 聚合天气预报
- 配置程序及解决Command /usr/bin/codesign failed with exit code 1错误
- POJ 2289 Jamie's Contact Groups 二分图多重匹配
- windows2003下安装Apache、PHP、MySql
- 23.JavaWeb基础 Struts 1 DispatchAction(分发Action)
- HDU 1736(字符串模拟的水题)
- 后进生的坚实的就受打击
- hdu2022--海选女主角
- cocos2d-js在某些浏览器下9宫格图片有明显切割线的问题解决
- TI 8127 Appro 框架简析
- 十大编程算法助程序员走上高手之路
- 是大多数的索拉卡受得了
- C#多态小结——面向对象编程的三大机制之二