您的位置:首页 > 编程语言 > Java开发

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

2010-03-30 22:00 351 查看
版本: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):
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: