首先新建一個(gè)web項(xiàng)目
取個(gè)項(xiàng)目名稱
選擇項(xiàng)目,右鍵,MyEclipse->Add Struts Capabilities
出現(xiàn)畫面:
此界面是在自動(dòng)配置struts的配置文件 可以根據(jù)需要配置信息.
其中default application resource :指的是消息資源的配置
配置完成之后,會(huì)出現(xiàn)左側(cè)列表中的文件,其中web.xml如下:
在 ActionServlet 的 web.xml 中使用調(diào)試級(jí)別來確保獲得擴(kuò)展的調(diào)試消息,。有效的 debug 值是 0(不記錄)到 6(最嚴(yán)重)。 將 detail 參數(shù)設(shè)置為調(diào)試來自 digestor 的消息.
Struts-config.xml文件如下:
其中data-sources用于配置數(shù)據(jù)庫連接池
form-beans用于配置actionform
global-exceptions用于配置全局異常處理
global-forwards用于配置全局Forward
action-mappings 用于配置Action映射;
message-resources 用于配置消息資源,也就是上面提到過的default application resource
下面開始正式編寫程序;以做一個(gè)查詢?yōu)槔?
假設(shè)現(xiàn)在我們已經(jīng)知道了數(shù)據(jù)庫結(jié)構(gòu)和查詢條件.
數(shù)據(jù)庫結(jié)構(gòu)為
T_user
字段名
類型
長(zhǎng)度
中文詮釋
備注
userId
Char
10
用戶id
主鍵
userName
Varchar
20
用戶名
查詢條件:通過userId精確查找,通過userName模糊搜索
注意,為了小組開發(fā)能夠順利進(jìn)行,在命名標(biāo)識(shí)符時(shí)請(qǐng)遵循標(biāo)識(shí)符的一些約定,譬如此處變量名第一個(gè)字母小寫,第二個(gè)單詞的第一個(gè)字母大寫等等
首先可以肯定查詢條件中會(huì)存在userId和userName兩個(gè)字段,所以我們可以先新建一個(gè)ActionForm,過程如下:
找到你想存放該java類的包目錄,右鍵,新建,類
出現(xiàn)畫面:
定義類名,盡量使其有意義,而且一眼就能看懂,然后選擇超類,繼承
org.apache.struts.action.ActionForm類,然后點(diǎn)擊完成
然后在類中聲明兩個(gè)變量userId和userName,以及最終需要返回的內(nèi)容,這個(gè)內(nèi)容在這里應(yīng)該時(shí)一個(gè)列表;我們約定所有的查詢結(jié)果如果返回時(shí)列表的都命名為results,如果時(shí)單一內(nèi)容的都命名為result,這樣有助于小組開發(fā)的時(shí)候減少后期加工
然后找到菜單中的源代碼,選擇生成Getter和Setter方法
出現(xiàn)界面:
選擇全部選中,單擊確定;
然后覆蓋父類ActionForm的reset()方法
public void reset(ActionMapping mapping,HttpServletRequest request){
userId=null;
userName=null;
results=null;
}
此方法用于當(dāng)一個(gè)請(qǐng)求處理完之后,清除或者重置ActionForm的數(shù)據(jù).
ActionForm 還包含一個(gè)名為 validate() 的方法,??梢允褂?nbsp;validate 方法驗(yàn)證表單項(xiàng),如果驗(yàn)證失敗,,則填充 ActionErrors 對(duì)象,,并將控制權(quán)返還給調(diào)用頁面,隨后調(diào)用頁面會(huì)顯示這些錯(cuò)誤,。
定義完ActionForm之后可以定義一個(gè)返回的results里面存放的bean,新建一個(gè)類
/*
* 創(chuàng)建日期 2005-10-26
*
* TODO 要更改此生成的文件的模板,,請(qǐng)轉(zhuǎn)至
* 窗口 - 首選項(xiàng) - Java - 代碼樣式 - 代碼模板
*/
package com.yourcompany.struts;
/**
* @author Admin
*
* TODO 要更改此生成的類型注釋的模板,請(qǐng)轉(zhuǎn)至
* 窗口 - 首選項(xiàng) - 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 要設(shè)置的 userId。
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* @param userName 要設(shè)置的 userName,。
*/
public void setUserName(String userName) {
this.userName = userName;
}
}
之后可以新建一張jsp頁面
頁面內(nèi)容如下
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib uri="‘ target=_blank>http://jakarta./struts/tags-bean&q ... quot;bean" %>
<%@ taglib uri="‘ target=_blank>http://jakarta./struts/tags-html&q ... quot;html" %>
<%@ taglib uri="‘ target=_blank>http://jakarta./struts/tags-logic&q ... quot;logic" %>
<%@ taglib uri="‘ target=_blank>http://jakarta./struts/tags-tiles&q ... quot;tiles" %>
<%@ taglib uri="‘ target=_blank>http://jakarta./struts/tags-template&q ... uot;template" %>
<%@ taglib uri="‘ target=_blank>http://jakarta./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">
用戶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>用戶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頁面中有一個(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./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è)內(nèi)容,就是action所指向的java類,我們可以添加一個(gè)Action,取名叫UserSearchAction,并且繼承org.apache.struts.action.Action類
他的內(nèi)容,通過覆蓋Action的execute方法,進(jìn)行操作,最終得到結(jié)果
然后我們?cè)趕truts-config.xml中添加這個(gè)類: (加粗的部分);
<action path="/userSearch" input="UserSearch.jsp" scope="request" name="userForm" type="com.yourcompany.struts.UserSearchAction"></action>
在UserSearchAction.java中,我們可以通過getDataSource(HttpServerletRequest request)方法得到數(shù)據(jù)庫連接池,數(shù)據(jù)庫連接池的配置如下:
找到struts-config.xml文件,修改data-sources標(biāo)簽
<data-sources>
<data-source type="org.apache.struts.util.GenericDataSource">…數(shù)據(jù)庫連接池
<set-property property="password" value="lpl**#@)()#rjxy" /> ……….密碼
<set-property property="minCount" value="5" />…………………...最小連接數(shù)
<set-property property="maxCount" value="10" />…………………..最大連接數(shù)
<set-property property="user" value="sa" />………………………..用戶名
<set-property property="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />………………….驅(qū)動(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>
然后程序就可以運(yùn)行了