版本: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):
Struts1.2中的Dispatch Action(给action传参数)配置
最新推荐文章于 2024-01-16 12:31:22 发布