Struts 開發簡單例子
想要成功運行一個基於struts的web例子,需要對struts有一個基本的瞭解,掌握struts的MVC模型是如何封裝如何進行控制的轉交等。下面就從代碼尋找答案。
1,首先在web.xml中進行servlet的定義。
<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>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
以上代碼,定義一個ActionServlet,用來捕獲相應的動作。即使用者端的串連請求,在此處被ActionServlet捕獲。根據下面的<servlet-mapping>是將捕獲到請求,根據尾碼交給相應的servlet(action)。隨後就會根據struts-config.xml檔案中的配置,進行處理。
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
2,
首先聲明要用到的formbean,並指定完整包路徑
<form-beans>
<form-bean name="testBean" type="strutstest.action.TestBean"/>
</form-beans>
<action-mappings>中指明了所有action所映射到的formbean類,讓formbean進行處理,同時還指定了返回結果之後的跳轉路徑。
<action-mappings>
<action name="testBean" 對應的formbean名
path="/test/saveUser" 訪問路徑,即捕獲到的請求
type="org.apache.struts.beanaction.BeanAction"> Action的類型
<forward name="success" path="/index.jsp" /> 返回成功時的跳轉路徑
</action>
<action name="testBean"
parameter="*" 表示無條件跳轉,優先順序最高,不交付給相應的formbean進行處理。*表示無條件跳轉,如果為相應的方法名,則表示指定方法進行處理。
path="/test/index" type="org.apache.struts.beanaction.BeanAction"
validate="false"> 表示不需要驗證處理,否則交付驗證
<forward name="success" path="/web/index.html" />
</action>
<action name="testBean" path="/test/updateUser" type="org.apache.struts.beanaction.BeanAction">
<forward name="success" path="/web/uccess.html" />
</action>
<action name="testBean" path="/test/getUser" type="org.apache.struts.beanaction.BeanAction" >
<forward name="success" path="/web/success.html" />
</action>
</action-mappings>
3,下面看看整個網頁代碼的編寫
<%@ page contentType="text/html" %>
<%@ taglib uri="struts-logic" prefix="logic" %>
<%@ taglib uri="struts-bean" prefix="bean" %>
<%@ taglib uri="struts-html" prefix="html" %>標籤庫的聲明,如下面的<html:link>標籤
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<html:link page="/test/saveUser.do"> 指定串連的url。do為web.xml中聲明的action的捕獲尾碼
saveUser
</html:link>
<html:link page="/test/getUser.do?id=22">帶參數的url
getUser
</html:link>
<html:link page="/test/updateUser.do">
UpdateUser
</html:link>
</body>
</html>
4,formbean檔案
package strutstest.action;
// 繼承BaseBean
import org.apache.struts.beanaction.BaseBean;
public class TestBean extends BaseBean {
public static final String SUCCESS = "success" ; //處理之後的傳回值
public static final String FAILURE = "failure" ;
public TestBean() { }
private String id; //formbean對象所涉及到的資料
private int age;
private String name;
private String address;
// getter setter 省略,此例子簡單,沒有用到該bean來傳遞資料
// 定義幾個業務方法
public String saveUser()
{
System.out.print( " 添加使用者.. " );
return SUCCESS;
}
public String updateUser()
{
System.out.print( " update user.. " );
return SUCCESS;
}
public String getUser()
{
if (id == null )
{
System.out.print( " 沒有此使用者 " );
return FAILURE; // 導向失敗
}
System.out.print( " 使用者id= " + id);
return SUCCESS;
}
}
最後,程式就可以運行了。只需要簡單是四個部分,例子就能跑通。