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。不过过多代码展示,因为验证框架看起来方便,实际上非常不好用

        有时规定太死板,而导致程序开发困难;万一逻辑变化了,又要重新开始编写验证标准的代码。




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老婆生了孩子性冷淡怎么办 宝宝有轻度地贫怎么办 不小心怀孕了该怎么办 45岁不小心怀了怎么办 喝了酒胃不舒服怎么办 备孕期间孕酮低怎么办 2个月宝宝不睡觉怎么办 生完小孩肚子还是很大怎么办 生完孩子肚皮疼怎么办 生完孩子有肚腩怎么办 生完宝宝肚子还是很大怎么办 生完孩子小腹大怎么办 生完孩子肚皮松怎么办 生过孩子肚子松怎么办 生完孩子肚皮痒怎么办 生完小孩肚子松弛怎么办 生了孩子肚子大怎么办 嫁到别的省户口怎么办 孕中期假性宫缩怎么办 频繁的假性宫缩怎么办 显卡风扇不转了怎么办 老是想不好的事怎么办 做人工受孕多囊怎么办 子宫内有囊肿该怎么办 子宫长了个囊肿怎么办 怀孕后不想要该怎么办 20多岁雌激素低怎么办 生完小孩后子宫下垂怎么办 取环之前同房了怎么办 做人流后又怀孕怎么办 仓鼠长了个肿瘤怎么办 过敏留下的黑印怎么办 脸上痘痘发炎了怎么办 脸上皮肤红痒怎么办啊 皮肤有一片红痒怎么办 脸过敏期间很干怎么办 怀孕了用了消糜栓怎么办 乳酸杆菌少或无怎么办 怀孕了白带有异味怎么办 怀孕清洁度iv度怎么办 怀孕了下面有异味怎么办