struts
釋出已經很久了
雖然自己現在作GUI開發
不過有時間還是學習下web開發
現在就將我使用myeclipse工具應用struts
+ spring + hibernate 實現CRUD操作的步驟一一紀錄下來
為初學者少走彎路略盡綿薄之力!
首先
myeclipse中web工程目錄結構如下圖:

使用myeclipse開發hibernate和spring的操作我就不詳細說了
網上的教程很多
如果有不明白的可以咨詢我
呵呵
其中持久類AbstractTest
Test
TestDAO
Test
hbm
xml都是myeclipse的hibernate工具生成的
TestAction類是struts
的核心處理類
代碼如下:

package com
yangqiang
strutsdemo
web;


import java
util
Collection;

import java
util
List;


import org
apache
log
j
Logger;


import com
opensymphony
xwork
ActionSupport;

import com
yangqiang
strutsdemo
domain
Test;

import com
yangqiang
strutsdemo
domain
TestDAO;



/** *//**

* 描述:

* @author Stone yang 創建日期:

* @version pattern Study

* 技術支持: <a >;/a>

*/


public class TestAction extends ActionSupport
{

private static final Logger log = Logger
getLogger(TestAction
class);


private Integer id;

private Integer[] ids;

protected TestDAO testDao;

private Test test;

private Collection<Test> testColl;


/** *//**

* 描述 return 返回 ids

* @author Stone yang

* @date

*/


public Integer[] getIds()
{

return ids;

}


/** *//**

* 描述:設置ids的值

* @param ids

* @author Stone yang

* @date

*/


public void setIds(Integer[] ids)
{

this
ids = ids;

}


/** *//**

* 描述 return 返回 testColl

* @author Stone yang

* @date

*/


public Collection<Test> getTestColl()
{

return testColl;

}


/** *//**

* 描述:設置testColl的值

* @param testColl

* @author Stone yang

* @date

*/


public void setTestColl(Collection<Test> testColl)
{

this
testColl = testColl;

}


/** *//**

* 描述 return 返回 id

* @author Stone yang

* @date

*/


public Integer getId()
{

return id;

}


/** *//**

* 描述:設置id的值

* @param id

* @author Stone yang

* @date

*/


public void setId(Integer id)
{

this
id = id;

}


/** *//**

* 描述 return 返回 testDao

* @author Stone yang

* @date

*/


public TestDAO getTestDao()
{

return testDao;

}


/** *//**

* 描述:設置testDao的值

* @param testDao

* @author Stone yang

* @date

*/


public void setTestDao(TestDAO testDao)
{

this
testDao = testDao;

}


/** *//**

* 描述 return 返回 test

* @author Stone yang

* @date

*/


public Test getTest()
{

return test;

}


/** *//**

* 描述:設置test的值

* @param test

* @author Stone yang

* @date

*/


public void setTest(Test test)
{

this
test = test;

}


public String load()
{

test = getTestDao()
findById(id);

return SUCCESS;

}


@SuppressWarnings(
unchecked
)


public String list()
{

testColl = getTestDao()
findByExample(new Test());

return SUCCESS;

}


public String store()
{

getTestDao(rge(test);

return SUCCESS;

}


public String remove()
{


for (int i =
size = ids
length; i < size; i++)
{

getTestDao()
delete(getTestDao()
findById(ids[i]));

}

return SUCCESS;

}


}
applicationContextxml 主要是工具生成 的只是將配置文件路徑改下代碼如下:

<?xml version=
encoding=
UTF
?>

<!DOCTYPE beans PUBLIC
//SPRING//DTD BEAN//EN
beans
dtd
>


<beans>



<bean id=
struts

class=
org
springframework
orm
hibernate
LocalSessionFactoryBean
>

<property name=
configLocation
>

<!
改變了一下
>

<value>/WEB
INF/classes/hibernate
cfg
xml</value>

</property>

</bean>

<bean id=
testDao

class=
com
yangqiang
strutsdemo
domain
TestDAO
>

<property name=
sessionFactory
>

<ref bean=
struts
/>

</property>

</bean></beans>
struts
xml (變化不大
寫過以前struts配置文件的不難理解)

<?xml version=
encoding=
UTF
?>


<!DOCTYPE struts PUBLIC
//Apache Software Foundation//DTD Struts Configuration
//EN
dtd
>


<struts>

<package name=
struts_crud
extends=
struts
default
namespace=
/test
>

<action name=
List
class=
com
yangqiang
strutsdemo
web
TestAction
method=
list
>

<result>list
jsp</result>

</action>

<action name=
Edit
class=
com
yangqiang
strutsdemo
web
TestAction
method=
load
>

<result>edit
jsp</result>

</action>

<action name=
Store
class=
com
yangqiang
strutsdemo
web
TestAction
method=
store
>

<result type=
redirect
>List
action</result>

</action>

<action name=
Remove
class=
com
yangqiang
strutsdemo
web
TestAction
method=
remove
>

<result type=
redirect
>List
action</result>

</action>

</package>

</struts>
struts
properties

struts
objectFactory = spring
web
xml

<?xml version=
encoding=
UTF
?>

<web
app version=

xmlns=

xmlns:xsi=
instance

xsi:schemaLocation=
;
app_
_
xsd
>

<display
name>Struts
crud 例程</display
name>

<context
param>

<param
name>contextConfigLocation</param
name>

<param
value>classpath*:*
xml</param
value>

</context
param>

<listener>

<listener
class>org
sprntext
ContextLoaderListener</listener
class>

</listener>

<filter>

<filter
name>struts
</filter
name>

<filter
class>

org
apache
struts
dispatcher
FilterDispatcher

</filter
class>

</filter>


<filter
mapping>

<filter
name>struts
</filter
name>

<url
pattern>/*</url
pattern>

</filter
mapping>


<welcome
file
list>

<welcome
file>list
jsp</welcome
file>

</welcome
file
list>

</web
app>

list
jsp


<%
@ page language=
java
contentType=
text/html; charset=utf
pageEncoding=
utf
%>


<%
@ taglib prefix=
s
uri=
/struts
tags
%>


<!DOCTYPE html PUBLIC
//W
C//DTD XHTML
Transitional//EN
transitional
dtd
>

<html xmlns=
>

<head>

<title>Book List</title>


<style type=
text/css
>


table {
}{

border:
px solid black;

border
collapse: collapse;

}


table thead tr th {
}{

border:
px solid black;

padding:
px;

background
color: #cccccc;

}


table tbody tr td {
}{

border:
px solid black;

padding:
px;

}

</style>

</head>

<body>

<h
>Book List</h
>

<s:form action=
Remove
theme=
simple
>

<table cellspacing=
>

<thead>

<tr>

<th>勾選</th>

<th>ID</th>

<th>名稱</th>

<th>作者</th>

</tr>

</thead>

<tbody>

<s:iterator value=
testColl
>

<tr>

<td><input type=
checkbox
name=
ids
value=
<s:property value=
id
/>
/></td>

<td><s:property value=
id
/></td>

<td><s:property value=
name
/></td>

<td><s:property value=
author
/></td>

<td>

<a <s:url action=
Edit
><s:param name=
id
value=
id
/></s:url>
>

Edit

</a>


<a <s:url action=
Remove
><s:param name=
ids
value=
id
/></s:url>
>

Delete

</a>

</td>

</tr>

</s:iterator>

</tbody>

</table>

<s:submit value=
Remove
/><a >Add Test</a>

</s:form>

</body>

</html>
edit
jsp


<%
@ page language=
java
contentType=
text/html; charset=utf
pageEncoding=
utf
%>


<%
@ taglib prefix=
s
uri=
/struts
tags
%>


<!DOCTYPE html PUBLIC
//W
C//DTD XHTML
Transitional//EN
transitional
dtd
>

<html xmlns=
>

<head>

<title>Book</title>

</head>

<body>

<h
>

<s:if test=
null == test
>

Add Book

</s:if>

<s:else>

Edit Book

</s:else>

</h
>

<s:form action=
Store
>

<s:hidden name=
test
id
label=
ID
/>

<s:textfield name=
test
name
label=
書名
/>

<s:textfield name=
test
author
label=
作者
/>

<s:submit />

</s:form>

</body>

</html>
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28215.html