首先新建一個(gè)web項目
取個(gè)項目名稱(chēng)
選擇項目,右鍵,MyEclipse->Add Struts Capabilities
出現畫(huà)面:
此界面是在自動(dòng)配置struts的配置文件 可以根據需要配置信息.
其中default application resource :指的是消息資源的配置
配置完成之后,會(huì )出現左側列表中的文件,其中web.xml如下:
在 ActionServlet 的 web.xml 中使用調試級別來(lái)確保獲得擴展的調試消息。有效的 debug 值是 0(不記錄)到 6(最嚴重)。 將 detail 參數設置為調試來(lái)自 digestor 的消息.
Struts-config.xml文件如下:
其中data-sources用于配置數據庫連接池
form-beans用于配置actionform
global-exceptions用于配置全局異常處理
global-forwards用于配置全局Forward
action-mappings 用于配置Action映射;
message-resources 用于配置消息資源,也就是上面提到過(guò)的default application resource
下面開(kāi)始正式編寫(xiě)程序;以做一個(gè)查詢(xún)?yōu)槔?
假設現在我們已經(jīng)知道了數據庫結構和查詢(xún)條件.
數據庫結構為
T_user
字段名
類(lèi)型
長(cháng)度
中文詮釋
備注
userId
Char
10
用戶(hù)id
主鍵
userName
Varchar
20
用戶(hù)名
查詢(xún)條件:通過(guò)userId精確查找,通過(guò)userName模糊搜索
注意,為了小組開(kāi)發(fā)能夠順利進(jìn)行,在命名標識符時(shí)請遵循標識符的一些約定,譬如此處變量名第一個(gè)字母小寫(xiě),第二個(gè)單詞的第一個(gè)字母大寫(xiě)等等
首先可以肯定查詢(xún)條件中會(huì )存在userId和userName兩個(gè)字段,所以我們可以先新建一個(gè)ActionForm,過(guò)程如下:
找到你想存放該java類(lèi)的包目錄,右鍵,新建,類(lèi)
出現畫(huà)面:
定義類(lèi)名,盡量使其有意義,而且一眼就能看懂,然后選擇超類(lèi),繼承
org.apache.struts.action.ActionForm類(lèi),然后點(diǎn)擊完成
然后在類(lèi)中聲明兩個(gè)變量userId和userName,以及最終需要返回的內容,這個(gè)內容在這里應該時(shí)一個(gè)列表;我們約定所有的查詢(xún)結果如果返回時(shí)列表的都命名為results,如果時(shí)單一內容的都命名為result,這樣有助于小組開(kāi)發(fā)的時(shí)候減少后期加工
然后找到菜單中的源代碼,選擇生成Getter和Setter方法
出現界面:
選擇全部選中,單擊確定;
然后覆蓋父類(lèi)ActionForm的reset()方法
public void reset(ActionMapping mapping,HttpServletRequest request){
userId=null;
userName=null;
results=null;
}
此方法用于當一個(gè)請求處理完之后,清除或者重置ActionForm的數據.
ActionForm 還包含一個(gè)名為 validate() 的方法??梢允褂?nbsp;validate 方法驗證表單項,如果驗證失敗,則填充 ActionErrors 對象,并將控制權返還給調用頁(yè)面,隨后調用頁(yè)面會(huì )顯示這些錯誤。
定義完ActionForm之后可以定義一個(gè)返回的results里面存放的bean,新建一個(gè)類(lèi)
/*
* 創(chuàng )建日期 2005-10-26
*
* TODO 要更改此生成的文件的模板,請轉至
* 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
*/
package com.yourcompany.struts;
/**
* @author Admin
*
* TODO 要更改此生成的類(lèi)型注釋的模板,請轉至
* 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
*/
public class User {
private String userId;
private String userName;
/**
* @return 返回 userId。
*/
public String getUserId() {
return userId;
}
/**
* @return 返回 userName。
*/
public String getUserName() {
return userName;
}
/**
* @param userId 要設置的 userId。
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* @param userName 要設置的 userName。
*/
public void setUserName(String userName) {
this.userName = userName;
}
}
之后可以新建一張jsp頁(yè)面
頁(yè)面內容如下
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib uri="‘ target=_blank>http://jakarta.apache.org/struts/tags-bean&q ... quot;bean" %>
<%@ taglib uri="‘ target=_blank>http://jakarta.apache.org/struts/tags-html&q ... quot;html" %>
<%@ taglib uri="‘ target=_blank>http://jakarta.apache.org/struts/tags-logic&q ... quot;logic" %>
<%@ taglib uri="‘ target=_blank>http://jakarta.apache.org/struts/tags-tiles&q ... quot;tiles" %>
<%@ taglib uri="‘ target=_blank>http://jakarta.apache.org/struts/tags-template&q ... uot;template" %>
<%@ taglib uri="‘ target=_blank>http://jakarta.apache.org/struts/tags-nested&q ... quot;nested" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>UserSearch.jsp</title>
<META http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<html:form action="/userSearch" method="post">
<table border="0">
<TR>
<TD align="right"> 姓名:</TD>
<TD><html:text property="name"/></TD>
</TR>
<TR>
<TD></TD>
<td>-- or --</td>
</TR>
<TR>
<TD align="right">
用戶(hù)id:
</TD>
<TD><html:text property="ssNum"/>(xxx-xx-xxxx)</TD>
</TR>
<TR>
<TD></TD>
<TD> <html:submit /></TD>
</TR>
</table>
</html:form>
<logic:present name="userForm" property="results">
<hr width="100%" size="1" noshade="noshade">
<bean:size id="size" name="userForm" property="results"/>
<logic:equal name="size" value="0">
<center> <FONT color="red"><b>No Employee Found</FONT></center>
</logic:equal>
<logic:greaterThan name="size" value="0">
<table border="1">
<tr>
<th>姓名
</th>
<TH>用戶(hù)id</TH>
</tr>
<logic:iterate id="result" name="userForm" property="results">
<tr>
<TD><bean:write name="result" property="userName"/> </TD>
<td><bean:write name="result" property="userId"/> </td>
</tr>
</logic:iterate>
</table>
</logic:greaterThan>
</logic:present>
</body>
</html:html>
這個(gè)jsp頁(yè)面中有一個(gè)form,
<html:form action="/userSearch " method="post">
他的action是/userSearch; 所以我們可以在struts-config.xml中定義這個(gè)action;
由于此action用到了一個(gè)ActionForm叫userForm,我們可以同時(shí)配置form-beans配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "‘ target=_blank>http://jakarta.apache.org/struts/d ... fig_1_1.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean type="com.yourcompany.struts.UserForm" name="userForm" >
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/userSearch" input="UserSearch.jsp" scope="request" name="userForm" ></action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
這里的action還差一個(gè)內容,就是action所指向的java類(lèi),我們可以添加一個(gè)Action,取名叫UserSearchAction,并且繼承org.apache.struts.action.Action類(lèi)
他的內容,通過(guò)覆蓋Action的execute方法,進(jìn)行操作,最終得到結果
然后我們在struts-config.xml中添加這個(gè)類(lèi): (加粗的部分);
<action path="/userSearch" input="UserSearch.jsp" scope="request" name="userForm" type="com.yourcompany.struts.UserSearchAction"></action>
在UserSearchAction.java中,我們可以通過(guò)getDataSource(HttpServerletRequest request)方法得到數據庫連接池,數據庫連接池的配置如下:
找到struts-config.xml文件,修改data-sources標簽
<data-sources>
<data-source type="org.apache.struts.util.GenericDataSource">…數據庫連接池
<set-property property="password" value="lpl**#@)()#rjxy" /> ……….密碼
<set-property property="minCount" value="5" />…………………...最小連接數
<set-property property="maxCount" value="10" />…………………..最大連接數
<set-property property="user" value="sa" />………………………..用戶(hù)名
<set-property property="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />………………….驅動(dòng)程序
<set-property property="description" value="" />………………描述
<set-property property="url" value="jdbc:microsoft:sqlserver://localhost:1433;databaseName=rongda;selectMethod=cursor" /> ……………………………………………………………………………連接地址
<set-property property="readOnly" value="false" /> …..是否只讀
<set-property property="autoCommit" value="false" />….是否自動(dòng)提交事務(wù)
<set-property property="loginTimeout" value="" /> ……登陸超時(shí)
</data-source>
</data-sources>
然后程序就可以運行了


