Struts1.2中的Dispatch Action(给action传参数)配置

本文详细介绍如何使用Struts框架搭建一个包含登录与注册功能的简单应用,包括项目创建、配置文件设置、Action编写及JSP页面展示等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:eclipse 3.3,myeclipse 6.0,tomcat 6.0

在myeclipse中新建项目StrutsDemo,导入Struts1.2属性

在com.shiryu.action包中新建 TestAction.java

package com.shiryu.action;

import java.util.HashMap;
import java.util.Map;

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.action.DynaActionForm;
import org.apache.struts.actions.LookupDispatchAction;

public class TestAction extends LookupDispatchAction {
    public ActionForward login(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        DynaActionForm registerForm = (DynaActionForm) form;// TODO Auto-generated method stub

        request.setAttribute("name", "login");
        System.out.print("login");
        return mapping.findForward("wel");
    }
   
    public ActionForward register(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        DynaActionForm registerForm = (DynaActionForm) form;// TODO Auto-generated method stub

        request.setAttribute("name", "register");
        System.out.print("reg");
        return mapping.findForward("wel");
    }

    protected Map getKeyMethodMap() {
        // TODO Auto-generated method stub
        Map map=new HashMap();
        map.put("testForm.login", "login");
        map.put("testForm.register", "register");
        return map;
    }

}

配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
</servlet>


<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>


<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

配置struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans >
    <form-bean name="testForm" type="org.apache.struts.action.DynaActionForm"/>
</form-beans>

<global-exceptions />
<global-forwards>
      <forward name="wel" path="/wel.jsp" />
      <forward name="err" path="/err.jsp" />
</global-forwards>
<action-mappings >
   
    <action
      input="/index.jsp"
      path="/index"
      type="com.shiryu.action.TestAction"
      parameter ="testForm"
      name="testForm">
    </action>

     
</action-mappings>
<message-resources parameter="com.shiryu.ApplicationResources" />
</struts-config>

新建index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
    </head>

    <body>   
         <html:link action="/index?testForm=login">
      link
   </html:link>
    </body>
</html>

新建wel.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
    <%out.print(request.getAttribute("name")); %>
</body>
</html>

有三種方式可以設定 dispatch 到哪個 method 上:

参考:blog.chinajavaworld.com/entry/2072/0/

(1) submit button 法,直接寫在 submit 的 property 上:
*
*
* <html:form action="/some/work">
* .... some thing ....
*
* <html:submit property="dispatch=save" value="儲存"/>
* <html:submit property="dispatch=delete" value="刪除"/>
* </html:form>
*
* 或者如果需要 i18n 的話,可以用 bean:message:
*
* <html:form action="/some/work">
* <html:submit property="dispatch=save" >
* <bean:message key="button.save" />
* </html:submit>
* <html:submit property="dispatch=delete" >
* <bean:message key="button.delete" />
* </html:submit>
* </html:form>
*

*
* 注意 property 裡面的值是 'dispatch=xxxx' 記得要寫等號與 method 名稱,而且大小寫要對,不能空白。當網頁按下 "儲存"
* 時,則會執行 /some/work.do 的 save(...) 的 method。 如果按下 "刪除" 則執行 delete(...),
*
* 建議 -- 這種寫法通常是用在一個 Action 有多個 dispatch method,而每個 method 都共用同個 ActionForm
*
* (2) URL 法,接在 URL 後面:
*
*
* <html:form action="/some/work?dispatch=save">
* 或是用 link 也可以
* <html:link action="/some/work?dispatch=save" />
*

*
* 建議 -- 通常用在不需要 ActionForm 的 Action,或者是要將 submit button 法寫成 url 時使用。
*
* (3) struts-config 法,直接寫死在 parameter='dispatch=foo' 上
*
*
* <action
* path="/saveOrder"
* name="SaveOrderForm"
* type="antar.order.web.OrderDispatchAction"
* parameter="dispatch=save" >
* </action>
* <action
* path="/deleteOrder"
* name="DeleteOrderForm"
* type="antar.order.web.OrderDispatchAction"
* parameter="dispatch=delete" >
* </action>
*

*
* 建議 -- 這種寫法通常是為了讓 Action 中每個 dispatch method 使用不同的 ActionForm。一旦寫死在
* struts-config 裡,該 mapping 的 path 就不能與 URL 法 或是 submit button 法同時使用。
*
* 最後請注意同一個 request 上,URL 法不能與 submit button 法同時使用 (但可以連續 forward):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值